Below is quick copy of aum's eepsite deployment guide.

1. - Bereitstellen eines lokalen Servers
  • For simplicity's sake, we will walk through the setup of a web server; however, this procedure is the same regardless what protocol of servers and/or clients you are setting up.
  • Empfehlenswert ist der Tiny Httpd Webserver alias thttpd (Windows-Version verfügbar), es kann aber auch jeder gewünschte andere eingesetzt werden.
  • Another more robust option would be to use EasyPHP, which is also open source. It comes with PHP, PHPmyadmin, mySQL, and Apache web server. For newbies who have no experience setting up and hosting content over servers, see the hosting page for help.
  • With the web server you've chosen, configure it to listen on a port of your choice, and serve its documents from a directory of your choice. For this example, we'll assume port 10880.
  • Stelle sicher, dass deine firewall eingerichtet ist, so dass du keine eingehenden Verbindungen auf diesem Port empfangen kannst (was deine Anonymität brechen würde).
  • Test the webserver, by pointing your normal browser (the one with the "direct connection") at http://localhost:10880 (changing the 10880 to the port number you have chosen).
  • Sobald dein webserver arbeitet und du lokal mit deinem browser auf ihn zugreifen kannst, fahre mit dem nächsten Schritt fort.
2 - Erzeuge ein I2P Ziel Schlüsselpaar
  • I2P verwendet keine IP-Adressen. Um die Anonymität zu schützen, verwendet es eigene eindeutige Adressen, sog. "destination keys" (Zielschlüssel).
  • A destination key works a lot like a regular IP address, except that it can't be traced to your IP address or physical location. When users place a request to speak with you, your gateways are the ones that answer for you. So the requesting user can only know the IP address of your gateways. However, gateways don't know your IP address, because gateways are the last nodes on your tunnels, and you anonymously create tunnels by way of garlic routing. (So gateways are like puppets that can't see their masters, and everyone communicates through these puppets)
  • To deploy a server on I2P, you create a destination keypair. You use the private key to authenticate your server when connecting it to I2P, and you make the public key (aka destination key) known publicly, so others can connect to your server. (indirectly, through your gateways)
  • Jeder Dienst, den Sie auf I2P betreiben, benötigt ein anderes Schlüsselpaar.
  • Um ein Schlüsselpaar zu generieren, lautet das Kommando: java -jar lib/i2ptunnel.jar -nogui -e "genkeys myWebPrivKey.dat myWebPubKey.dat" (alles in einer Zeile)
  • Um in Windows ein Schlüsselpaar zu generieren, lautet das Kommando: java -jar lib/i2ptunnel.jar -nogui -e "genkeys myWebPrivKey.dat myWebPubKey.dat"
  • The filenames myWebPrivKey.dat and myWebPubKey.dat are arbitrary - choose whatever you want here, as long as you understand your own choices.
  • Wir müssen jetzt deinen öffentlichen Schlüssel in base64 Format exportieren, das du dann mit anderen teilen wirst.
  • To convert your myWebPubKey.dat file into shareable base64, type the command java -cp lib/i2p.jar net.i2p.data.Base64 encode myWebPubKey.dat > myWebPubKey.txt (all on one line).
  • This file you have just generated, myWebPubKey.txt, contains a long base64 string (516 chars at last count), which we call a destination key. All you need to know about this string for now is that it allows remote clients to uniquely pinpoint and connect to your server, just the same way as an IP address allows remote machines to pinpoint and connect to your machine.
  • Allerdings, im Gegensatz zu einer IP Adresse, gibt es keinen Weg, den physischen Standort deines Rechners nachzuverfolgen - obwohl dein Server durch I2P angesprochen werden kann, kann deine IP Adresse nicht mit diesem Zielschlüssel in Verbindung gebracht oder verfolgt werden.
3 - Öffne einen "Tunnel" von I2P zu deinem Server
  • For clients elsewhere in I2P to be able to access your server, you must run a 'bridge' or 'tunnel', which takes connections from these clients and forwards them to your local server.
  • Um so einen Tunnel zu aktivieren, tippen sie java -jar lib/i2ptunnel.jar -nogui -e "server localhost 10880 myWebPrivKey.dat" (alles eine Zeile)
  • Wenn du vorher verschiedene Dateinamen oder Portnummern verwendet hast, ändere diese entsprechend
  • Windows users, remember to replace apostrophes with double quotes. Thus: java -jar lib/i2ptunnel.jar -nogui -e "server localhost 10880 myWebPrivKey.dat"
  • Within a few seconds, the 'tunnel' should now be active, and remote clients should be able to reach your server anonymously. Remember to let your router "warm up" before opening clients to it.
4 - Aktualisieren Sie Ihre hosts.txt-Datei
  • To test your own server locally, you'll need to create an entry in your hosts.txt file, so I2P can translate the simple URL you place in the browser's address bar into the full public key text needed to find your server.
  • Edit your hosts.txt, and add the line myserver.i2p=blahblahblah, where myserver.i2p is an I2P 'domain' you want to associate with your site, and the blahblahblah is the text of the base64 public key you created earlier in the file myWebPubKey.txt
  • With this in place, you and others can reach your server with the simple domain name myserver.i2p in the browser's address bar.
5. Die eigene Website in I2P aufrufen
  • Using your secondary browser - the one you earlier configured to use localhost:4444 as a proxy - point this browser to the address http://myserver.i2p
  • You should see the main page of your webserver come up.
6 - Create a Local Client Tunnel Connection
  • Wir müssen jetzt weiter als nur an Webserver denken.
  • As you grow into I2P and get more of a 'feel' for it, you will want to use all manner of servers and clients.
  • Das schöne an I2P ist, dass man die normalen Clients und Server der meisten Protokolle durch das anonyme Netzwerk transparent tunneln kann.
  • You can run mailservers/clients, nameservers/clients, newsservers/clients - almost anything at all - perhaps even FTP in passive mode.
  • Now, we'll create a client tunnel. This is like the server tunnel we created earlier, but works in reverse. It listens to a port on your local machine; your local client connects to this port; the connection gets forwarded through I2P to the service on the other end.
  • Einen Client-Tunnel für den eigenen Server startet man mit dem Kommando: java -jar lib/i2ptunnel.jar -nogui -e "config localhost 7654" -e "client 10888 textofbase64key" (alles in einer Zeile).
  • Der Port 10888 ist willkürlich gewählt - es muss nur ein anderer sein als der physische Port auf dem der eigene Server lauscht.
  • textofbase64key is simply the contents of the public key text file myWebPubKey.txt, reproduced fully on one line (alternately, instead of textofbase64key, you can specify the name from your hosts.txt - e.g. myserver.i2p)
  • Etwa ein bis zwei Minuten nach dem Ausführen des Befehls sollte der Client-Tunnel vom lokalen Rechner ins I2P-Netz offen sein und kann dann genutzt werden.
  • Point your regular web browser (ie, not the one you configured to use localhost:4444), and point it to http://localhost:10888
  • Man sollte dann prüfen, dass die Eingangsseite des eigenen Servers im Browser erscheint.
  • You use the same procedure for using any local client program to access a remote I2P server - just get the base64 public key (called destination key) of the remote server, choose a local port to connect to the remote server, open the tunnel, and just connect with your client to your heart's content.
7 - Teile deine Serverdetails mit anderen
  • Using an anonymous medium (eg the one of the I2P IRC servers or ugha's wiki), post your domain name (eg www.mynick.i2p as well as your destination key. Others will then be able to reach your server remotely, without either of you jeopardizing your anonymity.
  • Remember, you can go to What's on I2P and find the latest public keys linked to their URL. You should also post your own public key and URL their. However, you will want to do this anonymously, of course. Drupal.i2p.net is currently, as of this writing, only accessible from the net. So, to access the outside WWW anonymously from inside of I2P, you will need to start up your script called startSquid. Do it the same way you have been doing these other scripts. Reconfigure your browser to proxy on localhost:5555, as defined in the script, and when the script has generated it's keys, you can access the squid proxy. Put any WWW URL (such as Google or this i2p site) into your browser's address bar and you will be surfing the World Wide Web anonymously. Now you can safely post your public key, and no one can detect your IP address.
8. Skripte schreiben, um sich lästige Tipparbeit zu sparen
  • Es wäre ziemlich lästig, zum Aufsetzen eines I2P-Servers oder -Clients jedesmal alle Befehle erneut einzugeben.
  • Aum's website http://www.freenet.org.nz/i2p/ has a script called setupServer.py which automates all this nonsense into one simple command line . But I respect that people's tastes in user interfaces differ, and trying to write something which satisfies everyone's needs usually results in something so complex that it turns into newbie-repellent.
  • So please feel free to use and/or customize setupServer.py to taste, or write your own in Python or another language.
  • Also, you may want to write a script which handles the startup of the I2P Router, the eepProxy, plus any and all tunnels you are using. I've got such a script called startEverything.sh, which gets launched at system startup. (Be sure to search this site for template scripts to automate your I2P commands. If I create a page for one, I'll try to remember to link it here.
  • Exercise for Windows users - port setupServer.py into a MS-DOS .BAT file.