I'm experimenting with i2p and a librewolf container setup in Docker compose. However, the i2p web console front end (127.0.0.1:7657) becomes inaccessible if the container itself is restarted. This can be remedied by removing the directories that get created by the volume mappings in the compose file, but this obviously not ideal. Anyone have experience with this problem? I've seen hints from people online suggesting that the data in those directories getting somehow corrupted. I have not yet investigated that further.
version: "3.5"
services:
i2p_router:
image:
geti2p/i2p:latest
environment:
- JVM_XMX=256m
volumes:
- ./i2phome:/i2p/.i2p
- ./i2ptorrents:/i2psnark
ports:
- 4444:4444
- 6668:6668
- 7657:7657
- 9001:12345
- 9002:12345/udp
libre_wolf:
image:
linuxserver/librewolf
ports:
- 9300:3000
- 9301:3001
volumes:
i2phome:
i2ptorrents:
networks:
frontend:
driver: bridge
Doing more digging, I captured checksums of all files that get created by the i2p container, with
find i2p* -type f -exec md5 {} + > 1sum # After starting containerand
find i2p* -type f -exec md5 {} + > 2sum # After restarting containerComparing the files with
diff -y 1sum 2sum, I noticed this file was the only one whose checksum changed:MD5 (i2phome/router.ping) = 95fd0fa14b084cf019f2dd9e0884aa1 | MD5 (i2phome/router.ping) = f4b060ae4f789f7d24f2851c06597c4EDIT:
Preserving this file outside of the volume directory and copying it back in after the container restarts allows the web console to function as expected.
EDIT 2:
To take it a step further, I'm mounting it read only into the container at runtime like this:
- ./router.ping:/i2p/.i2p/:rowhich is sort of a hack, but I think I can live with it.