Let us know in #tahoe-lafs if you set up an introducer to ensure that our list is up-to-date.
About
These instructions are I2P specific, for generic documentation see Tahoe-LAFS Docs
I2P needs to be installed and configured before following the procedures outlined in this document.
The tahoe-i2p-install script created by smeghead will be used for the actual installation.
Requirements
For UNIX-like systems (*BSD/Linux/Mac OS X/Solaris):
- gcc
- Python 2.6 or 2.7 (Python 3.x can be installed but tahoe will not work without 2.6 or 2.7 being on the system.)
- wget, aria, curl, or eepget
- development headers for Python and OpenSSL
- crypto++ (named
crypto++
in ArchLinux, andlibcrypto++-dev
in Debian/Ubuntu) - FreeBSD only: py-sqlite3 (available in /usr/ports/databases/py-sqlite3)
- net-tools (available on most systems, recently deprecated in ArchLinux)
- Optional: gmp
- about 100MB of free space to build and install
If you're using Debian or Ubuntu, try the Debian packages or the PPA for Ubuntu.
Most of the prerequisites for building on ArchLinux can be installed with the following:
pacman -S python2 python2-pyasn1 pycrypto crypto++ python-simplejson \
python2-pyopenssl twisted net-tools
On Debian/Ubuntu systems:
apt-get install build-essential \
python-dev python-twisted python-setuptools \
python-nevow python-argparse python-simplejson python-openssl patch
For Windows:
- Windows XP, 2003, Vista, 7, 8, or 8.1
- Python 2.6 or 2.7 (only if built from source; the pre-patched bundle includes Python).
Installation
Windows
Instructions for Windows can be found on another page.
Linux, OSX, FreeBSD, Solaris, etc.
PPA (or killyourtv's repo) users
After following the instructions to add the PPA, install tahoe with apt-get install i2p-tahoe-lafs
. Skip to the configuration instructions.
ArchLinux (AUR) users
skydrome
has created packages for
Foolscap-I2P and
Tahoe-LAFS-I2P. These
packages can be found in AUR. As with any other
AUR packages, it's a good idea to examine the PKGBUILD
files.
After installing the packages, skip to the configuration instructions.
If not using packages...
Create a directory for the installation, ~/tahoe
is recommended.
$ mkdir ~/tahoe
$ cd ~/tahoe
Important: After installation you must read the configuration instructions! If you don't configure Tahoe properly for use on I2P, information about you such as your LAN (or even WAN) IP address can leak out.
1.10.0-based, multi-introducer capable (see ticket 68)
tahoe-i2p-install-v1.3.2.sh | SHA256SUM | Signature | torrent | changelog | for Windows
(Note: If you're already running Tahoe on I2P, you can fetch an updated offline installer from URI:DIR2-RO:4r6eqknuhqxz23ayaowi6ubhna:xbd2wgcv25qcjjabmzal425rrwjmg4iip6riaw5cewyqcu6pfhfq.
Make it executable:
$ chmod u+x tahoe-i2p-install-v1.3.2.sh
Show usage information
$ ./tahoe-i2p-install-v1.3.2.sh --help
Perform the actual installation (see usage information from above for additional options)
$ ./tahoe-i2p-install-v1.3.2.sh
You can safely ignore most C / C++ compilation warnings. If you get any errors, please see the list of common errors below.
As suggested by the script, update your environment's PATH
. Put this variable
in your ~/.bashrc
(or equivalent) to preserve it between shell sessions.
Verify the installation:
It is very important that you read through the usage manual to make sure you don't accidentally leak your identity.
$ tahoe --version
This will print the version of Tahoe and its dependent libraries.
Done
If there were no errors during the installation, you are now the proud owner of a Tahoe-LAFS node for I2P.
Next will be the configuration of your node(s) specifically for I2P.
Upgrading from an earlier release (if not using the PPA or AUR packages)
Move the old directory out of the way then run the updated installer script. For example, if you previously installed to ~/tahoe
as recommended above, run
mv ~/tahoe/tahoe-lafs-i2p ~/tahoe/tahoe-lafs-i2p.old
then follow the installation instructions above. The installation files
are also available from within Tahoe itself at URI:DIR2-RO:4r6eqknuhqxz23ayaowi6ubhna:xbd2wgcv25qcjjabmzal425rrwjmg4iip6riaw5cewyqcu6pfhfq.
After you're satisfied that the upgrade was successful, you can remove the backup directory.
Common Errors
twisted/runner/portmap.c:10:20: error: Python.h: No such file or directory twisted/runner/portmap.c:14: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token twisted/runner/portmap.c:31: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token twisted/runner/portmap.c:45: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘PortmapMethods’ twisted/runner/portmap.c: In function ‘initportmap’: twisted/runner/portmap.c:55: warning: implicit declaration of function ‘Py_InitModule’ twisted/runner/portmap.c:55: error: ‘PortmapMethods’ undeclared (first use in this function) twisted/runner/portmap.c:55: error: (Each undeclared identifier is reported only once twisted/runner/portmap.c:55: error: for each function it appears in.) Traceback (most recent call last): File "setup.py", line 417, in **setup_args File "/usr/lib/python2.6/distutils/core.py", line 113, in setup _setup_distribution = dist = klass(attrs)
- You need to install the Python development headers. In Linux
distributions this is usually the
python-dev
(Debian / Ubuntu) orpython-devel
(RedHat / Fedora / SuSE) package. Failed to load application: "unknown option name 'http-proxy'"
- The vanilla, unpatched foolscap is being found by tahoe. If you have foolscap installed via your package manager, try to remove it and then re-run the installation script.
error: openssl/ssl.h: No such file or directory
- You need to install the OpenSSL development headers. In Linux
distributions this is usually the
libssl-dev
(Debian / Ubuntu) oropenssl-devel
(RedHat / Fedora / SuSE) package. line 202: patch not found
- Your system is missing patch. You can probably install it with
apt-get install patch
oryum install patch
conftest.c:1:23: error: sys/epoll.h: No such file or directory
- This is expected (and harmless) on BSD systems. You can ignore it.
embeddedcryptopp/cryptlib.cpp:33:26: error: uninitialized const ‘CryptoPP::g_nullNameValuePairs’ [-fpermissive] embeddedcryptopp/cryptlib.h:321:20: note: ‘const class CryptoPP::NullNameValuePairs’ has no user-provided default constructor error: Setup script exited with error: command 'gcc' failed with exit status 1
- Set
export PYCRYPTOPP_DISABLE_EMBEDDED_CRYPTOPP=1
then re-attempt the installation. Running pycryptopp-0.5.29/setup.py -q bdist_egg --dist-dir /tmp/easy_install-ppXNB0/pycryptopp-0.5.29/egg-dist-tmp-Zh7AeP Did not locate libcryptopp in the usual places. Adding /usr/local/{include,lib} and -lcryptopp in the hopes that they will work. pycryptopp/_pycryptoppmodule.cpp:10:29: fatal error: cryptopp/config.h: No such file or directory compilation terminated. error: Setup script exited with error: command 'gcc' failed with exit status 1
- Your system is missing
crypto++
. In Debian and Ubuntu, install the libcrypto++-dev package. In ArchLinux, the package is calledcrypto++
. After installing crypto++, re-attempt the installation of Tahoe-LAFS. /usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/4.4.5/libstdc++.a(functexcept.o): relocation R_X86_64_32 against `std::bad_typeid::~bad_typeid()' can not be used when making a shared object; recompile with -fPIC
- The one time this came up the user was using Debian Squeeze with some
packages from Unstable without upgrading
gcc
to unstable's version (a transition to multiarch was underway in unstable). The moral: Mixing and matching packages between stable & unstable causes breakage if you're not careful.
Upgradinggcc
to the version in unstable might have been enough to solve this, but perhaps a full upgrade to multiarch would be necessary to properly fix this. A quick 'n' dirty solution would have been to create a chroot withdebootstrap
and do the compilation there. (The user ultimately used my pycryptopp packages. zope.interface-3.8.0-py2.6-win32.egg\zope\interface\interface.py:688: UserWarning: Hashing uninitialized InterfaceClass instance
- This error can be safely ignored.
warning: GMP or MPIR library not found; Not building Crypto.PublicKey._
- Installing gmp is recommended but this is another errror that can be safely ignored.
or alsoFailed to load application: crypto for PB is not available, try importing foolscap.crypto and see what happens
Warning: dependency 'pyopenssl' could not be imported. pkg_resources thought it should be possible to import version '0.12' from 'tahoe-lafs-i2p/support/lib/python2.7/site-packages/pyOpenSSL-0.12-py2.7-linux-armv6l.egg'. The exception trace was (, 'cannot import name crypto', ('tahoe-lafs-i2p/support/lib/python2.7/site-packages/pyOpenSSL-0.12-py2.7-linux-armv6l.egg/OpenSSL/__init__.py', 36, '', 'from OpenSSL import crypto')).
- This has only been seen, so far, on the Raspberry Pi. You can work around it by installing the python-openssl package, then removing the egg that tahoe-i2p-install installed.
rm -rf tahoe-lafs-i2p/support/lib/python2.7/site-packages/pyOpenSSL-0.12-py2.7-linux-armv6l.egg
- When trying
tahoe --version
or on the webui, you may see the following:Warning: dependency 'cryptography' (version '0.5.4') found by pkg_resources not found by import. Warning: dependency 'six' (version '1.7.3') found by pkg_resources not found by import. Warning: dependency 'cffi' (version '0.8.6') found by pkg_resources not found by import. Warning: dependency 'pycparser' (version '2.10') found by pkg_resources not found by import.
- This potentially scary warning is not really a problem. It's caused by new dependencies that are pulled in by pyopenssl >= 14.
If it annoys you as much as it annoyed me, you can fix it following the instructions outlined in the Tahoe-LAFS bugtracker.
In Debian, using my packages, I just edited/usr/lib/python2.7/dist-packages/allmydata/__init__.py
and restarted Tahoe. The warning disappeared into the ether.