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