Installation
First of all you have to install archlinux template. (You could install it using Template Manager)
After that, create archlinux-i2pd template VM
Execute these commands in archlinux-i2pd qube:
sudo pacman -S archlinux-keyring
sudo pacman-key --init
sudo pacman-key --populate archlinux
sudo pacman -S micro
uncomment line #ParallelDownloads = 5 in pacman configuration file:
sudo micro /etc/pacman.conf # (Ctrl+q for quit)
Continue installation
sudo pacman -Suy --noconfirm --needed base-devel git firefox
cd /tmp
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si --noconfirm
yay --noconfirm -S i2pd-qt-git clash-verge-rev-bin
shutdown now
Create a new qube sys-i2pd-out


Execute commands in sys-i2pd-out:
mkdir -p ~/.config/autostart
cp /usr/share/applications/website.i2pd.i2pd.desktop .config/autostart/
mkdir -p ~/.i2pd
touch ~/.i2pd/tunnels.conf
touch /home/user/autostart.sh
chmod +x /home/user/autostart.sh
sudo nft add rule ip qubes custom-input meta l4proto tcp ct state new,established tcp dport 4500 accept
i2pd_qt
Now you should wait about 10-20 minutes, while i2pd starts accept connections
For simple monitoring execute in another terminal tab
watch curl --socks5-hostname 127.0.0.1:4447 acetone.i2p
When the command above returns response go to the next steps
Modify exec command. In file .config/autostart/website.i2pd.i2pd.desktop, replace Exec=i2pd_qt to Exec=/home/user/autostart.sh
Paste content below into file /home/user/autostart.sh:
#!/bin/bash
sudo nft add rule ip qubes custom-input meta l4proto tcp ct state new,established tcp dport 4500 accept
i2pd_qt
paste content below in .i2pd/tunnels.conf:
[socks-outproxy-tcp]
type = client
address = 0.0.0.0
port = 4500
keys = transient-outproxy
destination = outproxy.acetone.i2p
destinationport = 1080
inbound.length = 1
outbound.length = 1
inbound.lengthVariance = 1
outbound.lengthVariance = 1
[socks-outproxy-udp]
type = udpclient
address = 127.0.0.1
port = 4500
keys = transient-outproxy
destination = outproxy.acetone.i2p
destinationport = 1080
Add to section [socksproxy] in .i2pd/i2pd.conf:
outproxy.enabled = true
outproxy = 127.0.0.1
outproxyport = 4500
Restart sys-i2pd-out qube
Create a new sys-i2pd-in qube


In sys-i2pd-in execute:
mkdir -p .config/autostart
cp /usr/share/applications/Clash\ Verge.desktop .config/autostart/
Profiles > New > Type: Local > Save
MRB > Edit Proxies
Check the sys-i2pd-out qube IP in Qube Manager
Write socks5://<YOUR_IP>:4500 and click Save
Proxies > Global > undefined
Add killswitch, execute commands in dom0:
qvm-firewall sys-i2pd-in reset
qvm-firewall sys-i2pd-in add accept <sys-i2pd-out-ip-here> dstports=4500 proto=tcp
qvm-firewall sys-i2pd-in del --rule-no 0
thanks @solene for fix
Verify is it works
Optional create a new test qube and select sys-i2pd-in as a network qube
Verify network
More configuring options for i2pd avaliable here: Configuring - i2pd documentation
Thanks for reading
donations
- ETH
0xa8C72e40D17671695Eaf5D7A5aE5a965CB52F28 - BTC
bc1qcqq5vu98g5zjds6e7c4j4af5v0zyg0z4qmlzu3 - USDT TRC20
TQa4HEayA7JpjTNCfReQ4zXBDevk9TRYor - LTC
ltc1qwhakmnj7mu9wry4u5lkzujf99g9h825fqp4730













