Any practical way of running i2pd with docker compose?
Posted: 29 May 2026 16:44
Hi, I tried running i2pd using docker compose within a separate docker network. My aim is to completely migrate my existing i2pd.conf and tunnels.conf.d file/directory into the docker environment, but right now I'm facing some problems. I copied the files from the hosts i2pd installation into a separate data directory that I then bind mounted into the container. Then I used the "command" parameter within my docker-compose.yml to point to my config. Here's the compose file:
On the host system I changed the permissions of the data directory so the container can actually use it:
The first thing that is somewhat concerning is that this message gets logged right after starting the container: "ln: /home/i2pd/data/certificates/i2pd_certificates: Permission denied" and I can't find out why there are any permission errors.
The second and much bigger problem is that can't access the webui unless I let the container use the host's network. When the container is running inside the docker network there by default is no reaction whatsoever when trying to access the webui. Changing the listen address of the webui to 0.0.0.0 returns an almost blank page, only saying "host mismatch".
Is there anyway to fix this and use i2pd inside docker just the same way you would use the non-dockerized daemon?
Code: Select all
services:
i2pd:
image: purplei2p/i2pd
container_name: i2pd
hostname: i2pd
#network_mode: host
networks:
- net_i2p
ports:
- 7070:7070
volumes:
- ./i2pd/data:/home/i2pd/data # make sure data directory and it's contents are owned by 100:65533
command: --conf=/home/i2pd/data/i2pd.conf --tunconf=/home/i2pd/data/tunnels.conf --tunnelsdir=/home/i2pd/data/tunnels.conf.d/
restart: always
networks:
net_i2p:
Code: Select all
chown -R 100:65533 ./i2pd/dataThe second and much bigger problem is that can't access the webui unless I let the container use the host's network. When the container is running inside the docker network there by default is no reaction whatsoever when trying to access the webui. Changing the listen address of the webui to 0.0.0.0 returns an almost blank page, only saying "host mismatch".
Is there anyway to fix this and use i2pd inside docker just the same way you would use the non-dockerized daemon?