# docker-rtorrent This is plain simple rtorrent with proxy and custom rtorrent.rc Base image: Alpine Linux 3.24 stable (`alpine:3.24`), including its latest patch updates. Source: https://git.k2patel.in/k2patel/docker-rtorrent Public access is read-only; account registration on this server is disabled. Report issues at https://github.com/k2patel/docker-rtorrent/issues. For contributions, open an issue with a link to your branch or patch on another Git provider. Changes are reviewed and applied by the maintainer on Gitea. Gitea Actions builds and publishes `docker.io/k2patel/rtorrent:latest` on pushes to `main`, manually, and monthly on the third day at 00:00 UTC. The repository requires Actions secrets `DOCKER_USERNAME` and `DOCKER_TOKEN` (a Docker Hub token with write access to `k2patel/rtorrent`). Builds run on the remote Kubernetes runner for `linux/amd64`, matching the previous GitHub build. Buildx pushes directly to Docker Hub without loading the image into the runner's Docker image store. Its temporary builder and build cache are removed after each job; no image archives or build records are uploaded to Gitea, and no local container builds are required. # Latest 0.16 version caveat - since version 0.16 explicitly set `network.bind_address.set = 0.0.0.0`, when ipv6 is disabled on kernel. ## Distroless variant `docker.io/k2patel/rtorrent:distroless` is built separately using the manual **Build Distroless rTorrent** workflow. It preserves the Alpine 3.24 rTorrent binary, musl libraries, CA certificates and timezone/terminal data in a `scratch` final image. It contains no shell, package manager, BusyBox, or build tools. A small native launcher removes the stale session lock and execs rTorrent, so signals go directly to rTorrent. It also provides the shell-free TCP healthcheck. CI tests the assembled filesystem by starting rTorrent and making an SCGI XML-RPC request before publishing. The working `latest` tag is independent. Your mounted `rtorrent.rc` must not depend on shell commands or utilities missing from this image (including `execute` hooks). Review those hooks before switching. Existing mount paths, SCGI port 5001, root UID and `HOME=/root` are preserved. Use the Compose overlay to replace the shell-based healthcheck: ```sh docker compose -f docker-compose.yml -f docker-compose.distroless.yml up -d ``` The overlay also selects the separate Flood distroless image. Keep the same `.env` values and mounted data. To roll back, use the base Compose file with `:latest`.