mirror of
https://github.com/casjaysdevdocker/aria2
synced 2026-05-19 02:47:48 -04:00
🗃️ Removed the .claude/settings.local.json 🗃️
Some checks failed
aria2 / release-aria2 (push) Has been cancelled
Some checks failed
aria2 / release-aria2 (push) Has been cancelled
CLAUDE.md Dockerfile .env.scripts .gitattributes .gitea/workflows/docker.yaml .gitignore LICENSE.md PLAN.md README.md rootfs/root/docker/setup/05-custom.sh rootfs/tmp/etc/nginx/nginx.conf rootfs/usr/local/bin/entrypoint.sh rootfs/usr/local/bin/pkmgr rootfs/usr/local/etc/docker/bin/ rootfs/usr/local/etc/docker/init.d/00-aria2c.sh rootfs/usr/local/etc/docker/init.d/zz-nginx.sh
This commit is contained in:
56
rootfs/usr/local/etc/docker/bin/start-aria2
Executable file
56
rootfs/usr/local/etc/docker/bin/start-aria2
Executable file
@@ -0,0 +1,56 @@
|
||||
#!/usr/bin/env bash
|
||||
# casjaysdevdocker/aria2 - launches aria2c (background) then nginx (foreground).
|
||||
#
|
||||
# Single command for the framework's EXEC_CMD_BIN slot. The framework only
|
||||
# reliably runs one init.d script, so we combine both services here.
|
||||
set -e
|
||||
|
||||
# Runtime dirs
|
||||
mkdir -p /run/aria2 /tmp/aria2 /data/logs/aria2 /data/logs/nginx \
|
||||
/data/downloads/aria2 /config/aria2 /config/nginx
|
||||
chmod 1777 /tmp/aria2 2>/dev/null || true
|
||||
|
||||
# Resolve binaries
|
||||
ARIA2C_BIN="$(command -v aria2c || true)"
|
||||
NGINX_BIN="$(command -v nginx || echo /usr/sbin/nginx)"
|
||||
[ -x "$ARIA2C_BIN" ] || { echo "aria2c not found in PATH" >&2; exit 2; }
|
||||
[ -x "$NGINX_BIN" ] || { echo "nginx not found at $NGINX_BIN" >&2; exit 3; }
|
||||
|
||||
# Locate aria2.conf — prefer /config/aria2/aria2.conf (user-editable),
|
||||
# fall back to /etc/aria2/aria2.conf.
|
||||
ARIA2_CONF=""
|
||||
for c in /config/aria2/aria2.conf /etc/aria2/aria2.conf; do
|
||||
if [ -f "$c" ]; then ARIA2_CONF="$c"; break; fi
|
||||
done
|
||||
[ -n "$ARIA2_CONF" ] || { echo "aria2.conf not found" >&2; exit 4; }
|
||||
|
||||
# Ensure session file exists (aria2c errors if --input-file is set but missing)
|
||||
if grep -q '^input-file=' "$ARIA2_CONF" 2>/dev/null; then
|
||||
session_file="$(grep '^input-file=' "$ARIA2_CONF" | head -1 | cut -d= -f2-)"
|
||||
[ -n "$session_file" ] && [ ! -f "$session_file" ] && touch "$session_file" 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# Locate nginx.conf
|
||||
NGINX_CONF=""
|
||||
for c in /config/nginx/nginx.conf /etc/nginx/nginx.conf; do
|
||||
if [ -f "$c" ]; then NGINX_CONF="$c"; break; fi
|
||||
done
|
||||
[ -n "$NGINX_CONF" ] || { echo "nginx.conf not found" >&2; exit 5; }
|
||||
|
||||
# Start aria2c in background (only if not already running)
|
||||
if ! pgrep -x aria2c >/dev/null 2>&1; then
|
||||
"$ARIA2C_BIN" --conf-path="$ARIA2_CONF" \
|
||||
>>/data/logs/aria2/aria2c.log 2>>/data/logs/aria2/aria2c-err.log &
|
||||
# wait up to 15s for the RPC port (default 6800)
|
||||
rpc_port="$(grep '^rpc-listen-port=' "$ARIA2_CONF" 2>/dev/null | head -1 | cut -d= -f2-)"
|
||||
rpc_port="${rpc_port:-6800}"
|
||||
i=0
|
||||
while ! (netstat -tnlp 2>/dev/null || ss -tnlp 2>/dev/null) | grep -q ":${rpc_port}\b" && [ $i -lt 15 ]; do
|
||||
sleep 1
|
||||
i=$((i + 1))
|
||||
done
|
||||
fi
|
||||
|
||||
# nginx in foreground (nginx.conf must have daemon off; for daemon-off mode the
|
||||
# framework's & wrapping still works — the wrapper process just stays bound to nginx).
|
||||
exec "$NGINX_BIN" -c "$NGINX_CONF"
|
||||
Reference in New Issue
Block a user