- Drop --no-install-recommends in all apt-get install steps in Dockerfile.
- This allows OpenJDK-recommended font/rendering libraries to be installed, fixing router console graph rendering in container runtime.
- switch builder stage from alpine to debian:trixie-slim
- install build dependencies via apt-get and add ca-certificates
- set Java compile target to 21 with override.properties
- update runtime stages to debian:trixie-slim
- upgrade runtime JRE to openjdk-21-jre-headless for all architectures
Update Docker documentation examples to use
restart: on-failure:3 instead of unless-stopped.
Reason: unless-stopped causes Docker to restart the container even after an
orderly shutdown initiated from the I2P Router Console, so intentional UI
shutdowns do not stay down. The new policy keeps crash recovery behavior for
non-zero exits while allowing clean shutdowns (exit 0) to remain stopped.
- Automatically add conflicts received from subscriptions
- Add conflicts book to UI
- Show both entries on conflicts details pages
- Add special handling for conflicts book in BFNS
TODO: Add conflict resolution buttons
Update Docker documentation examples and troubleshooting guidance to use
restart: on-failure:3 instead of unless-stopped.
Reason: unless-stopped causes Docker to restart the container even after an
orderly shutdown initiated from the I2P Router Console, so intentional UI
shutdowns do not stay down. The new policy keeps crash recovery behavior for
non-zero exits while allowing clean shutdowns (exit 0) to remain stopped.
- replace legacy startup script with an entrypoint-based bootstrap flow
- add shared helper functions for logging, config updates, jetty xml updates, and bind IP derivation
- support I2P_UID and I2P_GID remapping with numeric validation and collision checks
- default EXT_PORT to 12345 when unset and emit clearer firewalled/privacy warnings
- apply runtime values to install-time and persistent router, client, tunnel, snark, and eepsite configs
- stream wrapper and router logs to container stdout for better observability
- forward termination signals from pid 1 to the router process and normalize graceful shutdown exit codes
- move docker config templates into the entrypoint template directory and refresh defaults
- update Dockerfile env layout, volumes, exposed ports, and entrypoint path
- align Docker documentation with the new runtime behavior, binding model, and uid/gid mapping guidance