Browse Source

aria2 improvements

John 3 years ago
parent
commit
6bd035380f

+ 88 - 13
.github/workflows/aria2-Tags-buildx.yml

@@ -11,8 +11,9 @@ env:
   AriaNg_VER: 1.2.3
 
 jobs:
-  buildx:
-    runs-on: ubuntu-20.04
+  job1:
+    name: buildx amd64
+    runs-on: ubuntu-18.04
     steps:
       - name: Checkout
         uses: actions/checkout@v1
@@ -40,18 +41,34 @@ jobs:
         with:
           context: ./aria2
           file: ./aria2/Dockerfile
-          platforms: linux/amd64,linux/arm/v7,linux/arm64
+          platforms: linux/amd64
           push: true
-          tags: johngong/aria2:${{ env.ARIA2_VER }}
+          tags: johngong/aria2:${{ env.ARIA2_VER }}-${{ env.AriaNg_VER }}_amd64
 
-      - name: Build and push
-        uses: docker/build-push-action@v2
+  job2:
+    name: buildx arm64
+    runs-on: ubuntu-18.04
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v1
+
+      - name: Set up QEMU
+        id: qemu
+        uses: docker/setup-qemu-action@v1
         with:
-          context: ./aria2
-          file: ./aria2/Dockerfile
-          platforms: linux/amd64
-          push: true
-          tags: johngong/aria2:${{ env.ARIA2_VER }}_amd64
+          platforms: all
+
+      - name: Set up Docker Buildx
+        id: buildx
+        uses: docker/setup-buildx-action@v1
+        with:
+          version: latest
+
+      - name: Login to DockerHub
+        uses: docker/login-action@v1
+        with:
+          username: ${{ secrets.DOCKER_USERNAME }}
+          password: ${{ secrets.DOCKER_PASSWORD }}
 
       - name: Build and push
         uses: docker/build-push-action@v2
@@ -60,7 +77,32 @@ jobs:
           file: ./aria2/Dockerfile
           platforms: linux/arm64
           push: true
-          tags: johngong/aria2:${{ env.ARIA2_VER }}_arm64v8
+          tags: johngong/aria2:${{ env.ARIA2_VER }}-${{ env.AriaNg_VER }}_arm64v8
+
+  job3:
+    name: buildx arm32v7
+    runs-on: ubuntu-18.04
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v1
+
+      - name: Set up QEMU
+        id: qemu
+        uses: docker/setup-qemu-action@v1
+        with:
+          platforms: all
+
+      - name: Set up Docker Buildx
+        id: buildx
+        uses: docker/setup-buildx-action@v1
+        with:
+          version: latest
+
+      - name: Login to DockerHub
+        uses: docker/login-action@v1
+        with:
+          username: ${{ secrets.DOCKER_USERNAME }}
+          password: ${{ secrets.DOCKER_PASSWORD }}
 
       - name: Build and push
         uses: docker/build-push-action@v2
@@ -69,7 +111,40 @@ jobs:
           file: ./aria2/Dockerfile
           platforms: linux/arm/v7
           push: true
-          tags: johngong/aria2:${{ env.ARIA2_VER }}_arm32v7
+          tags: johngong/aria2:${{ env.ARIA2_VER }}-${{ env.AriaNg_VER }}_arm32v7
+
+  job4:
+    needs: [job1, job2, job3]
+    name: version tag
+    runs-on: ubuntu-18.04
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v1
+
+      - name: Set up QEMU
+        id: qemu
+        uses: docker/setup-qemu-action@v1
+        with:
+          platforms: all
+
+      - name: Set up Docker Buildx
+        id: buildx
+        uses: docker/setup-buildx-action@v1
+        with:
+          version: latest
+
+      - name: Login to DockerHub
+        uses: docker/login-action@v1
+        with:
+          username: ${{ secrets.DOCKER_USERNAME }}
+          password: ${{ secrets.DOCKER_PASSWORD }}
+
+      - name: create version tag
+        run: |
+          docker buildx imagetools create -t johngong/aria2:${{ env.ARIA2_VER }}-${{ env.AriaNg_VER }} \
+            johngong/aria2:${{ env.ARIA2_VER }}-${{ env.AriaNg_VER }}_amd64 \
+            johngong/aria2:${{ env.ARIA2_VER }}-${{ env.AriaNg_VER }}_arm64v8 \
+            johngong/aria2:${{ env.ARIA2_VER }}-${{ env.AriaNg_VER }}_arm32v7
 
       - name: Docker Hub Description
         uses: peter-evans/dockerhub-description@v2

+ 106 - 12
.github/workflows/aria2-buildx.yml

@@ -8,8 +8,9 @@ on:
   workflow_dispatch:
 
 jobs:
-  buildx:
-    runs-on: ubuntu-20.04
+  job1:
+    name: buildx amd64
+    runs-on: ubuntu-18.04
     steps:
       - name: Checkout
         uses: actions/checkout@v1
@@ -37,14 +38,107 @@ jobs:
         with:
           context: ./aria2
           file: ./aria2/Dockerfile
-          platforms: linux/amd64,linux/arm/v7,linux/arm64
+          platforms: linux/amd64
           push: true
-          tags: johngong/aria2:latest
-
-      - name: Docker Hub Description
-        uses: peter-evans/dockerhub-description@v2
-        env:
-         DOCKERHUB_USERNAME: ${{ secrets.DOCKER_USERNAME }}
-         DOCKERHUB_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
-         DOCKERHUB_REPOSITORY: johngong/aria2
-         README_FILEPATH: ./aria2/README.md
+          tags: johngong/aria2:amd64-latest
+
+  job2:
+    name: buildx arm64
+    runs-on: ubuntu-18.04
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v1
+
+      - name: Set up QEMU
+        id: qemu
+        uses: docker/setup-qemu-action@v1
+        with:
+          platforms: all
+
+      - name: Set up Docker Buildx
+        id: buildx
+        uses: docker/setup-buildx-action@v1
+        with:
+          version: latest
+
+      - name: Login to DockerHub
+        uses: docker/login-action@v1
+        with:
+          username: ${{ secrets.DOCKER_USERNAME }}
+          password: ${{ secrets.DOCKER_PASSWORD }}
+
+      - name: Build and push
+        uses: docker/build-push-action@v2
+        with:
+          context: ./aria2
+          file: ./aria2/Dockerfile
+          platforms: linux/arm64
+          push: true
+          tags: johngong/aria2:arm64v8-latest
+
+  job3:
+    name: buildx arm32v7
+    runs-on: ubuntu-18.04
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v1
+
+      - name: Set up QEMU
+        id: qemu
+        uses: docker/setup-qemu-action@v1
+        with:
+          platforms: all
+
+      - name: Set up Docker Buildx
+        id: buildx
+        uses: docker/setup-buildx-action@v1
+        with:
+          version: latest
+
+      - name: Login to DockerHub
+        uses: docker/login-action@v1
+        with:
+          username: ${{ secrets.DOCKER_USERNAME }}
+          password: ${{ secrets.DOCKER_PASSWORD }}
+
+      - name: Build and push
+        uses: docker/build-push-action@v2
+        with:
+          context: ./aria2
+          file: ./aria2/Dockerfile
+          platforms: linux/arm/v7
+          push: true
+          tags: johngong/aria2:arm32v7-latest
+
+  job4:
+    needs: [job1, job2, job3]
+    name: latest tag
+    runs-on: ubuntu-18.04
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v1
+
+      - name: Set up QEMU
+        id: qemu
+        uses: docker/setup-qemu-action@v1
+        with:
+          platforms: all
+
+      - name: Set up Docker Buildx
+        id: buildx
+        uses: docker/setup-buildx-action@v1
+        with:
+          version: latest
+
+      - name: Login to DockerHub
+        uses: docker/login-action@v1
+        with:
+          username: ${{ secrets.DOCKER_USERNAME }}
+          password: ${{ secrets.DOCKER_PASSWORD }}
+
+      - name: create latest tag
+        run: |
+          docker buildx imagetools create -t johngong/aria2:latest \
+            johngong/aria2:amd64-latest \
+            johngong/aria2:arm64v8-latest \
+            johngong/aria2:arm32v7-latest

+ 60 - 49
aria2/Dockerfile

@@ -1,66 +1,77 @@
-FROM alpine:3.14 as compilingaria2c
+FROM alpine:3.15 as compilingaria2c
 
 #compiling aria2c
 
-ARG  ARIA2_VER=1.36.0
-
-
-RUN  apk add --no-cache ca-certificates make g++ gcc file cppunit-dev zlib-dev openssl-dev expat-dev sqlite-dev c-ares-dev libssh2-dev  \
-&&   mkdir /aria2c  \
-&&   wget -P /aria2c   https://github.com/aria2/aria2/releases/download/release-${ARIA2_VER}/aria2-${ARIA2_VER}.tar.gz  \
-&&   tar  -zxvf  /aria2c/aria2-${ARIA2_VER}.tar.gz  -C    /aria2c  \
-&&   cd  /aria2c/aria2-${ARIA2_VER}  \
-&&   sed  -i  's/"1", 1, 16/"1", 1, 128/g'          src/OptionHandlerFactory.cc    \
-&&   sed  -i  's/"20M", 1_m, 1_g/"4k", 1_k, 1_g/g'  src/OptionHandlerFactory.cc    \
-&&   if [ "$(uname -m)" = "x86_64" ];then host=x86_64-alpine-linux-musl;elif [ "$(uname -m)" = "aarch64" ];then host=aarch64-alpine-linux-musl;elif [ "$(uname -m)" = "armv7l" ];then host=armv7-alpine-linux-musleabihf; fi  \
-&&   ./configure --without-libxml2  --without-gnutls --with-openssl  --host=$host   \
-&&   make install-strip   \
-&&   ldd /usr/local/bin/aria2c   |cut -d ">" -f 2|grep lib|cut -d "(" -f 1|xargs tar -chvf /aria2c/aria2c.tar  \
-&&   mkdir /aria2  \
-&&   tar  -xvf /aria2c/aria2c.tar  -C /aria2   \
-&&   cp --parents /usr/local/bin/aria2c /aria2
+ARG ARIA2_VER=1.36.0
 
+RUN apk add --no-cache build-base ca-certificates gnutls-dev expat-dev sqlite-dev c-ares-dev cppunit-dev zlib-dev libssh2-dev \
+&& mkdir /aria2build \
+&& wget -P /aria2build https://github.com/aria2/aria2/releases/download/release-${ARIA2_VER}/aria2-${ARIA2_VER}.tar.gz \
+&& tar -zxvf /aria2build/aria2-${ARIA2_VER}.tar.gz -C /aria2build \
+&& cd /aria2build/aria2-${ARIA2_VER} \
+&& sed -i 's/"1", 1, 16/"32", 1, 128/g' src/OptionHandlerFactory.cc \
+&& sed -i 's/"20M", 1_m, 1_g/"2M", 1_k, 1_g/g' src/OptionHandlerFactory.cc \
+&& sed -i 's/"1M", 1_m, 1_g/"1M", 1_k, 1_g/g' src/OptionHandlerFactory.cc \
+&& if [ "$(uname -m)" = "x86_64" ];then host=x86_64-alpine-linux-musl;elif [ "$(uname -m)" = "aarch64" ];then host=aarch64-alpine-linux-musl;elif [ "$(uname -m)" = "armv7l" ];then host=armv7-alpine-linux-musleabihf; fi \
+&& ./configure --disable-nls --with-ca-bundle=/etc/ssl/certs/ca-certificates.crt --host=$host \
+&& make -j2 install-strip \
+&& mkdir /aria2 \
+&& cp --parents /usr/local/bin/aria2c /aria2
 
 # docker aria2
+FROM alpine:3.15
 
+ARG AriaNg_VER=1.2.3
+ARG S6_VER=2.2.0.3
 
-FROM alpine:3.14
-
-ARG  AriaNg_VER=1.2.3
-ARG  S6_VER=2.2.0.3
-
-ENV RPC_SECRET=
-ENV SECRETAUTO=YES
-ENV TRACKERSAUTO=YES
-ENV TZ=Asia/Shanghai
-ENV UID=0
-ENV GID=0
+ENV UID=1000
+ENV GID=1000
 ENV UMASK=022
-ENV TRACKERS_LIST_URL=https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all.txt
+ENV TZ=Asia/Shanghai
+ENV ARIA2_RPC_SECRET=
+ENV ARIA2_RPC_LISTEN_PORT=6800
+ENV ARIA2_LISTEN_PORT=6881
+ENV ARIA2_TRACKERS_UPDATE_AUTO=true
+ENV ARIA2_TRACKERS_LIST_URL=https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all.txt
+ENV ARIA2_CONF_LANGUAGE=zh_Hans
+ENV ARIANG_RPC_SECRET_AUTO=true
+ENV ARIANG_RPC_LISTEN_PORT_AUTO=true
 
-COPY  root /
-COPY --from=compilingaria2c  /aria2  /
+COPY root /
+COPY --from=compilingaria2c /aria2 /
 
-# install bash  darkhttpd tzdata s6 overlay AriaNg aria2 shadow
-RUN apk add --no-cache bash  curl ca-certificates  darkhttpd  tzdata shadow \
-&& if [ "$(uname -m)" = "x86_64" ];then s6_arch=amd64;elif [ "$(uname -m)" = "aarch64" ];then s6_arch=aarch64;elif [ "$(uname -m)" = "armv7l" ];then s6_arch=arm; fi  \
-&& wget --no-check-certificate https://github.com/just-containers/s6-overlay/releases/download/v${S6_VER}/s6-overlay-${s6_arch}.tar.gz  \
-&& tar -xvzf s6-overlay-${s6_arch}.tar.gz  \
-&& rm s6-overlay-${s6_arch}.tar.gz   \
-&& rm -rf /var/cache/apk/*  \
+# install bash darkhttpd tzdata s6 overlay AriaNg aria2 shadow
+RUN apk add --no-cache bash curl ca-certificates darkhttpd tzdata shadow c-ares expat gmp gnutls sqlite-libs libstdc++ libssh2 \
+&& if [ "$(uname -m)" = "x86_64" ];then s6_arch=amd64;elif [ "$(uname -m)" = "aarch64" ];then s6_arch=aarch64;elif [ "$(uname -m)" = "armv7l" ];then s6_arch=arm; fi \
+&& wget --no-check-certificate https://github.com/just-containers/s6-overlay/releases/download/v${S6_VER}/s6-overlay-${s6_arch}.tar.gz \
+&& tar -xvzf s6-overlay-${s6_arch}.tar.gz \
 #create aria2 user
-&&  useradd -u 1000 -U -d /config -s /bin/false aria2   \
-&&  usermod -G users aria2   \
+&& useradd -u 1000 -U -d /config -s /bin/false aria2 \
+&& usermod -G users aria2 \
+# install AriaNg
+&& wget https://github.com/mayswind/AriaNg/releases/download/${AriaNg_VER}/AriaNg-${AriaNg_VER}.zip \
+&& mkdir -p /usr/local/aria2/AriaNg/js/defaultsjs \
+&& unzip -d /usr/local/aria2/AriaNg AriaNg-${AriaNg_VER}.zip \
+#modify js
+#max-connection-per-server
+&& sed -i 's/max:16/max:128/g' /usr/local/aria2/AriaNg/js/aria-ng* \
+#min-split-size
+&& sed -i 's/defaultValue:"20M"/defaultValue:"2M"/g' /usr/local/aria2/AriaNg/js/aria-ng* \
+#piece-length
+&& sed -i 's/'\(M\|m\)'/'\(K\|k\|M\|m\)'/g' /usr/local/aria2/AriaNg/js/aria-ng* \
+#cp aria-ng* to defaultsjs
+&& cp /usr/local/aria2/AriaNg/js/aria-ng* /usr/local/aria2/AriaNg/js/defaultsjs \
+#conf trackers
+&& curl -so /tmp/trackers_all.txt $ARIA2_TRACKERS_LIST_URL \
+&& Newtrackers="bt-tracker=`awk NF /tmp/trackers_all.txt|sed ":a;N;s/\n/,/g;ta"`" \
+&& sed -i 's@bt-tracker=@'"$Newtrackers"'@g' /usr/local/aria2/defaults/aria2.conf \
 #
-&& wget https://github.com/mayswind/AriaNg/releases/download/${AriaNg_VER}/AriaNg-${AriaNg_VER}.zip  \
-&& mkdir -p /usr/local/aria2/AriaNg/js/Originaljs \
-&& unzip -d /usr/local/aria2/AriaNg    AriaNg-${AriaNg_VER}.zip  \
-&& rm  AriaNg-${AriaNg_VER}.zip \
-&& cp /usr/local/aria2/AriaNg/js/aria-ng* /usr/local/aria2/AriaNg/js/Originaljs \
-&& chmod a+x /usr/local/bin/aria2c   \
+&& rm s6-overlay-${s6_arch}.tar.gz AriaNg-${AriaNg_VER}.zip \
+&& rm -rf /var/cache/apk/* \
+#
+&& chmod a+x /usr/local/bin/aria2c \
 && chmod a+x /usr/local/aria2/updatetrackers.sh
 
-
 VOLUME /Downloads /config
-EXPOSE 6800  8080  6881  6881/udp
+EXPOSE 6800 8080 6881 6881/udp
 ENTRYPOINT [ "/init" ]

+ 0 - 60
aria2/Dockerfile.amd64

@@ -1,60 +0,0 @@
-FROM alpine:3.11 as compilingaria2c
-
-#compiling aria2c
-
-ARG  ARIA2_VER=1.35.0
-
-
-RUN  apk add --no-cache ca-certificates make g++ gcc file cppunit-dev zlib-dev openssl-dev expat-dev sqlite-dev c-ares-dev libssh2-dev  \
-&&   mkdir /aria2c  \
-&&   wget -P /aria2c   https://github.com/aria2/aria2/releases/download/release-${ARIA2_VER}/aria2-${ARIA2_VER}.tar.gz  \
-&&   tar  -zxvf  /aria2c/aria2-${ARIA2_VER}.tar.gz  -C    /aria2c  \
-&&   cd  /aria2c/aria2-${ARIA2_VER}  \
-&&   sed  -i  's/"1", 1, 16/"1", 1, 128/g'          src/OptionHandlerFactory.cc    \
-&&   sed  -i  's/"20M", 1_m, 1_g/"4k", 1_k, 1_g/g'  src/OptionHandlerFactory.cc    \
-&&   ./configure --without-libxml2  --without-gnutls --with-openssl  --host=x86_64-alpine-linux-musl   \
-&&   make install-strip   \
-&&   ldd /usr/local/bin/aria2c   |cut -d ">" -f 2|grep lib|cut -d "(" -f 1|xargs tar -chvf /aria2c/aria2c.tar  \
-&&   mkdir /aria2  \
-&&   tar  -xvf /aria2c/aria2c.tar  -C /aria2   \
-&&   cp --parents /usr/local/bin/aria2c /aria2
-
-
-# docker aria2 
- 
-
-FROM alpine:3.11
-
-ARG  AriaNg_VER=1.1.6
-ARG  S6_VER=1.22.1.0
-
-ENV RPC_SECRET=
-ENV SECRETAUTO=YES
-ENV TRACKERSAUTO=YES
-ENV TZ=Asia/Shanghai
-
-
-
-COPY  root /
-COPY --from=compilingaria2c  /aria2  /
-
-# install bash  darkhttpd tzdata s6 overlay AriaNg aria2
-RUN apk add --no-cache bash  curl ca-certificates  darkhttpd  tzdata \
-&& wget  https://github.com/just-containers/s6-overlay/releases/download/v${S6_VER}/s6-overlay-amd64.tar.gz  \
-&& tar xvzf s6-overlay-amd64.tar.gz  \
-&& rm s6-overlay-amd64.tar.gz  \
-&& rm -rf /var/cache/apk/*  \
-&& wget https://github.com/mayswind/AriaNg/releases/download/${AriaNg_VER}/AriaNg-${AriaNg_VER}.zip  \
-&& mkdir -p /usr/local/aria2/AriaNg/js/Originaljs \ 
-&& unzip -d /usr/local/aria2/AriaNg    AriaNg-${AriaNg_VER}.zip  \
-&& rm  AriaNg-${AriaNg_VER}.zip \   
-&& cp /usr/local/aria2/AriaNg/js/aria-ng* /usr/local/aria2/AriaNg/js/Originaljs \ 
-&& chmod a+x /usr/local/bin/aria2c   \  
-&& chmod a+x /etc/cont-init.d/aria2c.sh \
-&& chmod a+x /etc/services.d/aria2  \
-&& chmod a+x /usr/local/aria2/updatetrackers.sh 
-
-
-VOLUME /Downloads /config
-EXPOSE 6800  80  6881  6881/udp
-ENTRYPOINT [ "/init" ]

+ 50 - 38
aria2/README.md

@@ -10,37 +10,41 @@
 
 |名称|版本|说明|
 |:-|:-|:-|
-|Aria2|1.36.0|amd64;arm64v8;arm32v7,修改线程数至128,默认32集成Trackers自动更新。|
+|Aria2|1.36.0|amd64;arm64v8;arm32v7,修改线程数至128,默认32集成Trackers自动更新。|
 |AriaNg|1.2.3|Aria2的web管理界面|
 
-### 注意
+### docker命令行设置
 
-1. docker启动会自动修复/config及/Downloads配置文件夹用户权限。请勿将对权限敏感的文件夹映射到此文件夹。
+* 变量名变更
 
-### docker命令行设置:
+    |版本|1|2|3|4|
+    |:-|:-|:-|:-|:-|
+    |1.36.0-1.2.3|ARIA2_RPC_SECRET|ARIANG_RPC_SECRET_AUTO|ARIA2_TRACKERS_UPDATE_AUTO|ARIA2_TRACKERS_LIST_URL|
+    |1.36.0及以前|RPC_SECRET|SECRETAUTO|TRACKERSAUTO|TRACKERS_LIST_URL|
 
 1. 下载镜像
 
-       docker pull   johngong/aria2:latest
+       docker pull johngong/aria2:latest
 
 2. 创建aria2容器
 
-        docker create  \
-           --name=aria2  \
-           -p 6881:6881  \
-           -p 6881:6881/udp  \
-           -p 6800:6800  \
-           -p 8080:8080  \
-           -e RPC_SECRET=不需要可不填 \
-           -e UID=0  \
-           -e GID=0  \
-           -e UMASK=022  \
-           -v /配置文件位置:/config  \
-           -v /下载位置:/Downloads  \
-           --restart unless-stopped  \
+        docker create \
+           --name=aria2 \
+           -p 6881:6881 \
+           -p 6881:6881/udp \
+           -p 6800:6800 \
+           -p 8080:8080 \
+           -e ARIA2_RPC_SECRET=不需要可不填 \
+           -e ARIA2_RPC_LISTEN_PORT=6800 \
+           -e ARIA2_LISTEN_PORT=6881 \
+           -e UID=1000 \
+           -e GID=1000 \
+           -e UMASK=022 \
+           -v /配置文件位置:/config \
+           -v /下载位置:/Downloads \
+           --restart unless-stopped \
            johngong/aria2:latest
 
-
 3. 运行
 
        docker start aria2
@@ -51,11 +55,11 @@
 
 5. 删除容器
 
-       docker rm  aria2
+       docker rm aria2
 
 6. 删除镜像
 
-       docker image rm  johngong/aria2:latest
+       docker image rm johngong/aria2:latest
 
 ### 变量:
 
@@ -63,19 +67,23 @@
 |:-|:-|
 | `--name=aria2` |容器名|
 | `-p 6881:6881` |BT下载监听端口|
-| `-p 6881:6881/udp` |BT下载DHT监听端口
-| `-p 8080:8080 ` | Aria2NG web访问端口 [IP:8080](IP:8080)|
+| `-p 6881:6881/udp` |BT下载DHT监听端口|
+| `-p 8080:8080 ` | AriaNG web访问端口|
 | `-p 6800:6800` |Aria2 RPC 默认端口|
 | `-v /配置文件位置:/config` |Aria2配置文件位置|
 | `-v /下载位置:/Downloads` |Aria2默认下载位置|
-| `-e RPC_SECRET=` |Aria2 RPC token值,默认为空|
-| `-e SECRETAUTO=YES` |添加Aria2NG里RPC连接设置中token值为设置的默认值,默认开启此功能|
-| `-e TRACKERSAUTO=YES` |自动更新Aria2的trackers,默认开启此功能|
-| `-e TZ=Asia/Shanghai` |系统时区设置,默认为Asia/Shanghai|
-| `-e UID=0` |uid设置,默认为0|
-| `-e GID=0` |gid设置,默认为0|
+| `-e UID=1000` |uid设置,默认为1000|
+| `-e GID=1000` |gid设置,默认为1000|
 | `-e UMASK=022` |umask设置,默认为022|
-| `-e TRACKERS_LIST_URL=` |trackers更新地址设置,仅支持ngosang格式,默认为 https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all.txt |
+| `-e TZ=Asia/Shanghai` |系统时区设置,默认为Asia/Shanghai|
+| `-e ARIA2_RPC_SECRET=` |Aria2 RPC token值,默认为空|
+| `-e ARIA2_RPC_LISTEN_PORT=6800` |Aria2 RPC 默认端口|
+| `-e ARIA2_LISTEN_PORT=6881` |BT下载及DHT监听端口|
+| `-e ARIA2_TRACKERS_UPDATE_AUTO=true` |(true\|false)自动更新Aria2的trackers,默认开启|
+| `-e ARIA2_TRACKERS_LIST_URL=` |trackers更新地址设置,仅支持ngosang格式,默认为 https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all.txt |
+| `-e ARIA2_CONF_LANGUAGE=zh_Hans` |(zh_Hans\|zh_Hant\|en)Aria2配置文件注释语言|
+| `-e ARIANG_RPC_SECRET_AUTO=true` |(true\|false)自动添加AriaNG里RPC连接中token值,默认开启|
+| `-e ARIANG_RPC_LISTEN_PORT_AUTO=true` |(true\|false)自动添加AriaNG里RPC连接中port值(本地与容器端口需一致),默认开启|
 
 ### 群晖docker设置:
 
@@ -93,17 +101,21 @@
 | `本地端口1:6881` |BT下载监听端口|
 | `本地端口2:6881/udp` |BT下载DHT监听端口|
 | `本地端口3:6800` |Aria2 RPC 默认端口|
-| `本地端口4:8080` |Aria2NG web访问端口 [IP:8080](IP:8080)|
+| `本地端口4:8080` |AriaNG web访问端口|
 
 3. 环境变量:
 
 |参数|说明|
 |:-|:-|
-| `RPC_SECRET=` |Aria2 RPC token值,默认为空|
-| `SECRETAUTO=YES` |添加Aria2NG里RPC连接设置中token值为设置的默认值,默认开启此功能|
-| `TRACKERSAUTO=YES` |自动更新Aria2的trackers,默认开启此功能|
-| `TZ=Asia/Shanghai` |系统时区设置,默认为Asia/Shanghai |
-| `UID=0` |uid设置,默认为0|
-| `GID=0` |gid设置,默认为0|
+| `UID=1000` |uid设置,默认为1000|
+| `GID=1000` |gid设置,默认为1000|
 | `UMASK=022` |umask设置,默认为022|
-| `TRACKERS_LIST_URL=` |trackers更新地址设置,仅支持ngosang格式,默认为 https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all.txt |
+| `TZ=Asia/Shanghai` |系统时区设置,默认为Asia/Shanghai|
+| `ARIA2_RPC_SECRET=` |Aria2 RPC token值,默认为空|
+| `ARIA2_RPC_LISTEN_PORT=6800` |Aria2 RPC 默认端口|
+| `ARIA2_LISTEN_PORT=6881` |BT下载及DHT监听端口|
+| `ARIA2_TRACKERS_UPDATE_AUTO=true` |(true\|false)自动更新Aria2的trackers,默认开启|
+| `ARIA2_TRACKERS_LIST_URL=` |trackers更新地址设置,仅支持ngosang格式,默认为 https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all.txt |
+| `ARIA2_CONF_LANGUAGE=zh_Hans` |(zh_Hans\|zh_Hant\|en)Aria2配置文件注释语言|
+| `ARIANG_RPC_SECRET_AUTO=true` |(true\|false)自动添加AriaNG里RPC连接中token值,默认开启|
+| `ARIANG_RPC_LISTEN_PORT_AUTO=true` |(true\|false)自动添加AriaNG里RPC连接中port值(本地与容器端口需一致),默认开启|

+ 91 - 19
aria2/root/etc/cont-init.d/aria2c.sh

@@ -1,35 +1,107 @@
 #! /usr/bin/with-contenv bash
 
-#检查自定义config位置文件
-
-if [ ! -e "/config/aria2.conf" ] ;  then
-  cp /usr/local/aria2/defaults/aria2.conf  /config/aria2.conf
+#检查config文件
+if [ ! -f /config/aria2.conf ]; then
+  cp /usr/local/aria2/defaults/aria2.conf /config/aria2.conf
+  if [ "$ARIA2_CONF_LANGUAGE" == "zh_Hant" ]; then
+    sed -i 's/\#zh_Hant//g' /config/aria2.conf
+    sed -i '/\#zh_Hans\#/d' /config/aria2.conf
+    sed -i '/\#en\#/d' /config/aria2.conf
+  elif [ "$ARIA2_CONF_LANGUAGE" == "en" ]; then
+    sed -i 's/\#en//g' /config/aria2.conf
+    sed -i '/\#zh_Han/d' /config/aria2.conf
+  else
+    sed -i 's/\#zh_Hans//g' /config/aria2.conf
+    sed -i '/\#zh_Hant\#/d' /config/aria2.conf
+    sed -i '/\#en\#/d' /config/aria2.conf
+  fi
 fi
 
-if [ ! -e "/config/aria2.session" ] ;  then
+#检查session文件
+if [ ! -f /config/aria2.session ]; then
   touch /config/aria2.session
 fi
 
-if [ ! -e "/config/dht.dat" ] ;  then
+#检查dht文件
+if [ ! -f /config/dht.dat ]; then
   touch /config/dht.dat
 fi
+if [ ! -f /config/dht6.dat ]; then
+  touch /config/dht6.dat
+fi
+
+#修改secret
+ARIA2_RPC_SECRET_CONF_VAL=$(grep ^rpc-secret= /config/aria2.conf | sed 's/\(.*\)=//g' | sed ":a;N;s/\n//g;ta")
+if [ -n "$ARIA2_RPC_SECRET" ]; then
+  if [ "$ARIA2_RPC_SECRET_CONF_VAL" != "$ARIA2_RPC_SECRET" ]; then
+    if [ `grep ^rpc-secret= /config/aria2.conf | wc -l` -gt 0 ]; then
+      sed -i 's/^rpc-secret='"$ARIA2_RPC_SECRET_CONF_VAL"'/rpc-secret='"$ARIA2_RPC_SECRET"'/g' /config/aria2.conf
+    else
+      sed -i '$arpc-secret='"$ARIA2_RPC_SECRET"'' /config/aria2.conf
+    fi
+  fi
+else
+  if [ ! -n "$ARIA2_RPC_SECRET_CONF_VAL" ] && [ `grep ^rpc-secret= /config/aria2.conf | wc -l` -gt 0 ]; then
+     sed -i 's/^rpc-secret=/\#rpc-secret=/g' /config/aria2.conf
+  fi
+fi
 
+#修改port
+#listen-port and dht-listen-port
+ARIA2_LISTEN_PORT_CONF_VAL=$(grep ^listen-port= /config/aria2.conf | sed 's/\(.*\)=//g' | sed ":a;N;s/\n//g;ta")
+ARIA2_DHT_LISTEN_PORT_CONF_VAL=$(grep ^dht-listen-port= /config/aria2.conf | sed 's/\(.*\)=//g' | sed ":a;N;s/\n//g;ta")
+if [ -n "$ARIA2_LISTEN_PORT" ] && ([ "$ARIA2_LISTEN_PORT_CONF_VAL" != "$ARIA2_LISTEN_PORT" ] || [ "$ARIA2_DHT_LISTEN_PORT_CONF_VAL" != "$ARIA2_LISTEN_PORT" ]); then
+  if [ `grep ^listen-port= /config/aria2.conf | wc -l` -gt 0 ]; then
+    sed -i 's/^listen-port='"$ARIA2_LISTEN_PORT_CONF_VAL"'/listen-port='"$ARIA2_LISTEN_PORT"'/g' /config/aria2.conf
+  else
+    sed -i '$alisten-port='"$ARIA2_LISTEN_PORT"'' /config/aria2.conf
+  fi
+  if [ `grep ^dht-listen-port= /config/aria2.conf | wc -l` -gt 0 ]; then
+    sed -i 's/^dht-listen-port='"$ARIA2_DHT_LISTEN_PORT_CONF_VAL"'/dht-listen-port='"$ARIA2_LISTEN_PORT"'/g' /config/aria2.conf
+  else
+    sed -i '$adht-listen-port='"$ARIA2_LISTEN_PORT"'' /config/aria2.conf
+  fi
+fi
 
+#rpc-listen-port
+ARIA2_RPC_LISTEN_PORT_CONF_VAL=$(grep ^rpc-listen-port= /config/aria2.conf | sed 's/\(.*\)=//g' | sed ":a;N;s/\n//g;ta")
+if [ -n "$ARIA2_RPC_LISTEN_PORT" ] && [ "$ARIA2_RPC_LISTEN_PORT_CONF_VAL" != "$ARIA2_RPC_LISTEN_PORT" ]; then
+  if [ `grep ^rpc-listen-port= /config/aria2.conf | wc -l` -gt 0 ]; then
+    sed -i 's/^rpc-listen-port='"$ARIA2_RPC_LISTEN_PORT_CONF_VAL"'/rpc-listen-port='"$ARIA2_RPC_LISTEN_PORT"'/g' /config/aria2.conf
+  else
+    sed -i '$arpc-listen-port='"$ARIA2_RPC_LISTEN_PORT"'' /config/aria2.conf
+  fi
+fi
 
-#修改AriaNg
-#cp原始js
-cp /usr/local/aria2/AriaNg/js/Originaljs/aria-ng* /usr/local/aria2/AriaNg/js/
-#替换js字符串(修改线程等设置限制。)
-sed -i 's/max:16/max:128/g' /usr/local/aria2/AriaNg/js/aria-ng*
-sed -i 's/defaultValue:"20M"/defaultValue:"4k"/g' /usr/local/aria2/AriaNg/js/aria-ng*
-if  [ "$SECRETAUTO" == "YES" ]; then
-#替换js字符串(添加设置的token值为默认。)
-  secret=`echo -n  $RPC_SECRET|base64`
-  sed -i 's/secret:""/secret:"'"$secret"'"/g'    /usr/local/aria2/AriaNg/js/aria-ng*
+#修改AriaNg替换js字符串(添加设置的token和rpcPort值为默认。)
+cp /usr/local/aria2/AriaNg/js/defaultsjs/aria-ng* /usr/local/aria2/AriaNg/js/
+if [ "$ARIANG_RPC_SECRET_AUTO" == "true" ]; then
+  if [ -n "$ARIA2_RPC_SECRET" ]; then
+    ARIA2_RPC_SECRET_ARIANg_VAL=`echo -n $ARIA2_RPC_SECRET|base64`
+    sed -i 's/secret:""/secret:"'"$ARIA2_RPC_SECRET_ARIANg_VAL"'"/g' /usr/local/aria2/AriaNg/js/aria-ng*
+  else
+    ARIA2_RPC_SECRET_CONF_VAL=$(grep ^rpc-secret= /config/aria2.conf | sed 's/\(.*\)=//g' | sed ":a;N;s/\n//g;ta")
+    if [ -n "$ARIA2_RPC_SECRET_CONF_VAL" ]; then
+      ARIA2_RPC_SECRET_ARIANg_VAL=`echo -n $ARIA2_RPC_SECRET_CONF_VAL|base64`
+      sed -i 's/secret:""/secret:"'"$ARIA2_RPC_SECRET_ARIANg_VAL"'"/g' /usr/local/aria2/AriaNg/js/aria-ng*
+    fi
+  fi
+fi
+if [ "$ARIANG_RPC_LISTEN_PORT_AUTO" == "true" ]; then
+  if [ -n "$ARIA2_RPC_LISTEN_PORT" ]; then
+    if [ "$ARIA2_RPC_LISTEN_PORT" != "6800" ]; then
+      sed -i 's/rpcPort:"6800"/rpcPort:"'"$ARIA2_RPC_LISTEN_PORT"'"/g' /usr/local/aria2/AriaNg/js/aria-ng*
+    fi
+  else
+    ARIA2_RPC_LISTEN_PORT_CONF_VAL=$(grep ^rpc-listen-port= /config/aria2.conf | sed 's/\(.*\)=//g' | sed ":a;N;s/\n//g;ta")
+    if [ -n "$ARIA2_RPC_LISTEN_PORT_CONF_VAL" ] && [ "$ARIA2_RPC_LISTEN_PORT_CONF_VAL" != "6800" ]; then
+      sed -i 's/rpcPort:"6800"/rpcPort:"'"$ARIA2_RPC_LISTEN_PORT_CONF_VAL"'"/g' /usr/local/aria2/AriaNg/js/aria-ng*
+    fi
+  fi
 fi
 
 #设定trackers更新任务
-if [ `grep  -c updatetrackers.sh /var/spool/cron/crontabs/root` -eq 0 ];then
+if [ `grep -c updatetrackers.sh /var/spool/cron/crontabs/root` -eq 0 ]; then
   echo "0       0       *       *       *       /usr/local/aria2/updatetrackers.sh" >> /var/spool/cron/crontabs/root
   echo trackers更新任务已设定。
 else
@@ -37,12 +109,12 @@ else
 fi
 
 #启动更新trackers。
-if [ "$TRACKERSAUTO" == "YES" ];then
+if [ "$ARIA2_TRACKERS_UPDATE_AUTO" == "true" ]; then
   /usr/local/aria2/updatetrackers.sh
 fi
 
 #设置时区
-ln -sf /usr/share/zoneinfo/$TZ   /etc/localtime
+ln -sf /usr/share/zoneinfo/$TZ /etc/localtime
 echo $TZ > /etc/timezone
 
 #修改用户UID GID

+ 2 - 7
aria2/root/etc/services.d/aria2/run

@@ -1,12 +1,7 @@
 #! /usr/bin/with-contenv bash
 
-
 #设置umask
 umask "$UMASK"
 
-# 启动aria2
-if [ ! -n "$RPC_SECRET" ] ;  then
-  exec s6-setuidgid aria2 aria2c --conf-path=/config/aria2.conf --enable-rpc --rpc-listen-all
-else
-  exec s6-setuidgid aria2 aria2c --conf-path=/config/aria2.conf --enable-rpc --rpc-listen-all --rpc-secret="$RPC_SECRET"
-fi
+#启动aria2
+exec s6-setuidgid aria2 aria2c --conf-path=/config/aria2.conf --enable-rpc --rpc-listen-all

+ 2 - 2
aria2/root/etc/services.d/darkhttpd/run

@@ -1,4 +1,4 @@
 #! /usr/bin/with-contenv bash
 
-# 启动darkhttpd
-exec s6-setuidgid aria2  darkhttpd /usr/local/aria2/AriaNg  --port 8080
+#启动darkhttpd
+exec s6-setuidgid aria2 darkhttpd /usr/local/aria2/AriaNg --port 8080

File diff suppressed because it is too large
+ 1691 - 124
aria2/root/usr/local/aria2/defaults/aria2.conf


+ 9 - 10
aria2/root/usr/local/aria2/updatetrackers.sh

@@ -1,21 +1,20 @@
 #! /bin/sh
 
-if [ "$TRACKERSAUTO" == "YES" ];then
-  curl -so  /tmp/trackers_all.txt $TRACKERS_LIST_URL
-  #wget -qP  /tmp  https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all.txt --no-check-certificate
-  Newtrackers="bt-tracker=`awk NF /tmp/trackers_all.txt|sed ":a;N;s/\n/,/g;ta"`"
-  Oldtrackers="`grep bt-tracker=  /config/aria2.conf`"
-  if [ -e "/tmp/trackers_all.txt" ] ;  then
-    if [ $Newtrackers == $Oldtrackers ];then
+if [ "$ARIA2_TRACKERS_UPDATE_AUTO" == "true" ]; then
+  curl -so /tmp/trackers_all.txt $ARIA2_TRACKERS_LIST_URL
+  if [ -e "/tmp/trackers_all.txt" ]; then
+    Newtrackers="bt-tracker=`awk NF /tmp/trackers_all.txt|sed ":a;N;s/\n/,/g;ta"`"
+    Oldtrackers="`grep bt-tracker= /config/aria2.conf`"
+    if [ $Newtrackers == $Oldtrackers ]; then
       echo trackers文件一样,不需要更新。
     else
-      sed -i 's@'"$Oldtrackers"'@'"$Newtrackers"'@g'   /config/aria2.conf
-      chown  aria2:aria2 /config/aria2.conf
+      sed -i 's@'"$Oldtrackers"'@'"$Newtrackers"'@g' /config/aria2.conf
+      chown aria2:aria2 /config/aria2.conf
       #kill aria2
       ps -ef |grep aria2.conf |grep -v grep|awk '{print $1}'|xargs kill -9
       echo 已更新trackers。
     fi
-    rm  /tmp/trackers_all.txt
+    rm /tmp/trackers_all.txt
   else
     echo 更新文件未正确下载,更新未成功,请检查网络。
   fi

Some files were not shown because too many files changed in this diff