Still Under DDOS, but here is a status update anyway. The Tor network is breaking.
/d/OpSec icon


17,155 subscribers

Anonymous Planet Onion

Discussion of OpSec, Threat Models, Protection, Assessment & Countermeasures.

Vendors: /d/vendor_handbook.

While the focus of this community's OpSec discussions may center around Dark Net (DN) activity, all members of this sub are encouraged to think about, discuss, and share ideas relating to OpSec.

How to make a portable I2P capable instance of Tor browser guide

by /u/whalez · 3 votes · 2 months ago

Ever wanted to make separate portable instance of Tor browser especially for I2P ?

You hate vanilla I2P java dependencies with passion or you just want to put it on a thumb drive to have it with you at all times ?

I got you covered, just bear with me while I break it down.


  • [1] Make a folder - that would be your new I2P Tor browser instance folder.

  • [2] Download latest linux Tor browser bundle .tar.xz archive somewhere.

  • [3] Download I2PdBrowserPortable linux .tar.gz from open it and extract only i2pd folder from it to the folder from step 1, discard the rest.

  • [4] Now you should have a target directory containing only i2pd folder from i2pdbrowser .tar.gz

Script description:

The script is quite simple - first it inquires about Tor browser bundle .tar.xz archive path.

Then it wants you to point to the target directory where do you want your new I2P Tor browser instance to be created(the dir from step 4).

Then it drops some necessary settings in a separate user.js file.

Note that network.proxy.socks_remote_dns = false resides in a separate mozilla.cfg file on purpose because Tor browser doesn't respect

that particular setting in plain user.js file and turns it back to true should you decide to put it there.

Also our dreaded javascript is locked to disabled in this config just to make sure :)

The user.js settings are pretty straight forward and cater to the good security practices we should exercise while also providing reasonable

level of security without altering too much the defaults thus skewing your fingerprint.

Then it creates a launch script named which first starts i2pd daemon in the background and finally launches the modified Tor browser

in a way that also kills the i2pd daemon when you close it.


Execute script, give the paths asked, then just run launch script from your target directory and enjoy :)

Navigate to for the webconsole if that need arises.

Do keep in mind that you must give the i2pd daemon in the background adequate time to build tunnels and get acquainted to the network before you start browsing especially the first time you run it.

Of course feel free to add, remove and modify to your liking - this is just an example and it may not apply to all use cases.

It is just meant to respond to the needs of the average DN dweller.

read -e -p "Enter Tor bundle path: " tor_bundle
[[ -z "$tor_bundle" ]] && { echo "Tor bundle path is empty" ; exit 1; }
read -e -p "Enter I2P Tor browser instance path(without end slash): " i2p_tor
[[ -z "$i2p_tor" ]] && { echo "I2P Tor instance path is empty" ; exit 1; }
tar xf $tor_bundle --directory $i2p_tor
cat >> $i2p_tor/tor-browser_en-US/Browser/TorBrowser/Data/Browser/profile.default/user.js <<\EOF
user_pref("extensions.torbutton.security_slider", 1);
user_pref("browser.security_level.security_slider", 1);
//I2P settings
user_pref("", false);
user_pref("", false);
user_pref("network.proxy.no_proxies_on", "");
user_pref("extensions.torlauncher.start_tor", false);
user_pref("extensions.torlauncher.prompt_at_startup", false);
user_pref("extensions.torbutton.local_tor_check", false);
user_pref("extensions.torbutton.use_nontor_proxy", true);
user_pref("network.proxy.http", "");
user_pref("network.proxy.http_port", 4444);
user_pref("network.proxy.ssl", "");
user_pref("network.proxy.ssl_port", 4444);
cat >> $i2p_tor/tor-browser_en-US/Browser/defaults/pref/local-settings.js <<\EOF
pref("general.config.obscure_value", 0);
pref("general.config.filename", "mozilla.cfg");
cat >> $i2p_tor/tor-browser_en-US/Browser/mozilla.cfg <<\EOF
lockPref("network.proxy.socks_remote_dns", false);
lockPref("javascript.enabled", false);
cat >> $i2p_tor/ <<\EOF
killall i2pd-amd64
sh -c "$i2p_tor/i2pd/i2pd-amd64 --datadir=$i2p_tor/i2pd &"
sh -c "$i2p_tor/tor-browser_en-US/Browser/start-tor-browser && killall i2pd-amd64 &"
chmod +x $i2p_tor/
echo "Ready to go !"