Compare commits

..
5 Commits
Author SHA1 Message Date
junv-repo-bot 0c833f50a0 Update version 2025-11-28 00:25:25 +00:00
junvandGitHub e328617536 AI refinement (#250)
* AI refinement

* Refine aria2 config provided by AI
2025-11-28 11:17:23 +11:00
junv-repo-bot dc615fba31 Update version 2025-10-29 10:32:42 +00:00
junvandGitHub 7e8fd16bc9 Bump versions for Caddy, Filebrowser, Rclone, and Ariang (#249)
Updated version numbers for Caddy, Filebrowser, Rclone, and Ariang.
2025-10-29 21:15:36 +11:00
junvandGitHub 2429cb87d4 Update README.md 2025-07-01 10:51:39 +10:00
12 changed files with 151 additions and 534 deletions
-11
View File
@@ -1,11 +0,0 @@
# Reduce build context size
.git
.gitignore
*.md
LICENSE
*.png
*.json
heroku.yml
k8s-manifest.yaml
Dockerfile.optimized
.dockerignore
+1 -1
View File
@@ -1 +1 @@
6.2.2
6.4.0
+40 -4
View File
@@ -11,17 +11,53 @@ redir /rclone /rclone/ 301
redir /files /files/ 301
redir /ro /ro/ 301
reverse_proxy /rpc 127.0.0.1:6800
reverse_proxy /jsonrpc 127.0.0.1:6800
# Aria2 RPC with WebSocket support and timeouts
reverse_proxy /rpc 127.0.0.1:6800 {
transport http {
read_timeout 300s
write_timeout 300s
dial_timeout 30s
keepalive 90s
keepalive_idle_conns 10
max_conns_per_host 0
}
header_up X-Real-IP {remote_host}
header_up X-Forwarded-For {remote_host}
}
reverse_proxy /jsonrpc 127.0.0.1:6800 {
transport http {
read_timeout 300s
write_timeout 300s
dial_timeout 30s
keepalive 90s
keepalive_idle_conns 10
max_conns_per_host 0
}
header_up X-Real-IP {remote_host}
header_up X-Forwarded-For {remote_host}
}
route /rclone/* {
uri strip_prefix /rclone
reverse_proxy 127.0.0.1:5572
reverse_proxy 127.0.0.1:5572 {
transport http {
read_timeout 120s
write_timeout 120s
keepalive 60s
}
}
}
route /files/* {
uri strip_prefix /files
reverse_proxy 127.0.0.1:8080
reverse_proxy 127.0.0.1:8080 {
transport http {
read_timeout 120s
write_timeout 120s
keepalive 60s
}
}
}
route /ro/* {
-152
View File
@@ -1,152 +0,0 @@
# Multi-stage build - Build forego with golang
FROM golang:1.21-bullseye AS build-forego
RUN apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/*
WORKDIR /app
RUN git clone https://github.com/wahyd4/forego.git \
&& cd forego \
&& git checkout fix-go-mod \
&& go mod download \
&& CGO_ENABLED=0 GOOS=linux go build -a -ldflags '-extldflags "-static"' -o forego \
&& chmod +x forego
# Build stage for downloading and preparing binaries
FROM debian:stable-slim AS build-deps
# Set versions - centralized for easy updates
ARG CADDY_VERSION=2.9.1
ARG FILEBROWSER_VERSION=v2.32.0
ARG RCLONE_VERSION=v1.69.1
ARG ARIANG_VERSION=1.3.10
# Install build dependencies
RUN apt-get update && apt-get install -y \
wget \
curl \
unzip \
tar \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /tmp
# Detect architecture and download binaries
RUN case "$(dpkg --print-architecture)" in \
amd64) \
PLATFORM=linux-amd64; \
CADDY_FILE=caddy_${CADDY_VERSION}_linux_amd64.tar.gz; \
RCLONE_FILE=rclone-${RCLONE_VERSION}-linux-amd64.zip; \
;; \
armhf) \
PLATFORM=linux-armv7; \
CADDY_FILE=caddy_${CADDY_VERSION}_linux_armv7.tar.gz; \
RCLONE_FILE=rclone-${RCLONE_VERSION}-linux-arm-v7.zip; \
;; \
arm64) \
PLATFORM=linux-arm64; \
CADDY_FILE=caddy_${CADDY_VERSION}_linux_arm64.tar.gz; \
RCLONE_FILE=rclone-${RCLONE_VERSION}-linux-arm64.zip; \
;; \
*) \
echo "[ERROR] unsupported arch $(dpkg --print-architecture), exit now"; \
exit 1; \
;; \
esac \
&& mkdir -p /app/bin /app/www \
# Download Caddy
&& wget -O caddy.tar.gz "https://github.com/caddyserver/caddy/releases/download/v${CADDY_VERSION}/${CADDY_FILE}" \
&& tar -xzf caddy.tar.gz -C /app/bin \
# Download Filebrowser
&& wget -O filebrowser.tar.gz "https://github.com/filebrowser/filebrowser/releases/download/${FILEBROWSER_VERSION}/${PLATFORM}-filebrowser.tar.gz" \
&& tar -xzf filebrowser.tar.gz -C /app/bin \
# Download Rclone
&& wget -O rclone.zip "https://downloads.rclone.org/${RCLONE_VERSION}/${RCLONE_FILE}" \
&& unzip rclone.zip \
&& cp rclone-*/rclone /app/bin/ \
# Download AriaNg
&& wget -O ariang.zip "https://github.com/mayswind/AriaNg/releases/download/${ARIANG_VERSION}/AriaNg-${ARIANG_VERSION}.zip" \
&& unzip ariang.zip -d /app/www/aria2 \
# Download custom browse.html
&& wget -O /app/browse.html "https://raw.githubusercontent.com/glowinthedark/caddy-file-server-browse-extension/39e997c91539d0f04fcce53a3cb6605b2ae9e50c/browse.html" \
# Clean up downloads
&& rm -rf *.tar.gz *.zip rclone-*
# Final runtime stage - debian:stable-slim as requested
FROM debian:stable-slim
LABEL AUTHOR=Junv<wahyd4@gmail.com>
WORKDIR /app
# Runtime environment variables
ENV RPC_SECRET="" \
ENABLE_AUTH=false \
ENABLE_RCLONE=true \
DOMAIN=:80 \
ARIA2_USER=user \
ARIA2_PWD=password \
ARIA2_SSL=false \
ARIA2_EXTERNAL_PORT=80 \
PUID=1000 \
PGID=1000 \
CADDYPATH=/app \
RCLONE_CONFIG=/app/conf/rclone.conf \
XDG_DATA_HOME=/app/.caddy/data \
XDG_CONFIG_HOME=/app/.caddy/config \
XDG_CACHE_HOME=/app/.cache \
RCLONE_CONFIG_BASE64="" \
ENABLE_APP_CHECKER=true \
ENABLE_FILEBROWSER=true \
CADDY_LOG_LEVEL=INFO \
RCLONE_AUTO_UPLOAD_PROVIDER= \
RCLONE_AUTO_UPLOAD_REMOTE_PATH=/downloads \
RCLONE_AUTO_UPLOAD_FILE_MIN_SIZE=1K \
RCLONE_AUTO_UPLOAD_FILE_MAX_SIZE=100G \
FIX_DATA_VOLUME_PERMISSIONS=false \
CADDY_FILE_SERVER_BROWSE_HTML=/app/browse.html
# Install only essential runtime dependencies in a single layer
RUN apt-get update && apt-get install -y \
aria2 \
curl \
libcap2-bin \
runit \
&& groupadd -g 1000 junv \
&& useradd -u 1000 -g junv -m -s /bin/bash junv \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
# Copy pre-built binaries from build stages
COPY --from=build-deps /app/bin/* /usr/local/bin/
COPY --from=build-deps /app/www /usr/local/www/
COPY --from=build-deps /app/browse.html /app/
COPY --from=build-forego /app/forego/forego /app/
# Copy application files in minimal layers
COPY --chmod=755 aria2c.sh caddy.sh filebrowser.sh init.sh start.sh rclone.sh new-version-checker.sh /app/
COPY Procfile APP_VERSION /app/
COPY conf /app/conf/
COPY Caddyfile SecureCaddyfile HerokuCaddyfile /usr/local/caddy/
# Set up permissions and directories in single layer
RUN chmod +x /usr/local/bin/* \
&& mkdir -p /usr/local/www/aria2/Download \
&& chmod +rw /app/conf/aria2.session \
&& chmod -R 755 /usr/local/www/aria2 \
&& mkdir -p /data /data/cloud /app/.caddy /app/.cache/aria2 \
&& chown -R junv:junv /data /app/.caddy /app/.cache \
&& ln -s /data/cloud /app/cloud \
&& setcap cap_net_bind_service=+ep /usr/local/bin/caddy
# Volumes
VOLUME ["/app/conf", "/data", "/app/.cache"]
# Expose ports
EXPOSE 80 443 6881
# Health check
HEALTHCHECK --interval=30s --timeout=3s \
CMD curl -f http://localhost/ping || exit 1
CMD ["./start.sh"]
-158
View File
@@ -1,158 +0,0 @@
# Multi-stage build - Build forego with golang
FROM golang:1.21-alpine AS build-forego
RUN apk add --no-cache git
WORKDIR /app
RUN git clone https://github.com/wahyd4/forego.git \
&& cd forego \
&& git checkout fix-go-mod \
&& go mod download \
&& CGO_ENABLED=0 GOOS=linux go build -a -ldflags '-extldflags "-static"' -o forego \
&& chmod +x forego
# Build stage for downloading and preparing binaries
FROM alpine:3.19 AS build-deps
# Set versions - centralized for easy updates
ARG CADDY_VERSION=2.9.1
ARG FILEBROWSER_VERSION=v2.32.0
ARG RCLONE_VERSION=v1.69.1
ARG ARIANG_VERSION=1.3.10
# Install build dependencies
RUN apk add --no-cache \
wget \
unzip \
tar \
curl
WORKDIR /tmp
# Detect architecture and set platform variables
RUN case "$(arch)" in \
x86_64) \
PLATFORM=linux-amd64; \
CADDY_FILE=caddy_${CADDY_VERSION}_linux_amd64.tar.gz; \
RCLONE_FILE=rclone-${RCLONE_VERSION}-linux-amd64.zip; \
;; \
armv7l) \
PLATFORM=linux-armv7; \
CADDY_FILE=caddy_${CADDY_VERSION}_linux_armv7.tar.gz; \
RCLONE_FILE=rclone-${RCLONE_VERSION}-linux-arm-v7.zip; \
;; \
aarch64) \
PLATFORM=linux-arm64; \
CADDY_FILE=caddy_${CADDY_VERSION}_linux_arm64.tar.gz; \
RCLONE_FILE=rclone-${RCLONE_VERSION}-linux-arm64.zip; \
;; \
*) \
echo "[ERROR] unsupported arch $(arch), exit now"; \
exit 1; \
;; \
esac \
&& echo "PLATFORM=${PLATFORM}" > /tmp/platform.env \
&& echo "CADDY_FILE=${CADDY_FILE}" >> /tmp/platform.env \
&& echo "RCLONE_FILE=${RCLONE_FILE}" >> /tmp/platform.env
# Download and extract binaries
RUN . /tmp/platform.env \
&& mkdir -p /app/bin /app/www \
# Download Caddy
&& wget -O caddy.tar.gz "https://github.com/caddyserver/caddy/releases/download/v${CADDY_VERSION}/${CADDY_FILE}" \
&& tar -xzf caddy.tar.gz -C /app/bin \
# Download Filebrowser
&& wget -O filebrowser.tar.gz "https://github.com/filebrowser/filebrowser/releases/download/${FILEBROWSER_VERSION}/${PLATFORM}-filebrowser.tar.gz" \
&& tar -xzf filebrowser.tar.gz -C /app/bin \
# Download Rclone
&& wget -O rclone.zip "https://downloads.rclone.org/${RCLONE_VERSION}/${RCLONE_FILE}" \
&& unzip rclone.zip \
&& cp rclone-*/rclone /app/bin/ \
# Download AriaNg
&& wget -O ariang.zip "https://github.com/mayswind/AriaNg/releases/download/${ARIANG_VERSION}/AriaNg-${ARIANG_VERSION}.zip" \
&& unzip ariang.zip -d /app/www/aria2 \
# Download custom browse.html
&& wget -O /app/browse.html "https://raw.githubusercontent.com/glowinthedark/caddy-file-server-browse-extension/39e997c91539d0f04fcce53a3cb6605b2ae9e50c/browse.html" \
# Clean up
&& rm -rf *.tar.gz *.zip rclone-*
# Final runtime stage - use Alpine for minimal size
FROM alpine:3.19
LABEL AUTHOR=Junv<wahyd4@gmail.com>
WORKDIR /app
# Runtime environment variables
ENV RPC_SECRET="" \
ENABLE_AUTH=false \
ENABLE_RCLONE=true \
DOMAIN=:80 \
ARIA2_USER=user \
ARIA2_PWD=password \
ARIA2_SSL=false \
ARIA2_EXTERNAL_PORT=80 \
PUID=1000 \
PGID=1000 \
CADDYPATH=/app \
RCLONE_CONFIG=/app/conf/rclone.conf \
XDG_DATA_HOME=/app/.caddy/data \
XDG_CONFIG_HOME=/app/.caddy/config \
XDG_CACHE_HOME=/app/.cache \
RCLONE_CONFIG_BASE64="" \
ENABLE_APP_CHECKER=true \
ENABLE_FILEBROWSER=true \
CADDY_LOG_LEVEL=INFO \
RCLONE_AUTO_UPLOAD_PROVIDER= \
RCLONE_AUTO_UPLOAD_REMOTE_PATH=/downloads \
RCLONE_AUTO_UPLOAD_FILE_MIN_SIZE=1K \
RCLONE_AUTO_UPLOAD_FILE_MAX_SIZE=100G \
FIX_DATA_VOLUME_PERMISSIONS=false \
CADDY_FILE_SERVER_BROWSE_HTML=/app/browse.html
# Install runtime dependencies
RUN apk add --no-cache \
aria2 \
curl \
bash \
libcap \
runit \
shadow \
&& addgroup -g 1000 junv \
&& adduser -D -u 1000 -G junv -s /bin/bash junv \
&& rm -rf /var/cache/apk/*
# Copy pre-built binaries from build stage
COPY --from=build-deps /app/bin/* /usr/local/bin/
COPY --from=build-deps /app/www /usr/local/www/
COPY --from=build-deps /app/browse.html /app/
COPY --from=build-forego /app/forego/forego /app/
# Copy application files
COPY --chmod=755 aria2c.sh caddy.sh filebrowser.sh init.sh start.sh rclone.sh new-version-checker.sh /app/
COPY Procfile APP_VERSION /app/
COPY conf /app/conf/
COPY Caddyfile SecureCaddyfile HerokuCaddyfile /usr/local/caddy/
# Set up permissions and directories
RUN chmod +x /usr/local/bin/* \
&& mkdir -p /usr/local/www/aria2/Download \
&& chmod +rw /app/conf/aria2.session \
&& chmod -R 755 /usr/local/www/aria2 \
&& mkdir -p /data /data/cloud /app/.caddy /app/.cache/aria2 \
&& chown -R junv:junv /data /app/.caddy /app/.cache \
&& ln -s /data/cloud /app/cloud \
&& setcap cap_net_bind_service=+ep /usr/local/bin/caddy
# Volumes
VOLUME ["/app/conf", "/data", "/app/.cache"]
# Expose ports
EXPOSE 80 443 6881
# Health check
HEALTHCHECK --interval=30s --timeout=3s \
CMD curl -f http://localhost/ping || exit 1
CMD ["./start.sh"]
-83
View File
@@ -1,83 +0,0 @@
# Docker Image Size Optimization - Debian Base
## Current vs Optimized Comparison
### Original Dockerfile Issues:
1. **Download during runtime**: Large binaries downloaded during build
2. **Package manager waste**: No cleanup of apt caches
3. **Multiple layers**: Inefficient RUN command structure
4. **Unused build tools**: wget, unzip, tar remain in final image
5. **Redundant user setup**: User creation mixed with package installation
### Debian-Optimized Improvements:
#### 1. **Multi-Stage Build Enhancement**
- **Build stage**: Downloads all binaries (Caddy, Filebrowser, Rclone, AriaNg)
- **Runtime stage**: Only copies needed binaries
- **Result**: Removes ~50MB of download tools and temporary files
#### 2. **Layer Optimization**
```dockerfile
# BEFORE: Multiple RUN commands
RUN apt update
RUN apt install -y ...
RUN wget ...
RUN tar -zxf ...
RUN rm ...
# AFTER: Single optimized RUN command
RUN apt-get update && apt-get install -y ... \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
```
#### 3. **Package Management**
- Removed unnecessary packages (git, tar, unzip, wget from runtime)
- Proper cleanup: `apt-get clean + rm -rf /var/lib/apt/lists/*`
- **Size reduction**: ~30-40MB from package manager cleanup
#### 4. **Architecture Detection Improvement**
- Uses `dpkg --print-architecture` (Debian-native)
- More reliable than `arch` command
- Consistent with Debian ecosystem
#### 5. **File Organization**
- Pre-download all binaries in build stage
- Use `COPY --chmod=755` to reduce layers
- Single permissions setup RUN command
### Expected Size Reduction:
- **Conservative estimate**: 20-30% smaller (e.g., 400MB → 280-320MB)
- **Main savings**:
- Build tools removal: ~50MB
- Package cache cleanup: ~30-40MB
- Layer optimization: ~10-20MB
- Download deduplication: ~20MB
### Preserved Features:
✅ Same debian:stable-slim base image
✅ Multi-architecture support (amd64, armhf, arm64)
✅ All runtime functionality
✅ User permission handling
✅ Environment variables
✅ Health checks and volumes
### Risk Assessment:
- **Low risk**: No base image change
- **Low risk**: Same runtime dependencies
- **Low risk**: Improved build process only
- **Medium benefit**: Significant size reduction without compatibility issues
## Testing Commands:
```bash
# Build and compare
./compare-builds.sh
# Test functionality
docker run -d -p 6800:80 aria2-debian-optimized:latest
curl http://localhost:6800/ping
# Check final image size
docker images | grep aria2
```
+7 -6
View File
@@ -6,7 +6,7 @@ English | [简体中文](https://github.com/wahyd4/aria2-ariang-docker/blob/mast
[![Docker Pulls](https://img.shields.io/docker/pulls/wahyd4/aria2-ui.svg)](https://hub.docker.com/r/wahyd4/aria2-ui/)
[![Github Build](https://github.com/wahyd4/aria2-ariang-docker/actions/workflows/dockerimage.yml/badge.svg)](https://github.com/wahyd4/aria2-ariang-docker/actions)
[![Page Views Count](https://badges.toozhao.com/svg/aria2-ariang-docker)](https://badges.toozhao.com/stats/aria2-ariang-docker "Page Views Count")
![Page Views Count](https://badges.toozhao.com/svg/aria2-ariang-docker)
@@ -75,7 +75,8 @@ File Browser
* Caddy File Server(Read Only) <http://yourip:8000/ro>
* FileManger: <http://yourip:8000/files>
* Rclone: <http://yourip:8000/rclone>
* Please use `admin`/`admin` as username and password to login `Filebrowser` for the first time. And use `user`/`password` to login `Rclone` if you don't update `ARIA2_USER` and `ARIA2_PWD`
* For the initial `admin` password of Filebrowser, please check the docker logs you should see something like `User 'admin' initialized with randomly generated password: xxx`, then use that password to login Filebrowser.
* And use `user`/`password` to login `Rclone` if you don't update `ARIA2_USER` and `ARIA2_PWD`
### Full features run
@@ -111,8 +112,8 @@ services:
image: wahyd4/aria2-ui:latest
environment:
- ENABLE_AUTH=true
- ARIA2_USER=hello
- ARIA2_PWD=world
- ARIA2_USER=user
- ARIA2_PWD=password
- DOMAIN=http://toozhao.com
ports:
- "80:80"
@@ -127,8 +128,8 @@ Then simply run `docker-compose up -d`, that's it!
| `ENABLE_AUTH` | Whether to enable Basic auth |
| `ENABLE_RCLONE` | Whether to disable Rclone, if you running this container offline or do not have stable connection to Github, please set to `false` |
| `ENABLE_FILEBROWSER` | Whether to disable Filebrowser, set it to `false` to disable it, by default it's enabled |
| `ARIA2_USER` | Basic Auth username, Rclone GUI uses it as well. |
| `ARIA2_PWD` | Basic Auth password, Rclone GUI uses it as well. |
| `ARIA2_USER` | Basic Auth username, Rclone GUI uses it as well. Default value: `user` |
| `ARIA2_PWD` | Basic Auth password, Rclone GUI uses it as well. Default value: `password` |
| `ARIA2_EXTERNAL_PORT` | The Aria2 port which exposed to public to access to |
| `PUID` | Bind Linux UID into container which means you can use non `root` user to manage downloaded files, default UID is `1000` |
| `PGID` | Bind Linux GID into container, default GID is 1000 |
+40 -4
View File
@@ -17,17 +17,53 @@ redir /rclone /rclone/ 301
redir /files /files/ 301
redir /ro /ro/ 301
reverse_proxy /rpc 127.0.0.1:6800
reverse_proxy /jsonrpc 127.0.0.1:6800
# Aria2 RPC with WebSocket support and timeouts
reverse_proxy /rpc 127.0.0.1:6800 {
transport http {
read_timeout 300s
write_timeout 300s
dial_timeout 30s
keepalive 90s
keepalive_idle_conns 10
max_conns_per_host 0
}
header_up X-Real-IP {remote_host}
header_up X-Forwarded-For {remote_host}
}
reverse_proxy /jsonrpc 127.0.0.1:6800 {
transport http {
read_timeout 300s
write_timeout 300s
dial_timeout 30s
keepalive 90s
keepalive_idle_conns 10
max_conns_per_host 0
}
header_up X-Real-IP {remote_host}
header_up X-Forwarded-For {remote_host}
}
route /rclone/* {
uri strip_prefix /rclone
reverse_proxy 127.0.0.1:5572
reverse_proxy 127.0.0.1:5572 {
transport http {
read_timeout 120s
write_timeout 120s
keepalive 60s
}
}
}
route /files/* {
uri strip_prefix /files
reverse_proxy 127.0.0.1:8080
reverse_proxy 127.0.0.1:8080 {
transport http {
read_timeout 120s
write_timeout 120s
keepalive 60s
}
}
}
route /ro/* {
-42
View File
@@ -1,42 +0,0 @@
#!/bin/bash
echo "Building and comparing Docker images..."
# Build original image
echo "Building original image..."
docker build -f Dockerfile -t aria2-original:latest .
# Build Debian-optimized image
echo "Building Debian-optimized image..."
docker build -f Dockerfile.debian-optimized -t aria2-debian-optimized:latest .
# Build Alpine-optimized image
echo "Building Alpine-optimized image..."
docker build -f Dockerfile.optimized -t aria2-alpine-optimized:latest .
# Compare sizes
echo ""
echo "=== IMAGE SIZE COMPARISON ==="
echo "Original image:"
docker images aria2-original:latest --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}"
echo ""
echo "Debian-optimized image:"
docker images aria2-debian-optimized:latest --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}"
echo ""
echo "Alpine-optimized image:"
docker images aria2-alpine-optimized:latest --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}"
echo ""
echo "=== DETAILED LAYER ANALYSIS ==="
echo "Original layers:"
docker history aria2-original:latest --format "table {{.CreatedBy}}\t{{.Size}}"
echo ""
echo "Debian-optimized layers:"
docker history aria2-debian-optimized:latest --format "table {{.CreatedBy}}\t{{.Size}}"
echo ""
echo "Alpine-optimized layers:"
docker history aria2-alpine-optimized:latest --format "table {{.CreatedBy}}\t{{.Size}}"
+59 -7
View File
@@ -14,7 +14,7 @@ rpc-listen-all=true
#RPC端口, 仅当默认端口被占用时修改
#rpc-listen-port=6800
#最大同时下载数(任务数), 路由建议值: 3
max-concurrent-downloads=5
max-concurrent-downloads=3
#种子最小分享率
seed-ratio=100.0
#断点续传
@@ -24,7 +24,8 @@ max-connection-per-server=5
#最小文件分片大小, 下载线程数上限取决于能分出多少片, 对于小文件重要
min-split-size=10M
#单文件最大线程数, 路由建议值: 5
split=10
# 降低到5以减少并发连接数 (3任务×5连接×5线程=75个连接,比之前的250少很多)
split=5
#下载速度限制
max-overall-download-limit=0
#单文件速度限制
@@ -41,12 +42,14 @@ max-upload-limit=0
# dir=/user-files/superuser/
dir=/data
#文件缓存, 使用内置的文件缓存, 如果你不相信Linux内核文件缓存和磁盘内置缓存时使用, 需要1.16及以上版本
#disk-cache=0
# 启用16MB磁盘缓存以提高性能
disk-cache=16M
#另一种Linux文件缓存方式, 使用前确保您使用的内核支持此选项, 需要1.15及以上版本(?)
#enable-mmap=true
#文件预分配, 能有效降低文件碎片, 提高磁盘性能. 缺点是预分配时间较长
#所需时间 none < falloc ? trunc « prealloc, falloc和trunc需要文件系统和内核支持
file-allocation=prealloc
# 改用falloc,比prealloc快很多,同时保持较好的性能
file-allocation=falloc
# disable IPV6 by default
disable-ipv6=true
@@ -56,6 +59,32 @@ log=/var/log/aria2.log
#You can set either debug, info, notice, warn or error.
log-level=warn
# 超时和重试设置
# 连接超时时间(秒)
connect-timeout=60
# 超时时间(秒)
timeout=60
# 最大重试次数,0表示不限制
max-tries=5
# 重试等待时间(秒)
retry-wait=10
# HTTP/FTP 选项
# HTTP/FTP 最大连接数
max-connection-per-server=5
# 允许 HTTP/FTP 分片下载
allow-piece-length-change=true
# 允许覆盖已存在的文件
allow-overwrite=false
# 自动重命名
auto-file-renaming=true
# 优化网络性能
# URI 选择器,adaptive 会根据速度自动选择最快的服务器
uri-selector=adaptive
# 服务器状态保存间隔(秒)
server-stat-of=/app/.cache/aria2_server_stat
server-stat-timeout=86400
## Related to save downloading progress ##
# 从会话文件中读取下载任务
@@ -66,7 +95,7 @@ save-session=/app/conf/aria2.session
save-session-interval=10
# BT trackers from https://trackerslist.com/best.txt updated on 2021-06-06
bt-tracker=http://1337.abcvg.info:80/announce,http://nyaa.tracker.wf:7777/announce,http://opentracker.xyz:80/announce,http://rt.tace.ru:80/announce,http://share.camoe.cn:8080/announce,http://t.nyaatracker.com:80/announce,http://torrentsmd.com:8080/announce,http://tr.cili001.com:8070/announce,http://tracker-cdn.moeking.me:2095/announce,http://tracker.anirena.com:80/announce,http://tracker.anirena.com:80/b16a15d9a238d1f59178d3614b857290/announce,http://tracker.anonwebz.xyz:8080/announce,http://tracker.bt4g.com:2095/announce,http://tracker.files.fm:6969/announce,http://tracker.gbitt.info:80/announce,http://tracker.ipv6tracker.ru:80/announce,http://tracker.noobsubs.net:80/announce,http://tracker.shittyurl.org:80/announce,http://tracker.tfile.co:80/announce,http://tracker.tfile.me:80/announce,http://tracker.trackerfix.com:80/announce,http://vps02.net.orel.ru:80/announce,https://1337.abcvg.info:443/announce,https://tr.torland.ga:443/announce,https://tracker.coalition.space:443/announce,https://tracker.gbitt.info:443/announce,https://tracker.lilithraws.cf:443/announce,https://tracker.nanoha.org:443/announce,https://tracker.nitrix.me:443/announce,https://tracker.parrotsec.org:443/announce,https://tracker.shittyurl.org:443/announce,https://tracker.tamersunion.org:443/announce,https://w.wwwww.wtf:443/announce,udp://6rt.tace.ru:80/announce,udp://9.rarbg.com:2830/announce,udp://9.rarbg.me:2710/announce,udp://9.rarbg.to:2710/announce,udp://app.icon256.com:8000/announce,udp://bubu.mapfactor.com:6969/announce,udp://discord.heihachi.pw:6969/announce,udp://exodus.desync.com:6969/announce,udp://explodie.org:6969/announce,udp://fe.dealclub.de:6969/announce,udp://inferno.demonoid.is:3391/announce,udp://ipv6.tracker.zerobytes.xyz:16661/announce,udp://mail.realliferpg.de:6969/announce,udp://movies.zsw.ca:6969/announce,udp://mts.tvbit.co:6969/announce,udp://open.demonii.com:1337/announce,udp://open.stealth.si:80/announce,udp://opentor.org:2710/announce,udp://opentracker.i2p.rocks:6969/announce,udp://p4p.arenabg.ch:1337/announce,udp://p4p.arenabg.com:1337/announce,udp://pow7.com:80/announce,udp://retracker.hotplug.ru:2710/announce,udp://retracker.lanta-net.ru:2710/announce,udp://retracker.netbynet.ru:2710/announce,udp://retracker01-msk-virt.corbina.net:80/announce,udp://t1.leech.ie:1337/announce,udp://t2.leech.ie:1337/announce,udp://thetracker.org:80/announce,udp://torrentclub.online:54123/announce,udp://tracker-de.ololosh.space:6969/announce,udp://tracker.0x.tf:6969/announce,udp://tracker.altrosky.nl:6969/announce,udp://tracker.army:6969/announce,udp://tracker.beeimg.com:6969/announce,udp://tracker.birkenwald.de:6969/announce,udp://tracker.blacksparrowmedia.net:6969/announce,udp://tracker.breizh.pm:6969/announce,udp://tracker.ccp.ovh:6969/announce,udp://tracker.cyberia.is:6969/announce,udp://tracker.dler.com:6969/announce,udp://tracker.internetwarriors.net:1337/announce,udp://tracker.moeking.me:6969/announce,udp://tracker.nrx.me:6969/announce,udp://tracker.ololosh.space:6969/announce,udp://tracker.openbittorrent.com:6969/announce,udp://tracker.opentrackr.org:1337/announce,udp://tracker.shkinev.me:6969/announce,udp://tracker.theoks.net:6969/announce,udp://tracker.tiny-vps.com:6969/announce,udp://tracker.torrent.eu.org:451/announce,udp://tracker.uw0.xyz:6969/announce,udp://tracker.zerobytes.xyz:1337/announce,udp://tracker0.ufibox.com:6969/announce,udp://tracker1.bt.moack.co.kr:80/announce,udp://tracker1.itzmx.com:8080/announce,udp://tracker2.dler.com:80/announce,udp://tracker2.dler.org:80/announce,udp://tracker2.itzmx.com:6961/announce,udp://tracker3.itzmx.com:6961/announce,udp://tracker4.itzmx.com:2710/announce,udp://u.wwwww.wtf:1/announce,udp://valakas.rollo.dnsabr.com:2710/announce,udp://vibe.community:6969/announce,udp://wassermann.online:6969/announce,udp://www.torrent.eu.org:451/announce
bt-tracker=http://1337.abcvg.info:80/announce,http://aboutbeautifulgallopinghorsesinthegreenpasture.online:80/announce,http://bt.okmp3.ru:2710/announce,http://echostar.ddnsfree.com:8080/announce,http://ipv4.rer.lol:2710/announce,http://ipv6.rer.lol:6969/announce,http://lucke.fenesisu.moe:6969/announce,http://nyaa.tracker.wf:7777/announce,http://t-backup.213891.xyz:80/announce,http://tk.greedland.net:80/announce,http://torrentsmd.com:8080/announce,http://tr.highstar.shop:80/announce,http://tracker.beeimg.com:6969/announce,http://tracker.bt4g.com:2095/announce,http://tracker.dhitechnical.com:6969/announce,http://tracker.mywaifu.best:6969/announce,http://tracker.renfei.net:8080/announce,http://tracker.tritan.gg:8080/announce,http://www.all4nothin.net:80/announce.php,http://www.wareztorrent.com:80/announce,https://1337.abcvg.info:443/announce,https://shahidrazi.online:443/announce,https://t.213891.xyz:443/announce,https://torrent.tracker.durukanbal.com:443/announce,https://tr.abiir.top:443/announce,https://tr.abir.ga:443/announce,https://tr.nyacat.pw:443/announce,https://tracker.alaskantf.com:443/announce,https://tracker.belmult.online:443/announce,https://tracker.foreverpirates.co:443/announce,https://tracker.ghostchu-services.top:443/announce,https://tracker.kuroy.me:443/announce,https://tracker.moeblog.cn:443/announce,https://tracker.pmman.tech:443/announce,https://tracker.qingwa.pro:443/announce,https://tracker.uraniumhexafluori.de:443/announce,https://tracker.yemekyedim.com:443/announce,https://tracker.zhuqiy.com:443/announce,https://tracker1.520.jp:443/announce,udp://anna.bt.bontal.net:6969/announce,udp://d40969.acod.regrucolo.ru:6969/announce,udp://evan.im:6969/announce,udp://exodus.desync.com:6969/announce,udp://extracker.dahrkael.net:6969/announce,udp://hificode.in:6969/announce,udp://martin-gebhardt.eu:25/announce,udp://open-tracker.demonoid.ch:6969/announce,udp://open.demonii.com:1337/announce,udp://open.demonoid.ch:6969/announce,udp://open.stealth.si:80/announce,udp://opentor.org:2710/announce,udp://opentracker.io:6969/announce,udp://p4p.arenabg.com:1337/announce,udp://public.demonoid.ch:6969/announce,udp://retracker.hotplug.ru:2710/announce,udp://retracker.lanta.me:2710/announce,udp://retracker01-msk-virt.corbina.net:80/announce,udp://run.publictracker.xyz:6969/announce,udp://torrentclub.online:54123/announce,udp://tr4ck3r.duckdns.org:6969/announce,udp://tracker.dler.com:6969/announce,udp://tracker.dler.org:6969/announce,udp://tracker.ducks.party:1984/announce,udp://tracker.fnix.net:6969/announce,udp://tracker.gmi.gd:6969/announce,udp://tracker.opentrackr.org:1337/announce,udp://tracker.playground.ru:6969/announce,udp://tracker.plx.im:6969/announce,udp://tracker.qu.ax:6969/announce,udp://tracker.skyts.net:6969/announce,udp://tracker.srv00.com:6969/announce,udp://tracker.theoks.net:6969/announce,udp://tracker.torrent.eu.org:451/announce,udp://tracker.tryhackx.org:6969/announce,udp://tracker.tvunderground.org.ru:3218/announce,udp://tracker1.myporn.club:9337/announce,udp://tracker2.dler.org:80/announce,udp://udp.tracker.projectk.org:23333/announce,udp://wepzone.net:6969/announce,udp://www.torrent.eu.org:451/announce,wss://tracker.openwebtorrent.com:443/announce
# The script to be run when download completes
#on-download-complete=/app/conf/aria2-sample-hook.sh
@@ -75,8 +104,31 @@ on-download-complete=/app/conf/auto-upload.sh
# The script to be run when download fails
on-download-error=/app/conf/aria2-sample-hook.sh
## DHT
## BT/DHT 优化
# 启用本地节点查找
bt-enable-lpd=true
# 启用 DHT 功能
enable-dht=true
# 启用 DHT6IPv6 DHT
#enable-dht6=false
# BT 监听端口
listen-port=6881-6999
# DHT 监听端口
dht-listen-port=6881
# DHT 入口节点
dht-entry-point=dht.transmissionbt.com:6881
dht-entry-point=dht.vuze.com:6881
dht-entry-point=dht.libtorrent.org:25401
dht-listen-port=6881
# DHT 文件
dht-file-path=/app/.cache/dht.dat
dht-file-path6=/app/.cache/dht6.dat
# BT 最大连接数
bt-max-peers=50
# BT 请求的 peer 数量
bt-request-peer-speed-limit=50K
# 继续之前的BT任务时不进行hash检查
bt-seed-unverified=true
# BT tracker 的最大连接超时时间
bt-tracker-connect-timeout=10
# BT tracker 超时时间
bt-tracker-timeout=10
+4 -4
View File
@@ -2,10 +2,10 @@
echo "[INFO] Set variables for $(arch)"
caddy_version=2.9.1
filebrowser_version=v2.32.0
rclone_version=v1.69.1
ariang_version=1.3.10
caddy_version=2.10.2
filebrowser_version=v2.44.2
rclone_version=v1.71.2
ariang_version=1.3.11
case "$(arch)" in
-62
View File
@@ -1,62 +0,0 @@
#!/bin/bash
echo "Testing Debian-optimized Docker image functionality..."
# Build the optimized image
echo "Building debian-optimized image..."
docker build -f Dockerfile.debian-optimized -t aria2-test:latest .
if [ $? -ne 0 ]; then
echo "❌ Build failed!"
exit 1
fi
echo "✅ Build successful!"
# Start container in background
echo "Starting container..."
docker run -d --name aria2-test-container -p 6800:80 -p 6881:6881 aria2-test:latest
# Wait for startup
echo "Waiting for services to start..."
sleep 10
# Test health endpoint
echo "Testing health endpoint..."
if curl -f http://localhost:6800/ping >/dev/null 2>&1; then
echo "✅ Health check passed!"
else
echo "❌ Health check failed!"
echo "Container logs:"
docker logs aria2-test-container
docker rm -f aria2-test-container
exit 1
fi
# Test AriaNg interface
echo "Testing AriaNg interface..."
if curl -f http://localhost:6800/ >/dev/null 2>&1; then
echo "✅ AriaNg interface accessible!"
else
echo "❌ AriaNg interface not accessible!"
fi
# Test aria2 RPC
echo "Testing aria2 RPC..."
if curl -f http://localhost:6800/jsonrpc >/dev/null 2>&1; then
echo "✅ Aria2 RPC accessible!"
else
echo "❌ Aria2 RPC not accessible!"
fi
# Show final image size
echo ""
echo "=== Final Image Size ==="
docker images aria2-test:latest --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}"
# Cleanup
echo ""
echo "Cleaning up test container..."
docker rm -f aria2-test-container
echo "✅ Functionality test completed!"