基于 aria2 Docker Compose + AriaNg 搭建 24/7 私有下载中心
构建高性能、全天候运行的无头 (Headless) aria2 下载引擎。整合现代响应式 AriaNg Web 控制面板、每日自动注入最新 BT Tracker 优质节点,并在 Linux、群晖 Synology、威联通 QNAP 与 Unraid 上持久化运行。
1. 三层容器化微服务架构
生产环境的 aria2 Docker 体系由三个运行在轻量 Alpine 容器中的互联模块组成:
1. 核心下载引擎 (aria2-pro)
增强版 aria2 守护进程,具备高 IOPS 内存写缓存、多协议支持(HTTP/FTP/BT/Metalink),并在 6800 端口监听 WebSocket JSON-RPC。
2. 自动 Tracker 节点同步
后台定时任务每天从 GitHub 抓取最新活跃 BT 优质 Tracker 列表,自动写入配置,彻底告别 0 KB/s 死链,最大化并发 Swarm 节点。
3. AriaNg WebUI 前端面板
零服务器负载的现代化 HTML5 响应式控制台,监听 6880 端口,完美适配手机、平板与电脑随时随地管理下载。
2. 生产级 docker-compose.yml 配置文件
将以下完整配置保存为 docker-compose.yml 存放在你的专属部署目录(如 /opt/aria2/ 或 /volume1/docker/aria2/):
version: '3.8'
services:
aria2-pro:
container_name: aria2-pro
image: p3terx/aria2-pro:latest
restart: unless-stopped
logging:
driver: json-file
options:
max-size: 10m
max-file: "3"
environment:
- PUID=1000
- PGID=1000
- RPC_SECRET=YourSuperSecureToken99! # 替换为你自定义的强密码
- RPC_PORT=6800
- LISTEN_PORT=6888
- TRACKERS_AUTO_UPDATE=true # 每日自动拉取更新活跃 BT Trackers
- DISK_CACHE=64M # 分配 64MB 内存写缓存保护硬盘寿命
- IPV6_MODE=false # 若网络支持原生 IPv6 可设为 true
- TZ=UTC
volumes:
- ./aria2-config:/config # 持久化会话与脚本目录
- ./downloads:/downloads # 下载文件输出目标目录
ports:
- "6800:6800" # RPC WebSocket / HTTP API
- "6888:6888" # BitTorrent TCP peer discovery
- "6888:6888/udp" # BitTorrent DHT UDP peer discovery
ariang:
container_name: ariang
image: p3terx/ariang:latest
restart: unless-stopped
ports:
- "6880:6880" # WebUI Dashboard
depends_on:
- aria2-pro
核心环境变量技术解析:
PUID / PGID:设置下载文件的所有者与用户组权限,确保 Plex、Jellyfin、Emby、Sonarr、Radarr 与 Samba 共享能够无缝读写,杜绝权限拒绝报错。DISK_CACHE=64M:分配专属内存写缓冲区。消除对机械硬盘和 NAS 盘的频繁微小写入,成倍延长硬盘使用寿命。LISTEN_PORT=6888:专用的 BitTorrent 入站通信端口。在路由器上转发6888 TCP/UDP可获得公网 Connectable 极速做种与下载能力。
3. 多平台专属部署实战步骤
A. Linux 服务器 (Ubuntu / Debian / AlmaLinux / 树莓派)
创建持久化目录、分配权限并后台启动容器栈:
mkdir -p /opt/aria2/{aria2-config,downloads}
cd /opt/aria2
# Copy docker-compose.yml into /opt/aria2/
sudo chown -R 1000:1000 /opt/aria2
docker compose up -d
B. 群晖 NAS (Synology DSM 7.2+ Container Manager)
- 打开 File Station,创建目录:
/docker/aria2/config与/volume1/downloads。 - 打开 Container Manager → 项目 (Project) → 新增。
- 项目名称填
aria2,路径选/docker/aria2,来源选 创建 docker-compose.yml。 - 粘贴配置代码,确认下载目录映射路径无误后点击 完成 即可自动构建启动!
C. 威联通 QNAP Container Station 与 Unraid
在威联通 Container Station 中进入 应用程序 → 创建 并粘贴 Compose 文件。在 Unraid 中使用 Compose 插件或将 appdata 映射至 /mnt/user/appdata/aria2。
4. 安全远程公网访问与 HTTPS 反向代理
当你在公网通过 HTTPS(例如 https://aria2.yourdomain.com)访问 AriaNg 时,现代浏览器会因为 Mixed Content(混合内容策略) 阻断对 6800 端口未加密的请求。你必须配置 SSL WebSocket (WSS) 反向代理:
server {
listen 443 ssl http2;
server_name aria2.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
# 1. Route WebUI Frontend
location / {
proxy_pass http://127.0.0.1:6880;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
# 2. Route JSON-RPC Secure WebSocket (WSS)
location /jsonrpc {
proxy_pass http://127.0.0.1:6800/jsonrpc;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_read_timeout 86400;
}
}
5. 下载完成自动化动作(自动解压 / Rclone 网盘同步)
aria2 原生支持 on-download-complete 事件生命周期钩子。你可以配置下载完成后自动通过 Rclone 备份到云盘,或自动解压分卷压缩包:
事件钩子运行原理:
在 ./aria2-config/clean.sh 中,aria2 会自动传入 3 个位置参数:$1 (任务 GID)、$2 (文件数量)、$3 (首个文件路径)。你可在此编写 Telegram/企业微信机器人通知或网盘同步脚本。
6. 故障排查与运维诊断 (FAQ)
Q1: 如何查看 aria2 容器的实时运行日志?
执行命令 docker compose logs -f aria2-pro 即可实时查看连接状态、Tracker 自动更新日志与磁盘写入详情。
Q2: BitTorrent 下载速度显示 0 KB/s 或 DHT 显示 0 个节点怎么办?
排查方案: 确保已在路由器开放并映射了 6888 UDP 端口。通过下载热门 Ubuntu 官方镜像快速引导 DHT 节点,或直接访问我们的 Tracker 节点枢纽 手动更新节点。
Q3: 提示 "AriaNg disconnected" 或 RPC 连接失败?
排查方案: 打开 AriaNg 设置 → RPC 配置。确认 RPC 主机填写的是服务器 IP,端口为 6800(若走反向代理则为 443),且密钥与 Compose 中的 RPC_SECRET 完全一致。