From 5f3d232f3a7d74bd7c3d12bef12698b18823b8e4 Mon Sep 17 00:00:00 2001 From: Junv Zhao Date: Sat, 13 Jul 2019 13:16:16 +1000 Subject: [PATCH] Using forogo to manage mutliple processes --- Dockerfile | 23 +++++++++++++---------- Procfile | 3 +++ aria2c.sh | 25 ++++++------------------- arm32.Dockerfile | 18 ++++++++++-------- arm64.Dockerfile | 20 +++++++++++--------- caddy.sh | 12 ++++++++++++ conf/aria2.conf | 4 ++-- 7 files changed, 57 insertions(+), 48 deletions(-) create mode 100644 Procfile mode change 100644 => 100755 aria2c.sh create mode 100755 caddy.sh diff --git a/Dockerfile b/Dockerfile index 938fe90..39c296a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,38 +2,41 @@ FROM alpine:edge LABEL AUTHOR=Junv -WORKDIR /root +WORKDIR /app ENV RPC_SECRET=Hello ENV ENABLE_AUTH=false ENV DOMAIN=0.0.0.0:80 ENV ARIA2_USER=user ENV ARIA2_PWD=password +ENV SSL=false RUN apk update \ - && apk add wget bash curl openrc gnupg screen aria2 tar --no-cache + && apk add wget bash curl openrc gnupg aria2 tar --no-cache RUN curl https://getcaddy.com | bash -s personal RUN curl -fsSL https://filebrowser.xyz/get.sh | bash +RUN wget -N https://bin.equinox.io/c/ekMN3bCZFUn/forego-stable-linux-amd64.tgz && tar -zxvf forego-stable-linux-amd64.tgz && rm -rf forego-stable-linux-amd64.tgz RUN mkdir -p /usr/local/www && mkdir -p /usr/local/www/aria2 -ADD conf /root/conf -COPY aria2c.sh /root +ADD conf /app/conf +COPY aria2c.sh caddy.sh Procfile /app/ COPY Caddyfile SecureCaddyfile /usr/local/caddy/ # AriaNg RUN mkdir /usr/local/www/aria2/Download && cd /usr/local/www/aria2 \ - && chmod +rw /root/conf/aria2.session \ + && chmod +rw /app/conf/aria2.session \ && version=1.1.0 \ && wget -N --no-check-certificate https://github.com/mayswind/AriaNg/releases/download/${version}/AriaNg-${version}.zip && unzip AriaNg-${version}.zip && rm -rf AriaNg-${version}.zip \ && chmod -R 755 /usr/local/www/aria2 \ - && chmod +x /root/aria2c.sh + && sed -i 's/6800/80/g' /usr/local/www/aria2/js/aria-ng*.js -#The folder to store ssl keys -VOLUME /root/conf/key -# User downloaded files +# folder for storing ssl keys +VOLUME /app/conf/key + +# file downloading folder VOLUME /data EXPOSE 80 443 -CMD ["/bin/sh", "/root/aria2c.sh" ] +CMD ["./forego", "start" ] diff --git a/Procfile b/Procfile new file mode 100644 index 0000000..d31d296 --- /dev/null +++ b/Procfile @@ -0,0 +1,3 @@ +filebrowser: /usr/local/bin/filebrowser -p 8080 -d /app/filebrowser.db -r /data +caddy: /app/caddy.sh +aria2c: /app/aria2c.sh diff --git a/aria2c.sh b/aria2c.sh old mode 100644 new mode 100755 index 0e7ce48..6e87149 --- a/aria2c.sh +++ b/aria2c.sh @@ -1,30 +1,17 @@ #! /bin/bash -eu -echo "Run aria2c and ariaNG" -if [ "$ENABLE_AUTH" = "true" ]; then - echo "Using Basic Auth config file " - CADDY_FILE=/usr/local/caddy/SecureCaddyfile -else - echo "Using caddy without Basic Auth" - CADDY_FILE=/usr/local/caddy/Caddyfile -fi - if [ "$SSL" = "true" ]; then echo "Start aria2 with secure config" -/usr/bin/aria2c --conf-path="/root/conf/aria2.conf" -D \ ---enable-rpc --rpc-listen-all \ ---rpc-certificate=/root/conf/key/aria2.crt \ ---rpc-private-key=/root/conf/key/aria2.key \ +/usr/bin/aria2c --conf-path="/app/conf/aria2.conf" \ +--enable-rpc --rpc-listen-all \ +--rpc-certificate=/app/conf/key/aria2.crt \ +--rpc-private-key=/app/conf/key/aria2.key \ --rpc-secret="$RPC_SECRET" --rpc-secure \ -&& (nohup sh -c "/usr/local/bin/filebrowser -p 8080 -d /root/filebrowser.db -l /var/log/file-browser/out.log -r /data" &)\ -&& /usr/local/bin/caddy -quic --conf ${CADDY_FILE} else echo "Start aria2 with standard mode" -/usr/bin/aria2c --conf-path="/root/conf/aria2.conf" -D \ ---enable-rpc --rpc-listen-all \ -&& (nohup sh -c "/usr/local/bin/filebrowser -p 8080 -d /root/filebrowser.db -l /var/log/file-browser/out.log -r /data" &)\ -&& /usr/local/bin/caddy -quic --conf ${CADDY_FILE} +/usr/bin/aria2c --conf-path="/app/conf/aria2.conf" --enable-rpc --rpc-listen-all + fi diff --git a/arm32.Dockerfile b/arm32.Dockerfile index c2b9127..3e4e015 100644 --- a/arm32.Dockerfile +++ b/arm32.Dockerfile @@ -2,38 +2,40 @@ FROM arm32v6/alpine:edge LABEL AUTHOR=Junv -WORKDIR /root +WORKDIR /app ENV RPC_SECRET=Hello ENV ENABLE_AUTH=false ENV DOMAIN=0.0.0.0:80 ENV ARIA2_USER=user ENV ARIA2_PWD=password +ENV SSL=false RUN apk update \ - && apk add wget bash curl openrc gnupg screen aria2 tar --no-cache + && apk add wget bash curl openrc gnupg aria2 tar --no-cache RUN curl https://getcaddy.com | bash -s personal RUN curl -fsSL https://filebrowser.xyz/get.sh | bash +RUN wget -N https://bin.equinox.io/c/ekMN3bCZFUn/forego-stable-linux-arm.tgz && tar -zxvf forego-stable-linux-arm.tgz && rm -rf forego-stable-linux-arm.tgz RUN mkdir -p /usr/local/www && mkdir -p /usr/local/www/aria2 -ADD conf /root/conf -COPY aria2c.sh /root +ADD conf /app/conf +COPY aria2c.sh caddy.sh Procfile /app/ COPY Caddyfile SecureCaddyfile /usr/local/caddy/ # AriaNg RUN mkdir /usr/local/www/aria2/Download && cd /usr/local/www/aria2 \ - && chmod +rw /root/conf/aria2.session \ + && chmod +rw /app/conf/aria2.session \ && version=1.1.0 \ && wget -N --no-check-certificate https://github.com/mayswind/AriaNg/releases/download/${version}/AriaNg-${version}.zip && unzip AriaNg-${version}.zip && rm -rf AriaNg-${version}.zip \ && chmod -R 755 /usr/local/www/aria2 \ - && chmod +x /root/aria2c.sh + && sed -i 's/6800/80/g' /usr/local/www/aria2/js/aria-ng*.js #The folder to store ssl keys -VOLUME /root/conf/key +VOLUME /app/conf/key # User downloaded files VOLUME /data EXPOSE 80 443 -CMD ["/bin/sh", "/root/aria2c.sh" ] +CMD ["./forego", "start" ] diff --git a/arm64.Dockerfile b/arm64.Dockerfile index 4417f20..d275fee 100644 --- a/arm64.Dockerfile +++ b/arm64.Dockerfile @@ -1,39 +1,41 @@ -FROM arm64v8/alpine:edge +FROM arm64v8/alpine:3.8 LABEL AUTHOR=Junv -WORKDIR /root +WORKDIR /app ENV RPC_SECRET=Hello ENV ENABLE_AUTH=false ENV DOMAIN=0.0.0.0:80 ENV ARIA2_USER=user ENV ARIA2_PWD=password +ENV SSL=false RUN apk update \ - && apk add wget bash curl openrc gnupg screen aria2 tar --no-cache + && apk add wget bash curl openrc gnupg aria2 tar --no-cache RUN curl https://getcaddy.com | bash -s personal RUN curl -fsSL https://filebrowser.xyz/get.sh | bash +RUN wget -N https://bin.equinox.io/c/ekMN3bCZFUn/forego-stable-linux-arm64.tgz && tar -zxvf forego-stable-linux-arm64.tgz && rm -rf forego-stable-linux-arm64.tgz RUN mkdir -p /usr/local/www && mkdir -p /usr/local/www/aria2 -ADD conf /root/conf -COPY aria2c.sh /root +ADD conf /app/conf +COPY aria2c.sh caddy.sh Procfile /app/ COPY Caddyfile SecureCaddyfile /usr/local/caddy/ # AriaNg RUN mkdir /usr/local/www/aria2/Download && cd /usr/local/www/aria2 \ - && chmod +rw /root/conf/aria2.session \ + && chmod +rw /app/conf/aria2.session \ && version=1.1.0 \ && wget -N --no-check-certificate https://github.com/mayswind/AriaNg/releases/download/${version}/AriaNg-${version}.zip && unzip AriaNg-${version}.zip && rm -rf AriaNg-${version}.zip \ && chmod -R 755 /usr/local/www/aria2 \ - && chmod +x /root/aria2c.sh + && sed -i 's/6800/80/g' /usr/local/www/aria2/js/aria-ng*.js #The folder to store ssl keys -VOLUME /root/conf/key +VOLUME /app/conf/key # User downloaded files VOLUME /data EXPOSE 80 443 -CMD ["/bin/sh", "/root/aria2c.sh" ] +CMD ["./forego", "start" ] diff --git a/caddy.sh b/caddy.sh new file mode 100755 index 0000000..a7db240 --- /dev/null +++ b/caddy.sh @@ -0,0 +1,12 @@ +#! /bin/bash -eu + +echo "Run aria2c and ariaNG" +if [ "$ENABLE_AUTH" = "true" ]; then + echo "Using Basic Auth config file " + export CADDY_FILE=/usr/local/caddy/SecureCaddyfile +else + echo "Using caddy without Basic Auth" + export CADDY_FILE=/usr/local/caddy/Caddyfile +fi + +/usr/local/bin/caddy -quic --conf ${CADDY_FILE} diff --git a/conf/aria2.conf b/conf/aria2.conf index 1176a10..dabe787 100644 --- a/conf/aria2.conf +++ b/conf/aria2.conf @@ -57,9 +57,9 @@ log-level=notice ## 进度保存相关 ## # 从会话文件中读取下载任务 -input-file=/root/conf/aria2.session +input-file=/app/conf/aria2.session # 在Aria2退出时保存`错误/未完成`的下载任务到会话文件 -save-session=/root/conf/aria2.session +save-session=/app/conf/aria2.session # 定时保存会话, 0为退出时才保存, 需1.16.1以上版本, 默认:0 save-session-interval=10