epAction's redraw closure called itself when handed a row, so Mark read recursed until the stack blew; it now swaps that row in place. Opening an item also marks it read, redrawn where it stands so nothing vanishes from under the pointer on the Unread tab. Step A of multi-user: users and sessions tables, Argon2id, a session cookie, ipx user subcommands, and a trusted proxy header for Cloudflare Zero Trust -- honoured only from a trusted_proxies address. The shared token still works and is the admin. A new database starts with admin/ipodderx. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AdXho5tTkjFLeUXKbEjKBh
25 lines
690 B
YAML
25 lines
690 B
YAML
services:
|
|
ipodderx:
|
|
image: 192.168.1.130:5000/ipodderx:latest
|
|
container_name: iPodderX
|
|
restart: unless-stopped
|
|
environment:
|
|
PUID: "99"
|
|
PGID: "100"
|
|
TZ: "America/Toronto"
|
|
IPX_LOG: "ipx=info"
|
|
ports:
|
|
- "8099:8099" # web UI
|
|
- "6881:6881/tcp" # BitTorrent peers
|
|
- "6881:6881/udp" # DHT
|
|
volumes:
|
|
- /mnt/fast/appdata/ipodderx:/config # config.toml, and the web token
|
|
- /mnt/user/ipodderx/:/data # state.db
|
|
- /mnt/user/ipodderx/downloads:/downloads
|
|
healthcheck:
|
|
test: ["CMD", "ipx", "status"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
start_period: 10s
|