Running Tahoe-LAFS for I2P
==========================
1) About this document
----------------------
These instructions are [I2P](http://www.i2p2.de/) specific, for generic
documentation see [Tahoe-LAFS
Docs](http://tahoe-lafs.org/trac/tahoe-lafs/wiki/Doc)
At this point we assume you have successfully [installed](install.html)
Tahoe-LAFS for I2P. You should also have a running I2P node.
2) Preparation
--------------
Tahoe-LAFS will need an I2P HTTP Proxy to communicate between nodes. This
document will assume you use the default one on `127.0.0.1:4444`, but you can
also create another proxy, for example with 1 hop for lower latency (but also
lower anonymity).
In this manual we will assume that you have updated your `PATH` as suggested in
the [installation guide](install.html), so you can easily use the `tahoe`
command. If not you need to provide the full path name each time you execute
`tahoe`.
3) Client node
--------------
You use a Client node to talk to storage nodes to put files on the grid and get
them back off. There is a web interface (default on )
and a command line interface (via `tahoe`) for accessing this data. Other
interfaces are available, see the [Tahoe-LAFS
site](http://tahoe-lafs.org/trac/tahoe-lafs) for details.
*PRIVACY WARNING*: You should NOT open up the web interface via I2P, until we
have implemented additional privacy scrubbing. At this moment the web interface
will show you detailed version numbers and the full path (including your
username) where Tahoe is installed.
### Create a client node ###
We will install a client node in `~/.tahoe` you can also put it in another
location, see the Tahoe-LAFS documentation for more information.
$ tahoe create-client
### Configuration ###
Now edit the configuration file `~/.tahoe/tahoe.cfg`
[node]
nickname = yourclientnodename
web.port = tcp:3456:interface=127.0.0.1
anonymize_local_addresses = true
http_proxy = 127.0.0.1:4444
Specify a `nickname` for your node. This is shown to all nodes in the grid, so
be careful what you put there.
You can change the `web.port` number and bind address for the web interface if
you want. Don't open this up to the public; see above privacy warning.
Change `anonymize_local_addresses` to `true`. This will prevent your other
interfaces besides `127.0.0.1` from being broad casted.
Uncomment `http_proxy` and enter the I2P HTTP Proxy.
[client]
introducer.furl = pb://vysqjw7x7hfiuozjsggpd5lmyj35pggu@iyawu4w66gd2356vguey2veyn7jbpyzqgpmb74wd2gxzvkuzbxya.b32.i2p/introducer
Specify the `introducer.furl`. This defines the grid and should be published to
everyone who wishes to connect to this grid. The example above points to a test
introducer operated by duck. Use at your own risk!
The other values you can leave as default for now. If you are curious what they
do, read [Configuring a Tahoe node][1].
[1]: http://allmydata.org/source/tahoe/trunk/docs/configuration.txt
### Node Operation ###
To start your node as a daemon:
$ tahoe start
You can now access your node via the web interface at
Some example URLs to try:
*
*
*
Besides the [web interface], there is also a [command line interface][CLI] and [web API][].
[web interface]: http://127.0.0.1:3456/
[CLI]: http://allmydata.org/source/tahoe/trunk/docs/frontends/CLI.txt
[web API]: http://allmydata.org/source/tahoe/trunk/docs/frontends/webapi.txt
To stop your node if running as daemon:
$ tahoe stop
4) Storage node
---------------
Before running a storage node, experiment with a client node (described above)
and familiarize yourself with the official Tahoe-LAFS documentation.
Create a server tunnel in the [I2P Tunnel
Manager](http://127.0.0.1:7657/i2ptunnel/)
Choose Type: Standard (don't pick HTTP; it won't work). Point it to a a free
TCP port (for example 3459) where you want to run your storage server on. You
can reduce your tunnel length for lower latency (but also lower anonymity).
Start the server tunnel, copy the base32 destination for later usage.
### Configuration ###
Edit `~/.tahoe/tahoe.cfg`
We'll keep most of the configuration from the previous section, but a few
values need to be added.
[node]
tub.port = tcp:3459:interface=127.0.0.1
tub.location = n6k7tu37diq4obmcmv3f144oxxxnehp6njz5lwu4hllp5gp6hbga.b32.i2p
Specify the `tub.port` and interface to listen on. This is the TCP port as
configured for the I2P server tunnel. Bind it only to 127.0.0.1 to prevent
outside access.
For `tub.location` enter the Base32 destination for the server tunnel as
created in the I2P Tunnel Manager console. As I2P destinations don't have a
port, don't specify any. Also don't add any other hostnames or IP addresses as
these would be broadcasted to everybody, leaking your identity.
[storage]
enabled = true
Change `enabled` to `true` to turn your client into a storage node.
Optionally you define how much disk space is reserved with `reserved_space`:
reserved_space = 5GB
The storage server will not accept any share which causes the amount of free
disk space to drop below this value. Currently there is no option to directly
limit the size consumed by the storage server, see ticket
[#671](http://tahoe-lafs.org/trac/tahoe-lafs/ticket/671).
### Node Operation ###
Restart your node to have these changes take effect:
$ tahoe restart
Verify on the [web interface] that the Storage Server service is running.
[web interface]: http://127.0.0.1:3456/
5) Introducer
-------------
TODO