Docker runs a healthcheck with exec, and containerd puts each exec's state in XDG_RUNTIME_DIR, /run/user/0 on Tower, which elogind removes when root's last session ends. Every check then failed and every container showed unhealthy while all of them answered. The checks are gone from the sample compose file and production's; ipx's library counts for /metrics, which only the healthcheck's status call refreshed, are counted every 30 s by the daemon. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
44 lines
1.7 KiB
YAML
44 lines
1.7 KiB
YAML
# A sample: ipx with its database in SQLite, and ipx-web, the page, in front of it. Build both
|
|
# images first (`docker build -t ipx .` and `docker build -f Dockerfile.web -t ipx-web .`), then
|
|
# `docker compose up -d`, and sign in at http://<host>:8099 as admin / ipodderx.
|
|
# docs/configuration.md has the rest, Postgres included.
|
|
services:
|
|
ipx:
|
|
image: ipx
|
|
container_name: ipx
|
|
restart: unless-stopped
|
|
environment:
|
|
# Who owns the files it writes. 99:100 is Unraid's nobody:users.
|
|
PUID: "99"
|
|
PGID: "100"
|
|
TZ: "UTC"
|
|
# For Postgres instead of SQLite:
|
|
# IPX_DATABASE_URL: "postgres://ipx:password@db-host:5432/ipx"
|
|
# No web port of its own: ipx-web is the way in, and passes the API on to it.
|
|
ports:
|
|
- "6881:6881/tcp" # BitTorrent peers
|
|
- "6881:6881/udp" # DHT
|
|
volumes:
|
|
- ./config:/config # config.toml, written on first start
|
|
- ./data:/data # state.db
|
|
- ./downloads:/downloads
|
|
|
|
ipx-web:
|
|
image: ipx-web
|
|
container_name: ipx-web
|
|
restart: unless-stopped
|
|
environment:
|
|
IPX_UPSTREAM: "ipx:8099"
|
|
# Behind Cloudflare Access only: where cloudflared's requests come from, the one address
|
|
# whose Cf-Access-* headers are passed on. docs/sso.md says how to find it.
|
|
# TUNNEL_PEER: "192.168.64.1"
|
|
# Traces to an OpenTelemetry collector, a span for each request, continued into ipx:
|
|
# WEB_TRACING: "on"
|
|
# OTEL_EXPORTER_OTLP_ENDPOINT: "http://collector:4318"
|
|
# OTEL_EXPORTER_OTLP_PROTOCOL: "http/protobuf"
|
|
# OTEL_SERVICE_NAME: "ipx-web"
|
|
ports:
|
|
- "8099:8080" # the web UI
|
|
depends_on:
|
|
- ipx
|