Clone this wiki locally
I2P support within BiglyBT is via the 'I2P Helper' plugin - it will automatically be installed under a number of circumstances when needed - for manual installation see http://plugins.biglybt.com/
Downloading over I2P will be slower than over the public internet for fairly obvious reasons - connections are routed through various peers to provide anonymity/privacy - these other peers forward the network traffic to other peers. If you have, say, 2 intermediate peers between the start and end of the overall connection, every byte sent will require the network to transport three bytes overall (initial peer->first intermediate; first intermediate->second intermediate; second intermediate->final peer). Also connection establishment is more complex and obviously connection latencies are much higher than direct connections over the internet.
There are also overheads associated with running the I2P network itself so you will see some of your bandwidth being used for this.
The default bandwidth available for I2P to use is limited - you will probably want to consider updating the limits in the plugin configuration options. There is also the option to link the I2P limits to the overall BiglyBT limits.
The bandwidth controls configurable via the plugin configuration page affect the overall I2P bandwidth usage, not that for uploading and downloading torrents (I2P has network overheads as discussed above and also to participate in the I2P network you must donate some of your bandwidth to other peer's tunnels.)
If you want to control torrent downloading/uploading limits then you can use the Speed Limit Scheduler to define 'Peer Sets' specific to I2P Peers (and non-I2P peers), and then rate limit them as required. For example, the following schedule will define two Peer Sets, one for I2P peers and one for the rest:
enabled=yes peer_set I2P=I2P peer_set NotI2P=I2P, inverse=yes
Once set up these Peer Sets will appear in the side bar and you can right-click on them to set rate limits as required.
Peer Sets support a rate limit of 'Disabled' which when set prevents all transfer of data in the specified direction (up or down). This can be used, for example, to only download data from non-I2P peers while uploading and downloading to I2P ones.
An 'eepsite' is a website that is only available through I2P and has a URL ending in '.i2p'. For example, there is a statistics website at http://stats.i2p/. If you try to browse to this using your normal internet browser it won't work - you need to tell your browser to use the I2P network to find the website, not the public internet.
BiglyBT has a SOCKS proxy that you can configure your browser to use for this purpose. Normally the SOCKS proxy is used internally and selects a random available port to listen on. If you want to use it for browsing then you should select a fixed port so you don't need to keep configuring your browser.
In this example port 61851 has been selected. Note also that 'Always start SOCKS server' has been enabled - if this is not selected then BiglyBT will only start the server when required for internal use and when it isn't running you won't be able to browse .i2p addresses.
Next you need to configure your browser. Firefox is a good choice here as you need to be able to configure it to defer DNS resolution to the SOCKS proxy - let's assume you have gone along with this. If you are already using Firefox you could install a second 'portable' version for I2P purposes, see http://portableapps.com/apps/internet/firefox_portable
Two configuration actions are required:
- Configure remote DNS:
- Configure the SOCKS Proxy
Save the settings and restart to ensure they take effect. Then browse to http://stats.i2p/. BiglyBT will of course need to be running (and I2P started up within BiglyBT) for this to work.
If you have a subscription or search template that uses an eepsite then you can configure BiglyBT to open FireFox (as configured above) to view links (e.g. subscription result 'details' links) via Tools->Options->Interface->Display: External Browser
Select 'manual' for the browser selection and then enter/browse to the FireFox application.
You can also configure BiglyBT to use Firefox (as configured above) to display subscription/result pages externally instead of inside BiglyBT. Check the required boxes at the bottom of the External Browser configuration section. Be sure to read the accompanying text detailing the restrictions when using this feature.
By default the SOCKS server will refuse connections to non-I2P addresses - if you are concerned about anonymity then this is the desired behavior. The reason is that a malicious I2P website could return specially crafted web page that linked to a public IP address also controlled by the I2P website - if FireFox automatically loaded the link then this would allow the malicious site to correlate your I2P identity and your public IP address.
However, if all you want is a browser that allows access to .i2p websites, along with public websites, and you don't care about your identity, you can configure the SOCKS server to allow connections to non-I2P addresses via the 'Allow SOCKS server to delegate...' option shown above.
BiglyBT 22.214.171.124 added support for using the I2P HTTP(S) proxy for eepsite URLs. Previously only a SOCKS proxy was available for browser configuration but this had various issues that are fixed by switching to using an HTTP proxy.
By default this is disabled so you will need to enable it in the I2P Helper plugin configuration.
Then configure your browser to use the HTTP proxy. By default this will be available at 127.0.0.1:1444.
Support was also added for "outproxies". These are exit-points from the I2P network to the "public" internet. This permits the HTTP proxy to also handle non-.i2p domains.
By default BiglyBT is configured to use the "stormycloud" outproxy - this is also in the plugin configuration. If you use this feature please consider heading over to https://stormycloud.org/ to support them.
In order to increase the availability of torrents for download via I2P the plugin supports 'network mixing'. This will take well seeded torrents from the internet and make them available as decentralized torrents over I2P. The number of torrents treated in the way can be configured via the plugin's configuration options.
When adding a new torrent to BiglyBT its availability within I2P can be checked. To do this you need to
- enable the I2P network for the torrent in the torrent options.
- check the availability within I2P by hitting the 'availability' button.
NOTE: mixed torrents and I2P only torrents are handled separately within BiglyBT to prevent the correlation of mixed activity and pure I2P activity. If you add a torrent and subsequently amend its network availability (e.g. change it from pure I2P to mixed) then this will potentially reduce your privacy.
BiglyBT doesn't use Message Stream Encryption when connecting over non-public networks such as I2P although your settings will of course be respected for public network connections on a mixed network download. The reason is that the streams are already encrypted/obfuscated so another layer of encryption on top of this wastes resources to no benefit.
Rather than using the minimal I2P runtime bundled with this plugin you can configure the plugin to use a full I2P installation that you have setup yourself - see the plugin configuration to enable this. You should ensure that your I2P installation is running before starting BiglyBT as the plugin currently requires this.
The default port used by your I2P installation is 7654 so, unless you have changed this, no further configuration within BiglyBT is required.
If you are running I2P on a different host to BiglyBT then you can also configure the host address.
You will need to configure I2P bandwidth limits directly via the I2P configuration web pages.
If you run an external I2P service (i.e. select the 'external router' option in the BiglyBT plugin configuration and install and manage I2P separately) then you will probably be familiar with the I2P Router Console. This gives you access to all sorts of interesting information about the I2P system and the ability to configure it etc.
It is also possible to run the Router Console interface with the built-in BiglyBT I2P router, although you should only use this for observing the status of I2P in general. Trying to change configuration values by the interface is unsupported - some changes may possibly work but you're on your own...
To do this you need to manually download the Router Console bundle based on your current I2P Helper version:
- < 1.5: i2prouterconsole_0.9.47.1.1.zip
- >= 1.5: i2prouterconsole_126.96.36.199.1.zip
- >= 2.0: i2prouterconsole_188.8.131.52.2.zip
Manually UNZIP this into the plugin installation folder (i.e. inside the folder named .../plugins/azneti2phelper).
By default the Router Console will be available at http://127.0.0.1:17657/ - you can change this by editing the 'clients.config' file that you unzipped.
- BiglyBT for Android has a range of settings and menus. The entrypoint for all the menus is the icon with three vertical dots in the top-right corner.
- Choose the "Settings" item from the menu that appears.
- Open "Mode" from the top of the "Settings" menu and switch to "Advanced" mode which makes the I2P configuration visible. Return to the previous "Settings" menu.
- Choose the "Full Settings" from the bottom of the "Settings" menu
- One more menu deep is the "Connection Settings." Open this menu to enable different kinds of connections.
- Finally, scroll to the bottom of the menu and flip the switch to enable I2P.
Even if you configure BiglyBT to only use the I2P network by default (under Tools->Options->Connection: Networks) BiglyBT will automatically enable the public network on all update downloads (this includes BiglyBT core updates and plugin installations/updates). It is possible that in the future I2P based updates will be supported but until that time don't be surprised if you see this. Updates can be disabled if required via
- Tools->Options->Interface->Start: options towards the top used to disable core update checks
- Tools->Options->Plugins->Plugin Update: disable this to disable plugin updates