Install I2P on Raspberry Pi: Difference between revisions
| Line 61: | Line 61: | ||
</source> | </source> | ||
If you want to start and test as current user: | |||
<source lang=bash> | <source lang=bash> | ||
| Line 69: | Line 69: | ||
Note: | Note: | ||
* This way the I2P router will start and run as current user | * This way the I2P router will start and run as current user, settings and files are stored here /home/pi/.i2p/clients.config | ||
* i2prouter should NOT never be started with sudo | * i2prouter should NOT never be started with sudo | ||
* See below to read how to start i2p automatically and run as user 'i2psvc' | * See below to read how to start i2p automatically and run as user 'i2psvc' | ||
Revision as of 21:10, 14 August 2024
Install i2p on Raspberry Pi
See also
Assumptions
- In this manual, the IP address of the Raspberry PI machine within the local network is assumed to be '192.168.1.2'.
- The installation was done as user 'pi'
- After configuring to start automatically, I2P will run as user 'i2psvc'
- The assumed port for I2P is 25001. Don't use this value.
Install
- See: https://deb.i2p.net/
Pre-install packages:
sudo apt update sudo apt install -y apt-transport-https lsb-release curl
Add repository, add the key and install. This will ensure you will also receive updates:
#Add repository to sources echo "deb https://deb.i2p.net/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/i2p.list #Download key to 'i2p-archive-keyring.gpg ' curl -o i2p-archive-keyring.gpg https://geti2p.net/_static/i2p-archive-keyring.gpg #Display the key gpg --keyid-format long --import --import-options show-only --with-fingerprint i2p-archive-keyring.gpg #Verify the key: #7840 E761 0F28 B904 7535 49D7 67EC E560 5BCF 1346 #Copy the keyring to the keyrings directory: sudo cp i2p-archive-keyring.gpg /usr/share/keyrings #Create symlink to the key sudo ln -sf /usr/share/keyrings/i2p-archive-keyring.gpg /etc/apt/trusted.gpg.d/i2p-archive-keyring.gpg #Update sudo apt update #Upgrade (if applicable) sudo apt upgrade #Install sudo apt install -y i2p i2p-keyring
If you want to start and test as current user:
i2prouter start i2prouter status
Note:
- This way the I2P router will start and run as current user, settings and files are stored here /home/pi/.i2p/clients.config
- i2prouter should NOT never be started with sudo
- See below to read how to start i2p automatically and run as user 'i2psvc'
Test
Install terminal based browser and check if the config page is working:
sudo apt install w3m w3m http://127.0.0.1:7657/confignet
Upgrade
After upgrading I2P, the service needs to be restarted. Go to the console and click restart.
sudo apt update sudo apt upgrade i2p i2p-keyring
Start I2P automatically
Note: i2prouter should be started as a regular pi user. Do NOT start the router with sudo. If you use below configuration script the default user is 'i2psvc'.
sudo dpkg-reconfigure i2p
Default answers will be fine.
sudo service i2p start
Config folder:
sudo nano /var/lib/i2p/i2p-config/clients.config
Access config from another machine
Add the system's IP (192.168.1.2) to allow access from other machines:
#local run sudo nano /home/pi/.i2p/clients.config #service run sudo nano +3 /var/lib/i2p/i2p-config/clients.config
Edit line to be:
... clientApp.0.args=7657 ::1,127.0.0.1,192.168.1.2 ./webapps/ ...
Note: after the first time initialization the configuration is moved to directory /var/lib/i2p/i2p-config/clients.config.d/ and the file clients.config is renamed to clients.config.bak.
For de addressbook:
sudo nano +11 /var/lib/i2p/i2p-config/addressbook/config.txt
Edit line to be:
... proxy_host=192.168.1.2 ...
Optionally add and require a username and password:
- http://192.168.1.2:7657/configui
- Enter username
- Enter password
- Click 'Add User'
Firewall/router settings
Note: this port is a random number, keep it private, it could be used to find your real IP adres.
Network > Port 25001
Use the documentation for your router, login to your router's Administrator page
WAN Port Forwarding From port 25001 To port 25001 To IP 192.168.1.2 Protocol: TCP & UDP
My I2P settings
Disable [-] Enable [+]
Clients:
- [+] Application tunnels
- [-] BOB application bridge
- [+] I2P Router Console
- [-] I2P webserver (eepsite)
- [-] Open Router Console in web browser at startup
- [-] SAM application bridge
Hidden Services Manager - go into the service and configure it to start automatically or not.
I2P Hidden Services:
- [-] I2P webserver
I2P Client Tunnels:
- [+] I2P HTTP Proxy
- [-] I2P HTTPS Proxy
- [-] Irc2P
- [-] mtn.i2p-projekt.i2p
- [-] pop3.postman.i2p
- [-] smtp.postman.i2p
Web Apps:
- [+] Torrents
- [+] Hidden Services Manager
- [-] Identification Image Generator
- [+] I2P Router Console
- [+] Addressbook
Bandwidth (example):
- 800 In
- 300 Out
- 10% share
Other settings:
- Changed the I2P HTTP Proxy interface from '127.0.0.1' to '192.168.1.2'. Combined with the 'http://192.168.1.2/proxy.pac' and settings in Firefox we can now access '.i2p' websites with this browser from an other machine.
I2P router Snark settings
- Configuration
- Data directory (example):
- /media/data/i2psnark
- Data directory (example):
You will need some storage, see below option.
Firefox browsing I2P websites
Note: I2P HTTP Proxy interface needs to changed from '127.0.0.1' to '192.168.1.2'.
A PAC file is used to redirect websites with a '.I2P' extension. You may make this file available via a webserver, for example http://192.168.1.2/proxy.pac.
sudo nano /var/www/html/proxy.pac
function FindProxyForURL(url, host) {
// i2p via proxy or DIRECT if unavailable
if (shExpMatch(host, "*.i2p")) {
return "PROXY 192.168.1.2:4444; DIRECT";
}
// All other requests DIRECT:
return "DIRECT";
}
To configure your Firefox webbrowser:
- go to > Preferences > Advanced > Network > Connection Settings
- Check the 'Automatic proxy configuration URL':
- Enter: http://192.168.1.2/proxy.pac
Format a DATA partition as exFAT, allowing larger than 4Gb files
Install packages:
sudo apt install exfat-utils
List devices:
sudo lsblk
In my case:
- device /dev/mmcblk0
- Partition 1 is the RPi boot partition
- Partition 2 is the RPi root partition
- Partition 3 will be the DATA partition - ALL DATA WILL BE ERASED
Remove mount:
sudo umount /media/data
Edit the partition tables, accept defaults mostly - ALL DATA WILL BE ERASED:
sudo fdisk /dev/mmcblk0
'p' - print partitions 'd' - delete partition - 3 'n' - new partition - 3 't' - change partition type - 3 7 (HPFS/NTFS/exFAT) 'w' - write and quit
Format - ALL DATA WILL BE ERASED, mount:
#Format sudo mkfs.exfat -n Data /dev/mmcblk0p3 #Mount sudo mount /dev/mmcblk0p3 /media/data #i2psnark data directory mkdir /media/data/i2psnark
To mount automatically at boot it needs to be added to fstab:
sudo nano /etc/fstab
#Device Mountpoint FilesystemType MountOptions BackupDump(0) FsckOrder(2) /dev/mmcblk0p3 /media/data exfat-fuse defaults,noatime 0 2
Troubleshooting
Upgrade: deb uses unknown compression (zst)
i2p upgrade ... dpkg-deb: error: archive '/var/cache/apt/archives/i2p-keyring_2023.10.01_all.deb' uses unknown compression for member 'control.tar.zst', giving up ...
Problem: compression zst is not yet supported by Debian deb. Fix: recreate deb with supported compression
# install zst compression tool sudo apt install zstd #The original file: cd cp /var/cache/apt/archives/i2p-keyring_2023.10.01_all.deb . # extract files 'control.tar.zst' and 'data.tar.zst' from deb: ar x i2p-keyring_2023.10.01_all.deb # compress and rename with 'xz' zstd -d < control.tar.zst| xz > control.tar.xz zstd -d < data.tar.zst| xz > data.tar.xz # recreate deb ar -m -c -a sdsd i2p-keyring_2023.10.01_all_repacked.deb debian-binary control.tar.xz data.tar.xz # cleanup files rm debian-binary control.tar.xz data.tar.xz control.tar.zst data.tar.zst # resulting files ls i2p-keyring_2023.10.01_all.deb i2p-keyring_2023.10.01_all_repacked.deb # install the deb and try upgrade again sudo dpkg -i --force-overwrite i2p-keyring_2023.10.01_all_repacked.deb sudo apt upgrade