Caddy's tracing directive, switched by WEB_TRACING so a server without a collector does not log a failed export every few seconds. It continues an incoming traceparent (the page starts one per tap, #190) and passes it to ipx, so a request is one trace from the browser through Caddy into ipx, and Caddy's access log carries its traceID. Checked against Tempo with a probe container: service.name and deployment.environment.name come from the OTEL_ variables, over OTLP/HTTP. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
55 lines
1.9 KiB
YAML
55 lines
1.9 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
|
|
healthcheck:
|
|
test: ["CMD", "ipx", "status"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
start_period: 10s
|
|
|
|
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
|
|
healthcheck:
|
|
test: ["CMD", "wget", "-q", "--spider", "http://127.0.0.1:8080/favicon.png"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|