2.9 KiB
How to setup an Eepsite in most linux distros
An eepsite is a website in I2P, there are 2 main I2P clients (Java I2P and i2pd). So i'll cover both programs here
nginx configuration
Implying you use nginx, you should use a configuration like this:
server {
listen 127.0.0.1:8080;
root /home/eepsite/www_data;
# any of your custom configuration goes here
}
Now, explaining the not-so-normal things on the configuration:
- We listen to 127.0.0.1 because we want only that computer to access
that server (if it was just
listen 8080;
it will bind the port to every available IP address. Allowing external access and we don't want that.) - We listen to port 8080 so we can have less errors later. The i2p
client will pick the port 8080 in 127.0.0.1 and then use it as port
80 in the I2P address. As there's only one HTTP server in
port 8080. You don't have to do any of these weird
server_name
hacks. So you should bind to another port each eepiste you want.
i2pd configuration
- Create the ~/.i2pd/tunnels.conf file
- put these contents
[website]
type = http
host = 127.0.0.1
port = 8080
keys = website.dat
enableuniquelocal = false
Explanation
type = http
so it forwards the given port to 80 automaticallyhost = 127.0.0.1
the host to make the request (can be anything)port = 8080
where it will get the port (change this for further eepsites)keys = website.dat
the file which will hold the eepiste private keyenaleuniquelocal = false
gives the 127.0.0.1 IP address to each visitor. (by default i2pd will give addresses like 127.32.23.12)
Now start i2pd, you can get the b32 address of the site you just created with this command:
printf "%s.b32.i2p\n" $(head -c 391 website.dat|sha256sum|xxd -r -p | base32 |sed s/=//g | tr A-Z a-z)
(Or you can go to http://127.0.0.1:7070/?page=i2p_tunnels)
That's it!
Java I2P
Java I2P is better in my opinion because it is faster and it's easier to create an eepiste then. By default Java ships with Jetty (A simple HTTP server that does it job very well). So you can just drop the files you want to serve in ~/.i2p/eepsite/docroot and they'll be served once you start the first thing in http://127.0.0.1:7657/i2ptunnelmgr (the one that points to 127.0.0.1:7658, which is the jetty instance)
Jetty does it work pretty well, but you can obviously use nginx (or any other HTTP server, obviously). To do this just scroll to the bottom in http://127.0.0.1:7657/i2ptunnelmgr and create an HTTP hidden service.
Enter whatever you want in the name. And in the description. You can set a website hostname if you want (foobar.i2p) and edit the private key file if you want.
Just enter whatever you need in the target section:
Then click save. click start and it should give you the b32 address. And if you gave it a host. a addresshelper.
That's it!