These instructions are I2P specific, for generic documentation see Tahoe-LAFS Docs
Take care! This document is partly out of date. Please read further on this doc for actual tahoe-lafs on I2P!
At this point we assume you have successfully installed Tahoe-LAFS for I2P. You should also have a running I2P node.
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, so you can easily use the tahoe
command. If not you need to provide the full path name each time you execute tahoe
.
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 http://127.0.0.1:3456/
) and a command line interface (via tahoe
) for accessing this data. Other interfaces are available, see the Tahoe-LAFS site 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.
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
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.
To start your node as a daemon:
$ tahoe start
You can now access your node via the web interface at http://127.0.0.1:3456/
Some example URLs to try:
http://127.0.0.1:3456/file/URI%3ASSK-RO%3Avf37nibgtrnlnut2zfsyvqtizq%3A7wjlr4dw4potb5fx4ulmsqtqwd3brsqtqutwwggfroyru7v57ela/@@named=/lafscat.html
http://127.0.0.1:3456/uri/URI%3ADIR2-RO%3Aglyrk2ndh76c3madpgaub56ct4%3Aye6pxx7pa73jl2v2pbdysifi2cbuzej4v3zlnqkgatnb6x5twl4a/
http://127.0.0.1:3456/uri/URI%3ADIR2-RO%3Amxhxuxvdjw6hkjkt7mlrnbrua4%3Ankegbnlbmfecfxoy5d7zxwnbspnu462fmhnhdbuufkk2evdom56a/
Besides the web interface, there is also a command line interface and web API.
To stop your node if running as daemon:
$ tahoe stop
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
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.
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.
Restart your node to have these changes take effect:
$ tahoe restart
Verify on the web interface that the Storage Server service is running.
TODO