The Log button shows the running daemon live: feed scans, downloads, torrents and every HTTP request. It reads a ring buffer filled by a tracing layer rather than tailing a file, so it works under Docker where logs go to stdout. The access-log middleware skips /api/logs, or the panel's poll would log itself forever. Detached torrents could leave a row stuck in 'downloading' across a restart, where nothing would ever revisit it; those are requeued at startup. Dockerfile, entrypoint and compose: 114 MB runtime, config bound to 0.0.0.0 on first run since container loopback is unreachable, drops to PUID:PGID for Unraid, and a healthcheck that goes through the control socket so a wedged worker reads as unhealthy. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AdXho5tTkjFLeUXKbEjKBh
41 lines
1.2 KiB
Bash
Executable File
41 lines
1.2 KiB
Bash
Executable File
#!/bin/sh
|
|
set -e
|
|
|
|
# A container's loopback is not reachable from outside it, so the default bind of
|
|
# 127.0.0.1 would leave the UI unreachable. Write a starter config that binds 0.0.0.0
|
|
# on first run; after that the file is yours and is never rewritten.
|
|
if [ ! -f "$IPX_CONFIG" ]; then
|
|
mkdir -p "$(dirname "$IPX_CONFIG")"
|
|
cat > "$IPX_CONFIG" <<TOML
|
|
[general]
|
|
download_dir = "/downloads"
|
|
schedule = "every 60m"
|
|
max_total_gb = 0
|
|
max_age_days = 0
|
|
|
|
[torrent]
|
|
enabled = true
|
|
port_range = "6881-6889"
|
|
|
|
[web]
|
|
enabled = true
|
|
bind = "0.0.0.0:8099"
|
|
token = ""
|
|
TOML
|
|
echo "ipx: wrote a starter config to $IPX_CONFIG"
|
|
fi
|
|
|
|
mkdir -p "$IPX_DATA_DIR" /downloads
|
|
|
|
# Unraid shares expect 99:100. Running as root would leave root-owned downloads.
|
|
if [ "$(id -u)" = "0" ] && [ -n "$PUID" ] && [ -n "$PGID" ]; then
|
|
if ! getent group ipx >/dev/null 2>&1; then addgroup --gid "$PGID" ipx 2>/dev/null || true; fi
|
|
if ! getent passwd ipx >/dev/null 2>&1; then
|
|
adduser --uid "$PUID" --gid "$PGID" --disabled-password --gecos "" ipx 2>/dev/null || true
|
|
fi
|
|
chown -R "$PUID:$PGID" "$IPX_DATA_DIR" "$(dirname "$IPX_CONFIG")" 2>/dev/null || true
|
|
exec gosu "$PUID:$PGID" "$@"
|
|
fi
|
|
|
|
exec "$@"
|