What systems will I2P run on?
While I2P has been reported to run PCs as meagre as a low-end Pentium II with 64 MB of RAM, you'll have a much better experience on a Pentium III (or better) with 128MB of RAM (or more). A chart comparing the performance of the various JREs can be found at https://trac.i2p2.de/wiki/java, but in short: it's at all possible, use Sun/Oracle Java or OpenJDK.
I2P has been tested on Windows, Linux, FreeBSD (see the note below), OSX, and OpenSolaris. There is work underway to bring I2P to the Android platform.
I think I found a bug, where can I report it?Here are some places, pick one or more.
- trac.i2p2.de ticket (preferred method)
- pastethis.i2p.xyz and follow up on IRC in #i2p
- Discuss with the developers on IRC in #i2p-dev
Please include relevant information from the router logs and wrapper logs.
I'm missing lots of hosts in my addressbook. What are some good subscription links?
The default subscription is to http://www.i2p2.i2p/hosts.txt which is updated rarely. If you don't have another subscription, you may often have to use "jump" links which is annoying.
Here are some other public addressbook subscription links. You may wish to add one or two to your susidns subscription list. You don't need to add all of them, as they sync with each other periodically. The links using a cgi-bin application employ various strategies to minimize the number of duplicate addresses delivered, so they should be more efficient. Note that subscribing to a hosts.txt service is an act of "trust", as a malicious subscription could give you incorrect addresses. So think about whether you want to trust any of these. The operators of these services may have various policies for listing hosts. Presence on this list does not imply endorsement.
What happened to *.i2p.net? What happened to jrandom? Is I2P dead?
Jrandom was the lead developer of I2P and Syndie for several years. We do not know if or when jrandom will return. The *.i2p.net domains were left in a non-functioning state after a power outage at the hosting company.
I2P remains in active development.
My router is using too much CPU?!?
There are many possible causes of high CPU usage. Here is a checklist:
Try to use either OpenJDK or Sun/Oracle Java if it's available for your system. You can check
which version of java you have installed by typing
java -versionat a command/shell prompt. Performance tends to suffer with other implementations of java.
- Are you running a BitTorrent client over I2P? Try reducing the number of torrents, the bandwidth limits, or try turning it off completely to see if that helps.
- Are your bandwidth limits set too high? It is possible that too much traffic is going through your I2P router and it is overloaded. Try reducing the setting for share bandwidth percentage on the configuration page.
- Make sure that you're running the latest version of I2P to get the benefits of increased performance and bug fixes.
Has enough memory been set aside for use by I2P? Look at the memory graph on the graphs page to see
if the memory usage is "pegged"—the JVM is spending most of its time in
garbage collection. Increase the setting
wrapper.java.maxmemoryin the file
- Is the CPU usage simply higher than you would like, or is it pegged at 100% for a long time? If it's pegged, this could be a bug. Look in the logs for clues.
- You may be using the Java-based BigInteger library instead of the native version, especially if you are running on a new or unusual OS or hardware (OpenSolaris, mipsel, etc.). See the jbigi page for instructions on diagnosing, building, and testing methods.
- If your native jbigi library is working fine, the biggest user of CPU may be routing traffic for participating tunnels. This uses CPU because at each hop a layer of encryption must be decoded. You can limit participating traffic in two ways - by reducing the share bandwidth on confignet.jsp, or by setting router.maxParticipatingTunnels=nnn on configadvanced.jsp.
I am opposed to certain types of content. How do I keep from distributing, storing, or accessing them?
Hmm. I2P is an anonymous network, so that's a tricky one. I2P is designed to withstand censorship, providing a means for everyone to communicate freely. The best way to keep your PC free of (encrypted) traffic that you dislike is to not use I2P. Freedom of speech has some costs. But let's address your question in three parts:
- Distribution - All traffic on I2P is encrypted in multiple layers. You don't know a message's contents, source, or destination. All traffic you route is internal to the I2P network, you are not an exit node (outproxy). Your only alternative is to refuse to route any traffic, by setting your share bandwidth or maximum participating tunnels to 0 (see above). It would be nice if you didn't do this, you should help the network by routing traffic for others. Over 95% of users route traffic for others.
- Storage - I2P does not do distributed storage of content. You must be thinking of Freenet. Nobody's content is being stored on your computer by running I2P.
- Access - If there are some eepsites you don't like, don't go there. Or, use a blocking proxy like Privoxy or some type of "net nanny".
My active peers / known peers / participating tunnels / connections / bandwidth vary dramatically over time! Is anything wrong?
No. This is normal. All routers adjust dynamically to changing network conditions and demands.
My router has been up for several minutes and has zero or very few connections
You may need to reseed your I2P router. With recent versions of I2P you can go to http://localhost:7657/configreseed and click the Save Changes and Reseed Now button. If this method doesn't work—or you're using a very old version—you may need to reseed manually.
The reseed URL changed a few years ago. If this is your first install and you have installed an old (0.6.1.30 or earlier) release, or you have not run I2P in a long time, you must change the URL and then click "Reseed" on the console to find other routers. After your router is running, on configadvanced.jsp, add the line i2p.reseedURL=http://netdb.i2p2.de/ OR i2p.reseedURL=http://i2pdb.tin0.de/netDb/ (either should work), then click "Apply", then click the "reseed" link on the left.
This works if you are running 0.6.1.27 or later. If you are running release 0.6.1.31 or later, you probably don't need to do this. If you are running release 0.6.1.26 or earlier, either follow the manual reseed instructions below or install the latest release. Possible alternate method - add wrapper.java.additional.5=-Di2p.reseedURL=http://netdb.i2p2.de/ to wrapper.config, shutdown the router completely, then start again, then click "reseed". Let us know if this works.
...but you *really* should upgrade to the latest version.
My router has very few active peers, is this OK?
If your router has 10 or more active peers, everything is fine. Changes in releases 0.6.1.31 and 0.6.1.32 improved the efficiency of the router and effectively reduced the number of active peers. The router should maintain connections to a few peers at all times. The best way to stay "better-connected" to the network is to share more bandwidth.
Is my router an "exit node" to the regular Internet? I don't want it to be.
No. Unlike Tor, "exit nodes" or "outproxies" are not an inherent part of the network. Only volunteers who set up and run separate applications will relay traffic to the regular Internet. There are very, very few of these.
I can't access regular Internet sites through I2P.
See above. There are very few HTTP "outproxies", they are not an inherent part of the network, and they may not be up. In addition, the old outproxies squid.i2p, true.i2p, and krabs.i2p have vanished. The only outproxy at the moment is false.i2p. To use it, edit your i2ptunnel settings for eepProxy and set your outproxy list to 'false.i2p' (only). Then stop and restart the eepProxy. If it doesn't work, the outproxy is not up. It is not I2P's fault. If your primary reason to use an anonymous network is to anonymously access sites on the regular Internet, you should probably try Tor.
I can't access https:// or ftp:// sites through I2P.
Within I2P, there is no need for HTTPS, as all traffic is encrypted end-to-end. FTP is not supported for technical reasons.
There are no FTP "outproxies" to the Internet—it may not even be possible to set up one. Any other kind of outproxy may work if it's set up with a standard tunnel. If you would like to set up some type of outproxy, carefully research the potential risks. The I2P community may or may not be able to help with the technical aspects, feel free to ask.
As explained several times above, any existing outproxy isn't a core part of the network. They are services run by individuals and they may or may not be operational at any given time.
Update: Thanks to the work of h2ik, there is an https outproxy available for use via I2P. Starting with I2P 0.8.4 the tunnel is configured out of the box.
In case the https outproxy is not available in your version of I2P, you can add it easily by doing the following:
- Open i2p tunnel manager. Scroll down to the bottom.
- Choose CONNECT from New Client Tunnel dropdown list, click Create
- In the new page, name and describe your new https tunnel as you like. The Access Point is your local port for the new https proxy recommended port's 4445. Outproxy should be the outproxy's .i2p address which supports https. See this forum post of h2ik's for the address. Make sure Shared Client, Delay Connect, AutoStart are checked. Other options should be left at the defaults. Click Save. In tunnel manger, click the Start button next to your new tunnel.
- In firefox, click through Tools>Options>Advanced>Network>Setting. Untick Use this proxy for all protocol, set SSL proxy: to localhost:4445.
Is using an outproxy safe?
This is a question that only you can answer because the correct answer depends on your behaviours, your threat model, and how much you trust the outproxy operator.
Like Tor, I2P does not magically encrypt the Internet. You are vulnerable to snooping by the outproxy operators. The Tor FAQ does a good job of explaining this.
In addition, you may be vulnerable to collusion between the outproxy operator and operators of other I2P services, if you use the same tunnels ("shared clients"). There is additional discussion about this on zzz.i2p.
How do I access IRC, BitTorrent, or other services on the regular Internet?
Unless an outproxy has been set up for the service you want to connect to, this cannot be done. There are only three types of outproxies running right now: HTTP, HTTPS, and email. Note that there is not a SOCKS outproxy. If this type of service is required, try Tor.
Most of the eepsites within I2P are down?
If you consider every eepsite that has ever been created, yes, most of them are down. People and eepsites come and go. A good way to get started in I2P is check out a list of eepsites that are currently up. http://identiguy.i2p.xyz tracks active eepsites.
How do I set up my own eepsite?
Click on the Website link at the top of your router console for instructions.
Why is I2P so slow?
Why are downloads, torrents, web browsing, and everything else so slow on I2P? The encryption and routing within the I2P network adds a substantial amount of overhead and limits bandwidth. Anonymity isn't free.
In addition, you and everybody else probably need to increase your bandwidth limits. Two key settings are the inbound and outbound bandwidth limiters on the configuration page. With the default settings of 32KBps you will generally get no better than 15KBps data transfer in I2PSnark. Increasing the settings (but keeping within your actual connection limitations) will increase the potential transfer rate for I2PSnark and all other applications.
Also, do you have sufficient share bandwidth configured to allow participating tunnels to route through your router? Believe it or not, allowing participating traffic keeps you well-integrated in the network and helps your own transfer speeds.
I2P is a work in progress. Lots of improvements and fixes are being implemented, and generally speaking, running the latest release will help your performance. If you haven't, install the latest release.
Bittorrent / I2PSnark / Azureus I2P Plugin Questions?
See the I2P Bittorrent FAQ
How do I connect to IRC within I2P?
A tunnel to the main IRC server within I2P, Irc2P, is created when I2P is installed (see
the I2PTunnel configuration page),
and is automatically started when the I2P router starts. To connect to it, tell your IRC
client to connect to
localhost 6668. XChat-like client users can create a
new network with the server
localhost/6668 (remember to tick "Bypass
proxy server" if you have a proxy server configured).
How can I access the web console from my other machines or password protect it?
For security purposes, the router's admin console by default only listens for connections on the local interface. However, with a little hacking, you can make it reachable remotely:
clientApp.0.args=7657 ::1,127.0.0.1 ./webapps/
clientApp.0.args=7657 0.0.0.0 ./webapps/
- Go to http://localhost:7657/configui and add a console username and password if desired.
- Go to http://localhost:7657/index.jsp and hit "Graceful restart", which restarts the JVM and reloads the client applications
After that fires up, you should now be able to reach your console remotely. Reload the router at
http://127.0.0.1:7657 and you will be prompted for the username and password you specified in step 2
above if your browser supports the authentication popup. Note: the
0.0.0.0 above specifies an interface, not a network or netmask. 0.0.0.0
means "bind to all interfaces", so it can be reachable on 127.0.0.1:7657 as well as
any LAN/WAN IP.
How can I use applications from my other machines?
By default, the router I2CP interface (port 7654) binds to address 127.0.0.1. To bind to 0.0.0.0, set the router advanced configuration option i2cp.tcp.bindAllInterfaces=true and restart.
Whats an "eepsite"?
An eepsite is a website that is hosted anonymously - you can access it by setting your web browser's HTTP proxy to use the web proxy (typically it listens on localhost port 4444), and browsing to the site.
How do I configure my browser?
The proxy config for different browsers is on a separate page with screenshots. More advanced configs with external tools are possible but could introduce leaks in your setup.
What do the Active x/y numbers mean in the router console?
x is the number of peers you've sent or received a message from successfully in the last minute, y is the number of peers seen in the last hour or so.
Is it possible to use I2P as a SOCKS proxy?
The SOCKS proxy is working as of release 0.7.1. SOCKS 4/4a/5 are supported. There is no SOCKS outproxy so it is of limited use.
In addition, many applications leak sensitive information that could identify you on the Internet. I2P only filters connection data, but if the program you intend to run sends this information as content, I2P has no way to protect your anonymity. For example, some mail applications will send the IP address of the machine they are running on to a mail server. There is no way for I2P to filter this, thus using I2P to 'socksify' existing applications is possible, but extremely dangerous.
If you would like more information on the socks proxy application anyway, there are some helpful hints on the socks page.
What ports does I2P use?
Okay, here's a rundown of the default ports (everything is configurable through various settings, of course):
Note: New installs as of release 0.7.8 do not use port 8887; they select a random port
between 9000 and 31000 when the program is run for the first time.
The selected port is shown on the router configuration page.
- Outbound UDP from the random port noted on the configuration page to arbitrary remote UDP ports, allowing replies
- Outbound TCP from random high ports to arbitrary remote TCP ports
- (optional, but recommended) Inbound UDP to the port noted on configuration page from arbitrary locations
(optional, but recommended) Inbound TCP to the port noted on configuration page from arbitrary locations
Inbound TCP may be disabled on the configuration page.
Outbound UDP on port 123, allowing replies
This is necessary for I2P's internal time sync (via SNTP - querying a random SNTP host in pool.ntp.org or another server you specify)
Local I2P ports, listening only to local connections by default,
except where noted:
- 1900: UPnP SSDP UDP multicast listener. Cannot be changed. Binds to all interfaces. May be disabled on confignet.jsp.
- 2827: BOB bridge, a higher level socket API for clients Disabled by default. May be enabled/disabled on configclients.jsp. May be changed in the bob.config file.
- 4444: HTTP proxy May be disabled or changed on the i2ptunnel page in the router console. May also be configured to be bound to a specific interface or all interfaces.
- 4445: HTTPS proxy May be disabled or changed on the i2ptunnel page in the router console. May also be configured to be bound to a specific interface or all interfaces.
- 6668: IRC proxy May be disabled or changed on the i2ptunnel page in the router console. May also be configured to be bound to a specific interface or all interfaces.
- 7652: UPnP HTTP TCP event listener. Binds to the LAN address. May be changed with advanced config i2np.upnp.HTTPPort=nnnn. May be disabled on confignet.jsp.
- 7653: UPnP SSDP UDP search response listener. Binds to all interfaces. May be changed with advanced config i2np.upnp.SSDPPort=nnnn. May be disabled on confignet.jsp.
- 7654: I2P Client Protocol port, used by client apps. May be changed to a different port on configclients.jsp but this is not recommended. May be to bind to a different interface or all interfaces, or disabled, on configclients.jsp.
- 7655: UDP for SAM bridge, a higher level socket API for clients Only opened when a SAM V3 client requests a UDP session. May be enabled/disabled on configclients.jsp. May be changed in the clients.config file with the SAM command line option sam.udp.port=nnnn.
- 7656: SAM bridge, a higher level socket API for clients Disabled by default for new installs as of release 0.6.5. May be enabled/disabled on configclients.jsp. May be changed in the clients.config file.
- 7657: Your router console May be disabled in the clients.config file. May also be configured to be bound to a specific interface or all interfaces in that file.
- 7658: Your eepsite May be disabled in the clients.config file. May also be configured to be bound to a specific interface or all interfaces in the jetty.xml file.
- 7659: Outgoing mail to smtp.postman.i2p May be disabled or changed on the i2ptunnel page in the router console. May also be configured to be bound to a specific interface or all interfaces.
- 7660: Incoming mail from pop.postman.i2p May be disabled or changed on the i2ptunnel page in the router console. May also be configured to be bound to a specific interface or all interfaces.
- 8998: mtn.i2p2.i2p (Monotone - disabled by default) May be disabled or changed on the i2ptunnel page in the router console. May also be configured to be bound to a specific interface or all interfaces.
- 31000: Local connection to the wrapper control channel port. Outbound to 32000 only, does not listen on this port. Starts at 31000 and will increment until 31999 looking for a free port. To change, see the wrapper documentation. For more information see below.
- 32000: Local control channel for the service wrapper. To change, see the wrapper documentation. For more information see below.
The local I2P ports and the I2PTunnel ports do not need to be reachable from remote machines, but *should* be reachable locally. You can also create additional ports for I2PTunnel instances via http://localhost:7657/i2ptunnel/ (and in turn, would need to get your firewall to allow you local access, but not remote access, unless desired).
So, to summarize, nothing needs to be reachable by unsolicited remote peers, but if you can configure your NAT/firewall to allow inbound UDP and TCP the outbound facing port, you'll get better performance. You will also need to be able to send outbound UDP packets to arbitrary remote peers (blocking IPs randomly with something like PeerGuardian only hurts you - don't do it).
Why is I2P listening on port 32000?
The Tanuki java service wrapper that we use opens this port—bound to localhost—in order to communicate with software running inside the JVM. When the JVM is launched it is given a key so it can connect to the wrapper. After the JVM establishes its connection to the wrapper, the wrapper refuses any additional connections.
More information can be found in the wrapper documentation.
How do I reseed manually?
An I2P router only needs to be seeded once, to join the network for the first time. Reseeding involves fetching multiple "RouterInfo" files (bundled into a signed zip-file) from at least two predefined server URLs picked from a volunteer-run group of clearnet HTTPS servers.
A typical symptom of a failed reseed is the "Known" indicator (on the left sidebar of the router console) displaying a very small value (often less than 5) which does not increase. This can occur, among other things, if your local firewall limits outbound traffic or if the reseed request is blocked entirely.
If you are stuck behind an ISP firewall or filter, you can use the following manual method (non-automated technical solution) to join the I2P network.
As of release 0.9.33, you may also configure your router to reseed through a proxy. Go to http://localhost:7657/configreseed and configure the proxy type, hostname, and port.
Joining the I2P Network using a reseed file
Please contact a known trustworthy friend who has a running I2P router, and ask them for help with reseeding your I2P router. Request that they send you a reseed file exported from their running I2P router. It is vital that the file is exchanged over a secure channel, e.g. encrypted to avoid external tampering (PGP Sign, Encrypt and Verified with a trusted public key). The file itself is unsigned, so please accept files only from known trusted friends. Never import a reseed file if you can not verify its source.
To import the received i2preseed.zip file into your local I2P router:
- Go to http://localhost:7657/configreseed
- Under "Manual Reseed from File" click "Browse..."
- Select the i2preseed.zip file
- Click "Reseed from File"
Check the log for the following message:
Reseed got 100 router infos from file with 0 errors
Sharing a reseed file
For trusted friends you can use your local I2P router to give them a jump start:
- Go to http://localhost:7657/configreseed
- Under "Create Reseed File" click "Create reseed file"
- Securely send the i2preseed.zip file to your friend
Do not reveal this file in any case to unknown users, since it contains sensitive private data (100 RouterInfo) from your own I2P router! In order to protect your anonymity: you may wait a few random hours/days before you share the file with your trusted friend. It is also advisable to use this procedure sparingly (< 2 per week).
General guidelines for manual reseeding of I2P
- Do not publicly publish the reseed file or share these files with a friend of a friend!
- This file should be used only for a very limited number of friends (< 3)!
- The file is valid only a few days (< 20)!
I'm using FreeBSD and when I start I2P I receive an error about
When trying to start the router using "i2prouter start", you may see output like the following:
$ ./i2prouter start
Starting I2P Service...
/libexec/ld-elf.so.1: Shared object "libm.so.4" not found, required by "i2psvc"
In order to be inclusive and try to ensure that I2P will run on as many systems as possible, up until I2P 0.8.9 we used a java wrapper compiled for FreeBSD 6.x. If you're receiving this error you most likely are missing the necessary compatibility libraries. These libraries may be installed by performing the following steps:
Switch to the root user with
suor log in as
If you cannot install these compatibility libraries (or do not want to), other
possibilities would be to compile the wrapper for your
system, starting I2P with the
runplain.sh script, or you can
replace the wrapper with one from the source tarball.
For the 0.8.9 release of I2P, the wrapper was upgraded to v3.5.12 and compiled on systems running FreeBSD 7.2.
wrapper.log I see an error that states "
Protocol family unavailable" when loading the Router Console
Often this error will occur with any network enabled java software on some systems that are configured to use IPv6 by default. There are a few ways to solve this:
On Linux based systems, you can
echo 0 > /proc/sys/net/ipv6/bindv6only
- Look for the following lines in
If the lines are there, uncomment them by removing the "#"s. If the lines are not there, add them without the "#"s.
WARNING: For any changes to
wrapper.config to take effect, you must completely
stop the router and the wrapper. Clicking Restart on your
router console will NOT reread this file! You must
click Shutdown, wait 11 minutes, then start I2P.
Is installing Java required to use I2P?
While the main I2P client implementation requires Java, there are several alternative clients which don't require Java.
Great! Find us on IRC irc.freenode.net #i2p or post to the forum and we'll post it here (with the answer, hopefully).