These instructions are I2P specific, for generic documentation see Tahoe-LAFS Docs
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, run
tahoe create-client --help
for more information.
$ tahoe create-client
Edit the configuration file ~/.tahoe/tahoe.cfg
Modify the following options, the other values
you should leave as default for now:
[node]
nickname = yourclientnodename
web.port = tcp:3456:interface=127.0.0.1
http_proxy = 127.0.0.1:4444
tub.location =
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.
Uncomment http_proxy
and enter the I2P HTTP Proxy.
Uncomment tub.location
, but leave it empty. This will prevent your other interfaces besides
127.0.0.1
from being broadcast.
[client]
introducer.furl = pb://c6w5ernw7y7rp3uwmdyu5clujyt2y4m4@w2zrwz5gplkkufix7cb4gmxfbrkwg2abnsgk62bm5iifzlahe7kq.b32.i2p/introducer
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 KillYourTV. Use at your own
risk!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
PLEASE only activate a storage node if you are willing to keep it running 24/7. 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