├── baidunetdisk ├── icon │ ├── .gitignore │ └── baidunetdisk.png ├── root │ └── opt │ │ └── novnc │ │ └── .gitignore ├── startapp.sh ├── Dockerfile └── README.md ├── calibre-web ├── root │ ├── usr │ │ └── local │ │ │ ├── calibre-web │ │ │ └── defaults │ │ │ │ ├── .gitignore │ │ │ │ ├── app.db │ │ │ │ └── metadata.db │ │ │ └── calibre-server │ │ │ ├── useradd.sh │ │ │ ├── languagechange.sh │ │ │ └── defaults │ │ │ └── global.py │ └── etc │ │ └── services.d │ │ ├── calibre-web │ │ └── run │ │ ├── calibre-server │ │ └── run │ │ └── inotify │ │ └── run ├── Dockerfile.amd64 ├── Dockerfile-Limit ├── Dockerfile └── Dockerfile.CN ├── qiandao ├── root │ ├── usr │ │ └── local │ │ │ └── qiandao │ │ │ └── mailstarttls │ │ │ ├── .gitignore │ │ │ └── config.py │ └── etc │ │ ├── services.d │ │ └── qiandao │ │ │ └── run │ │ └── cont-init.d │ │ └── qiandao.sh ├── Dockerfile.amd64 ├── Dockerfile └── README.md ├── calibre-server ├── root │ ├── usr │ │ └── local │ │ │ └── calibre-server │ │ │ ├── defaults │ │ │ ├── .gitignore │ │ │ ├── metadata.db │ │ │ └── global.py │ │ │ ├── useradd.sh │ │ │ └── languagechange.sh │ └── etc │ │ ├── services.d │ │ └── calibre-server │ │ │ └── run │ │ └── cont-init.d │ │ └── calibre-server.sh ├── Dockerfile └── README.md ├── qBittorrent ├── root │ ├── usr │ │ └── local │ │ │ └── qbittorrent │ │ │ ├── defaults │ │ │ ├── Search │ │ │ │ ├── .gitignore │ │ │ │ ├── sukebei.py │ │ │ │ ├── magnetdl.py │ │ │ │ ├── yts_am.py │ │ │ │ ├── eztv.py │ │ │ │ ├── dmhyorg.py │ │ │ │ ├── elitetorrent.py │ │ │ │ ├── snowfl.py │ │ │ │ ├── torrentscsv.py │ │ │ │ ├── rarbg.py │ │ │ │ └── horriblesubs.py │ │ │ └── qBittorrent.conf │ │ │ └── updatetrackers.sh │ └── etc │ │ ├── services.d │ │ ├── cron │ │ │ └── run │ │ └── qBittorrent │ │ │ └── run │ │ └── cont-init.d │ │ └── qBittorrent.sh ├── Dockerfile.amd64 ├── Dockerfile.qee.amd64 ├── Dockerfile.qee.aarch64 ├── Dockerfile.aarch64 ├── Dockerfile.qee.aarch32 ├── Dockerfile.aarch32 ├── Dockerfile ├── Dockerfile.qee └── README.md ├── kms ├── root │ └── etc │ │ ├── services.d │ │ └── vlmcsd │ │ │ └── run │ │ ├── darkhttpd │ │ └── run │ │ └── cont-init.d │ │ └── kms.sh ├── Dockerfile.amd64 ├── Dockerfile └── README.md ├── aria2 ├── root │ ├── etc │ │ ├── services.d │ │ │ ├── cron │ │ │ │ └── run │ │ │ ├── darkhttpd │ │ │ │ └── run │ │ │ └── aria2 │ │ │ │ └── run │ │ └── cont-init.d │ │ │ └── aria2c.sh │ └── usr │ │ └── local │ │ └── aria2 │ │ └── updatetrackers.sh ├── Dockerfile.amd64 ├── README.md └── Dockerfile ├── anki-sync-server ├── root │ ├── etc │ │ ├── services.d │ │ │ ├── nginx │ │ │ │ └── run │ │ │ └── anki-sync-server │ │ │ │ └── run │ │ └── cont-init.d │ │ │ └── anki-sync-server.sh │ └── usr │ │ └── local │ │ └── anki-sync-server │ │ └── useradd.sh ├── Dockerfile.tsudoko ├── Dockerfile └── README.md ├── baidupcs-web ├── root │ └── etc │ │ ├── services.d │ │ └── baidupcs-web │ │ │ └── run │ │ └── cont-init.d │ │ └── baidupcs-web.sh ├── Dockerfile └── README.md ├── tt-rss ├── root │ └── etc │ │ ├── services.d │ │ ├── php-fpm │ │ │ └── run │ │ ├── caddy │ │ │ └── run │ │ └── update_daemon │ │ │ └── run │ │ ├── caddy │ │ └── caddy.conf │ │ └── cont-init.d │ │ └── tt-rss.sh └── Dockerfile ├── rime-sogou ├── root │ ├── etc │ │ ├── services.d │ │ │ └── cron │ │ │ │ └── run │ │ └── cont-init.d │ │ │ └── sogouscelupdate.sh │ └── usr │ │ └── local │ │ └── sogouscelupdate │ │ └── sogouscelupdate.py ├── Dockerfile └── README.md ├── tt-rss-plugins ├── root │ ├── etc │ │ ├── services.d │ │ │ ├── php-fpm │ │ │ │ └── run │ │ │ ├── caddy │ │ │ │ └── run │ │ │ ├── update_daemon │ │ │ │ └── run │ │ │ ├── postgres │ │ │ │ └── run │ │ │ └── mercury │ │ │ │ └── run │ │ └── caddy │ │ │ └── caddy.conf │ ├── docker-entrypoint-initdb.d │ │ └── install_extension.sql │ └── usr │ │ └── local │ │ └── bin │ │ └── initialize.sh ├── Dockerfile.amd64 └── Dockerfile ├── syncthing-relay-discosrv ├── root │ └── etc │ │ └── services.d │ │ ├── discosrv │ │ └── run │ │ └── relaysrv │ │ └── run ├── Dockerfile.amd64 └── Dockerfile ├── .travis.yml └── .github └── workflows ├── calibre-web-glibc-buildx.yml ├── kms-buildx.yml ├── aria2-buildx.yml ├── qiandao-buildx.yml ├── baidunetdisk-buildx.yml ├── calibre-web-buildx.yml ├── qBittorrent-buildx.yml ├── calibre-web-CN-buildx.yml ├── qBittorrent.qee-buildx.yml ├── baidunetdisk-Tags-buildx.yml ├── calibre-web-glibc-Tags-buildx.yml ├── syncthing-relay-discosrv-buildx.yml ├── anki-sync-server-buildx.yml ├── kms-Tags-buildx.yml ├── aria2-Tags-buildx.yml ├── qiandao-Tags-buildx.yml ├── qBittorrent-Tags-buildx.yml ├── anki-sync-server-Tags-buildx.yml ├── qBittorrent.qee-Tags-buildx.yml ├── syncthing-relay-discosrv-Tags-buildx.yml ├── calibre-web-Tags-buildx.yml ├── calibre-web-CN-Tags-buildx.yml └── tt-rss-plugins-buildx.yml /baidunetdisk/icon/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /baidunetdisk/root/opt/novnc/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /calibre-web/root/usr/local/calibre-web/defaults/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /qiandao/root/usr/local/qiandao/mailstarttls/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /calibre-server/root/usr/local/calibre-server/defaults/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /qBittorrent/root/usr/local/qbittorrent/defaults/Search/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /kms/root/etc/services.d/vlmcsd/run: -------------------------------------------------------------------------------- 1 | #! /usr/bin/with-contenv bash 2 | 3 | # 启动vlmcsd 4 | exec vlmcsd -D 5 | -------------------------------------------------------------------------------- /kms/root/etc/darkhttpd/run: -------------------------------------------------------------------------------- 1 | #! /usr/bin/with-contenv bash 2 | 3 | # 启动darkhttpd 4 | exec darkhttpd /home/www 5 | -------------------------------------------------------------------------------- /baidunetdisk/startapp.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | export HOME=/config 4 | /opt/baidunetdisk/baidunetdisk --no-sandbox 5 | -------------------------------------------------------------------------------- /baidunetdisk/icon/baidunetdisk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SaltyLeo/docker/master/baidunetdisk/icon/baidunetdisk.png -------------------------------------------------------------------------------- /aria2/root/etc/services.d/cron/run: -------------------------------------------------------------------------------- 1 | #! /usr/bin/with-contenv bash 2 | 3 | #启动trackers更新任务 4 | exec crond -f -L /dev/null 5 | -------------------------------------------------------------------------------- /anki-sync-server/root/etc/services.d/nginx/run: -------------------------------------------------------------------------------- 1 | #! /usr/bin/with-contenv bash 2 | 3 | # 启动nginx 4 | exec nginx -g "daemon off;" 5 | -------------------------------------------------------------------------------- /baidupcs-web/root/etc/services.d/baidupcs-web/run: -------------------------------------------------------------------------------- 1 | #! /usr/bin/with-contenv bash 2 | 3 | # 启动BaiduPCS-Go 4 | exec BaiduPCS-Go 5 | -------------------------------------------------------------------------------- /qBittorrent/root/etc/services.d/cron/run: -------------------------------------------------------------------------------- 1 | #! /usr/bin/with-contenv bash 2 | 3 | #启动trackers更新任务 4 | exec crond -f -L /dev/null 5 | -------------------------------------------------------------------------------- /tt-rss/root/etc/services.d/php-fpm/run: -------------------------------------------------------------------------------- 1 | #! /usr/bin/with-contenv bash 2 | 3 | #启动 php-fpm 4 | s6-setuidgid ttrss php-fpm7 -F 5 | -------------------------------------------------------------------------------- /qiandao/root/etc/services.d/qiandao/run: -------------------------------------------------------------------------------- 1 | #! /usr/bin/with-contenv bash 2 | 3 | # 启动qiandao程序 4 | exec /usr/local/qiandao/run.py 5 | 6 | -------------------------------------------------------------------------------- /rime-sogou/root/etc/services.d/cron/run: -------------------------------------------------------------------------------- 1 | #! /usr/bin/with-contenv bash 2 | 3 | #启动sogouscelupdate更新任务 4 | exec crond -f -L /dev/null 5 | -------------------------------------------------------------------------------- /tt-rss-plugins/root/etc/services.d/php-fpm/run: -------------------------------------------------------------------------------- 1 | #! /usr/bin/with-contenv bash 2 | 3 | #启动 php-fpm 4 | exec s6-setuidgid ttrss php-fpm8 -F 5 | -------------------------------------------------------------------------------- /anki-sync-server/root/etc/services.d/anki-sync-server/run: -------------------------------------------------------------------------------- 1 | #! /usr/bin/with-contenv bash 2 | 3 | # 启动anki-sync-server 4 | exec python3 -m ankisyncd 5 | -------------------------------------------------------------------------------- /tt-rss/root/etc/services.d/caddy/run: -------------------------------------------------------------------------------- 1 | #! /usr/bin/with-contenv bash 2 | 3 | #启动 caddy 4 | s6-setuidgid ttrss caddy --conf /etc/caddy/caddy.conf 5 | -------------------------------------------------------------------------------- /calibre-web/root/usr/local/calibre-web/defaults/app.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SaltyLeo/docker/master/calibre-web/root/usr/local/calibre-web/defaults/app.db -------------------------------------------------------------------------------- /tt-rss-plugins/root/etc/services.d/caddy/run: -------------------------------------------------------------------------------- 1 | #! /usr/bin/with-contenv bash 2 | 3 | #启动 caddy 4 | exec caddy run --config /etc/caddy/caddy.conf --adapter caddyfile 5 | -------------------------------------------------------------------------------- /tt-rss/root/etc/services.d/update_daemon/run: -------------------------------------------------------------------------------- 1 | #!/usr/bin/with-contenv bash 2 | 3 | s6-setuidgid ttrss php7 /usr/local/tt-rss/update_daemon2.php > /dev/null 2>&1 4 | -------------------------------------------------------------------------------- /aria2/root/etc/services.d/darkhttpd/run: -------------------------------------------------------------------------------- 1 | #! /usr/bin/with-contenv bash 2 | 3 | # 启动darkhttpd 4 | exec s6-setuidgid aria2 darkhttpd /usr/local/aria2/AriaNg --port 8080 5 | -------------------------------------------------------------------------------- /calibre-web/root/usr/local/calibre-web/defaults/metadata.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SaltyLeo/docker/master/calibre-web/root/usr/local/calibre-web/defaults/metadata.db -------------------------------------------------------------------------------- /calibre-web/root/etc/services.d/calibre-web/run: -------------------------------------------------------------------------------- 1 | #! /usr/bin/with-contenv bash 2 | 3 | # 启动calibre-web 4 | exec s6-setuidgid calibre python3 /usr/local/calibre-web/cps.py 5 | -------------------------------------------------------------------------------- /tt-rss-plugins/root/etc/services.d/update_daemon/run: -------------------------------------------------------------------------------- 1 | #!/usr/bin/with-contenv bash 2 | 3 | exec s6-setuidgid ttrss php8 /usr/local/tt-rss/update_daemon2.php > /dev/null 2>&1 4 | -------------------------------------------------------------------------------- /calibre-server/root/usr/local/calibre-server/defaults/metadata.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SaltyLeo/docker/master/calibre-server/root/usr/local/calibre-server/defaults/metadata.db -------------------------------------------------------------------------------- /tt-rss-plugins/root/etc/services.d/postgres/run: -------------------------------------------------------------------------------- 1 | #! /usr/bin/with-contenv bash 2 | 3 | #启动 postgres 4 | exec s6-setuidgid postgres /usr/local/bin/docker-entrypoint.sh postgres 5 | -------------------------------------------------------------------------------- /tt-rss-plugins/root/etc/services.d/mercury/run: -------------------------------------------------------------------------------- 1 | #! /usr/bin/with-contenv bash 2 | 3 | #启动 mercury api 4 | exec s6-setuidgid ttrss node /usr/local/mercury-parser-api/node_modules/mercury-parser-api/index.js 5 | -------------------------------------------------------------------------------- /tt-rss/root/etc/caddy/caddy.conf: -------------------------------------------------------------------------------- 1 | # Caddy config file 2 | # See: https://caddyserver.com/docs/caddyfile 3 | :80 4 | { 5 | root /usr/local/tt-rss 6 | gzip 7 | fastcgi / 127.0.0.1:9000 php 8 | } 9 | -------------------------------------------------------------------------------- /qBittorrent/root/etc/services.d/qBittorrent/run: -------------------------------------------------------------------------------- 1 | #! /usr/bin/with-contenv bash 2 | 3 | #设置umask 4 | umask "$UMASK" 5 | 6 | # 启动qBittorrent 7 | exec s6-setuidgid qbittorrent qbittorrent-nox --webui-port=$WEBUIPORT --profile=/config 8 | -------------------------------------------------------------------------------- /kms/root/etc/cont-init.d/kms.sh: -------------------------------------------------------------------------------- 1 | #! /usr/bin/with-contenv bash 2 | 3 | if [ "$WEB" == "YES" ];then 4 | cp -rf /etc/darkhttpd /etc/services.d/ 5 | chmod a+x /etc/services.d/darkhttpd/run 6 | elif [ -n "/etc/services.d/darkhttpd/run" ] ; then 7 | rm -rf /etc/services.d/darkhttpd 8 | fi 9 | -------------------------------------------------------------------------------- /calibre-server/root/etc/services.d/calibre-server/run: -------------------------------------------------------------------------------- 1 | #! /usr/bin/with-contenv bash 2 | 3 | # 启动calibre-server 4 | 5 | if [ -n "$USER" ] && [ -n "$PASSWORD" ] ; then 6 | exec calibre-server --userdb /srv/calibre/users.sqlite --enable-auth 7 | else 8 | exec calibre-server 9 | fi 10 | -------------------------------------------------------------------------------- /anki-sync-server/root/usr/local/anki-sync-server/useradd.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/expect 2 | 3 | set USER [lindex $argv 0 ] 4 | set PASSWORD [lindex $argv 1 ] 5 | spawn python3 /usr/local/anki-sync-server/src/ankisyncctl.py adduser $USER 6 | expect "Enter password for $USER:" {send "$PASSWORD\r"} 7 | expect eof 8 | -------------------------------------------------------------------------------- /tt-rss-plugins/root/etc/caddy/caddy.conf: -------------------------------------------------------------------------------- 1 | # Caddy config file 2 | # See: https://caddyserver.com/docs/caddyfile 3 | { 4 | http_port 80 5 | admin off 6 | auto_https off 7 | } 8 | :80 { 9 | root * /usr/local/tt-rss 10 | encode gzip 11 | php_fastcgi 127.0.0.1:9000 12 | file_server 13 | } 14 | -------------------------------------------------------------------------------- /syncthing-relay-discosrv/root/etc/services.d/discosrv/run: -------------------------------------------------------------------------------- 1 | #! /usr/bin/with-contenv bash 2 | 3 | #启动 discosrv 4 | while [ ! -f "/certs/cert.pem" ] || [ ! -f "/certs/key.pem" ] 5 | do 6 | sleep 5 7 | done 8 | 9 | exec /usr/local/bin/discosrv -db-dir="/discosrvdb" -cert="/certs/cert.pem" -key="/certs/key.pem" ${DISCO_OTHER_OPTION} 10 | -------------------------------------------------------------------------------- /tt-rss-plugins/root/docker-entrypoint-initdb.d/install_extension.sql: -------------------------------------------------------------------------------- 1 | -- Install zhparser 2 | 3 | CREATE EXTENSION zhparser; 4 | CREATE TEXT SEARCH CONFIGURATION chinese_simplified (PARSER = zhparser); 5 | ALTER TEXT SEARCH CONFIGURATION chinese_simplified ADD MAPPING FOR n,v,a,i,e,l WITH simple; 6 | ALTER ROLE ALL SET zhparser.multi_short=on; 7 | -------------------------------------------------------------------------------- /calibre-web/root/etc/services.d/calibre-server/run: -------------------------------------------------------------------------------- 1 | #! /usr/bin/with-contenv bash 2 | 3 | # 启动calibre-server 4 | if [ -n "$USER" ] && [ -n "$PASSWORD" ] ; then 5 | exec s6-setuidgid calibre calibre-server /library --userdb /config/calibre-server/calibre/server-users.sqlite --enable-auth 6 | else 7 | exec s6-setuidgid calibre calibre-server /library 8 | fi 9 | -------------------------------------------------------------------------------- /baidupcs-web/root/etc/cont-init.d/baidupcs-web.sh: -------------------------------------------------------------------------------- 1 | #! /usr/bin/with-contenv bash 2 | 3 | #检查配置文件位置 4 | if [ ! -d /root/.config ] ; then 5 | mkdir -p /root/.config 6 | fi 7 | if [ -d /root/.config/BaiduPCS-Go ] ; then 8 | rm -rf /root/.config/BaiduPCS-Go 9 | fi 10 | if [ ! -L /root/.config/BaiduPCS-Go ] ; then 11 | ln -s /config /root/.config/BaiduPCS-Go 12 | fi 13 | -------------------------------------------------------------------------------- /aria2/root/etc/services.d/aria2/run: -------------------------------------------------------------------------------- 1 | #! /usr/bin/with-contenv bash 2 | 3 | 4 | #设置umask 5 | umask "$UMASK" 6 | 7 | # 启动aria2 8 | if [ ! -n "$RPC_SECRET" ] ; then 9 | exec s6-setuidgid aria2 aria2c --conf-path=/config/aria2.conf --enable-rpc --rpc-listen-all 10 | else 11 | exec s6-setuidgid aria2 aria2c --conf-path=/config/aria2.conf --enable-rpc --rpc-listen-all --rpc-secret="$RPC_SECRET" 12 | fi 13 | -------------------------------------------------------------------------------- /syncthing-relay-discosrv/root/etc/services.d/relaysrv/run: -------------------------------------------------------------------------------- 1 | #! /usr/bin/with-contenv bash 2 | 3 | #启动 relaysrv 4 | 5 | exec /usr/local/bin/relaysrv -global-rate="${GLOBAL_RATE}" -keys="/certs" -message-timeout="${MESSAGE_TIMEOUT}" -network-timeout="${NETWORK_TIMEOUT}" -per-session-rate="${PER_SESSION_RATE}" -ping-interval="${PING_INTERVAL}" -pools="${POOLS}" -provided-by="${PROVIDED_BY}" ${RELAY_OTHER_OPTION} 6 | -------------------------------------------------------------------------------- /calibre-server/root/usr/local/calibre-server/useradd.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/expect 2 | 3 | set USER [lindex $argv 0 ] 4 | set PASSWORD [lindex $argv 1 ] 5 | spawn calibre-server --userdb /srv/calibre/users.sqlite --manage-users 6 | expect "What do you want to do" 7 | send "1\r" 8 | expect "Enter the username:" 9 | send "$USER\r" 10 | expect { 11 | -re "Enter the username:" { exit } 12 | -re "Enter the new password for" { exp_send "$PASSWORD\r"; exp_continue} 13 | -re "to verify:" { exp_send "$PASSWORD\r"; exp_continue} 14 | -re "successfully!" { exit } 15 | } 16 | expect eof 17 | -------------------------------------------------------------------------------- /tt-rss-plugins/root/usr/local/bin/initialize.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | if [ -n "$TTRSS_DB_HOST" ] && [ -n "$TTRSS_DB_USER" ] && [ -n "$TTRSS_DB_NAME" ] && [ -n "$TTRSS_DB_PASS" ] ; then 3 | while ! pg_isready -h $TTRSS_DB_HOST -U $TTRSS_DB_USER; do 4 | sleep 3 5 | done 6 | PSQL="psql -q -h $TTRSS_DB_HOST -U $TTRSS_DB_USER $TTRSS_DB_NAME" 7 | $PSQL -c "create extension if not exists pg_trgm" 8 | su - ttrss -s /bin/sh -m -c "php8 /usr/local/tt-rss/update.php --update-schema=force-yes" 9 | else 10 | echo 环境变量TTRSS_DB_[HOST、USER、NAME、PASS]未填写完全... 11 | fi 12 | -------------------------------------------------------------------------------- /calibre-web/root/usr/local/calibre-server/useradd.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/expect 2 | 3 | set USER [lindex $argv 0 ] 4 | set PASSWORD [lindex $argv 1 ] 5 | spawn calibre-server --userdb /config/calibre-server/calibre/server-users.sqlite --manage-users 6 | expect "What do you want to do" 7 | send "1\r" 8 | expect "Enter the username:" 9 | send "$USER\r" 10 | expect { 11 | -re "Enter the username:" { exit } 12 | -re "Enter the new password for" { exp_send "$PASSWORD\r"; exp_continue} 13 | -re "to verify:" { exp_send "$PASSWORD\r"; exp_continue} 14 | -re "successfully!" { exit } 15 | } 16 | expect eof 17 | -------------------------------------------------------------------------------- /rime-sogou/root/etc/cont-init.d/sogouscelupdate.sh: -------------------------------------------------------------------------------- 1 | #! /usr/bin/with-contenv bash 2 | 3 | #设定sogouscelupdate更新任务 4 | if [ `grep -c sogouscelupdate.py /var/spool/cron/crontabs/root` -eq 0 ];then 5 | echo "0 */8 * * * python3 /usr/local/sogouscelupdate/sogouscelupdate.py" >> /var/spool/cron/crontabs/root 6 | echo sogouscelupdate更新任务已设定。 7 | else 8 | echo sogouscelupdate更新任务已存在。 9 | fi 10 | 11 | #启动时更新sogouscel。 12 | python3 /usr/local/sogouscelupdate/sogouscelupdate.py 13 | 14 | #设置时区 15 | ln -sf /usr/share/zoneinfo/$TZ /etc/localtime 16 | echo $TZ > /etc/timezone 17 | -------------------------------------------------------------------------------- /calibre-web/root/etc/services.d/inotify/run: -------------------------------------------------------------------------------- 1 | #! /usr/bin/with-contenv bash 2 | 3 | # 启动inotify 4 | 5 | while inotifywait -e close -e move -r /autoaddbooks; do 6 | if [ "`ls -A /autoaddbooks`" != "" ];then 7 | inotifywait -mr /autoaddbooks -t 30 8 | mv /opt/calibre/bin/calibre-server /opt/calibre/bin/calibre-server.bak 9 | ps -ef |grep /opt/calibre/bin/calibre-server |grep -v grep|awk '{print $1}'|xargs kill -9 10 | su - calibre -s /bin/bash -c "calibredb add -r /autoaddbooks $CALIBREDB_OTHER_OPTION --library-path=/library" 11 | mv /opt/calibre/bin/calibre-server.bak /opt/calibre/bin/calibre-server 12 | rm -r /autoaddbooks/* 13 | fi 14 | done 15 | -------------------------------------------------------------------------------- /kms/Dockerfile.amd64: -------------------------------------------------------------------------------- 1 | FROM alpine:3.11 2 | 3 | ARG S6_VER=1.22.1.0 4 | ARG SVN_VER=1113 5 | 6 | ENV WEB=YES 7 | 8 | COPY root / 9 | 10 | RUN apk add --no-cache darkhttpd ca-certificates bash \ 11 | && rm -rf /var/cache/apk/* \ 12 | && wget https://github.com/just-containers/s6-overlay/releases/download/v${S6_VER}/s6-overlay-amd64.tar.gz \ 13 | && tar xvzf s6-overlay-amd64.tar.gz \ 14 | && rm s6-overlay-amd64.tar.gz \ 15 | && wget https://github.com/Wind4/vlmcsd/releases/download/svn${SVN_VER}/binaries.tar.gz \ 16 | && tar -zxvf binaries.tar.gz \ 17 | && cp /binaries/Linux/intel/static/vlmcsdmulti-x64-musl-static /usr/bin/kms \ 18 | && rm -rf binaries* \ 19 | && chmod a+x /usr/bin/kms 20 | 21 | EXPOSE 1688 80 22 | ENTRYPOINT [ "/init" ] 23 | -------------------------------------------------------------------------------- /calibre-server/root/usr/local/calibre-server/languagechange.sh: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | 3 | Oldlanguage="`grep "language =" /config/root/calibre/global.py`" 4 | if [[ ! "$Oldlanguage" =~ "$WEBLANGUAGE" ]];then 5 | ALLLANGUAGE=("af" "am" "ar" "ast" "az" "be" "bg" "bn" "bn_BD" "bn_IN" "br" "bs" "ca" "crh" "cs" "cy" "da" "de" "el" "en_AU" "en_CA" "en_GB" "eo" "es" "es_MX" "et" "eu" "fa" "fi" "fil" "fo" "fr" "fr_CA" "fur" "ga" "gl" "gu" "he" "hi" "hr" "hu" "hy" "id" "is" "it" "ja" "jv" "ka" "km" "kn" "ko" "ku" "lt" "ltg" "lv" "mi" "mk" "ml" "mn" "mr" "ms" "mt" "my" "nb" "nds" "nl" "nn" "nso" "oc" "or" "pa" "pl" "ps" "pt" "pt_BR" "ro" "ru" "rw" "sc" "si" "sk" "sl" "sq" "sr" "sr@latin" "sv" "ta" "te" "th" "ti" "tr" "tt" "ug" "uk" "ur" "uz@Latn" "ve" "vi" "wa" "xh" "yi" "zh_CN" "zh_HK" "zh_TW" "zu") 6 | if [[ ${ALLLANGUAGE[@]} =~ "$WEBLANGUAGE" ]]; then 7 | sed -i 's/'"$Oldlanguage"'/language = u'"'"''"$WEBLANGUAGE"''"'"'/' /config/root/calibre/global.py 8 | fi 9 | fi 10 | -------------------------------------------------------------------------------- /baidunetdisk/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM jlesage/baseimage-gui:debian-10 2 | 3 | ENV APP_NAME="Baidunetdisk" 4 | ENV DISPLAY_WIDTH="1000" 5 | ENV DISPLAY_HEIGHT="700" 6 | 7 | COPY root / 8 | COPY startapp.sh /startapp.sh 9 | 10 | RUN apt-get update \ 11 | && apt-get install -y wget libnss3 libxss1 desktop-file-utils libasound2 ttf-wqy-zenhei libgtk-3-0 libgbm1 libnotify4 xdg-utils libsecret-common libsecret-1-0 libindicator3-7 libdbusmenu-glib4 libdbusmenu-gtk3-4 libappindicator3-1 \ 12 | && wget http://issuecdn.baidupcs.com/issue/netdisk/LinuxGuanjia/3.5.0/baidunetdisk_3.5.0_amd64.deb \ 13 | && dpkg -i baidunetdisk_3.5.0_amd64.deb \ 14 | && rm baidunetdisk_3.5.0_amd64.deb \ 15 | # XDAMAGE is not working well. -noxdamage 16 | && sed -i 's@usr\/bin\/x11vnc \\@usr\/bin\/x11vnc \\\n -noxdamage \\@' /etc/services.d/x11vnc/run \ 17 | && install_app_icon.sh https://raw.githubusercontent.com/gshang2017/docker/master/baidunetdisk/icon/baidunetdisk.png 18 | -------------------------------------------------------------------------------- /calibre-web/root/usr/local/calibre-server/languagechange.sh: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | 3 | Oldlanguage="`grep "language =" /config/calibre-server/calibre/global.py`" 4 | if [[ ! "$Oldlanguage" =~ "$WEBLANGUAGE" ]];then 5 | ALLLANGUAGE=("af" "am" "ar" "ast" "az" "be" "bg" "bn" "bn_BD" "bn_IN" "br" "bs" "ca" "crh" "cs" "cy" "da" "de" "el" "en_AU" "en_CA" "en_GB" "eo" "es" "es_MX" "et" "eu" "fa" "fi" "fil" "fo" "fr" "fr_CA" "fur" "ga" "gl" "gu" "he" "hi" "hr" "hu" "hy" "id" "is" "it" "ja" "jv" "ka" "km" "kn" "ko" "ku" "lt" "ltg" "lv" "mi" "mk" "ml" "mn" "mr" "ms" "mt" "my" "nb" "nds" "nl" "nn" "nso" "oc" "or" "pa" "pl" "ps" "pt" "pt_BR" "ro" "ru" "rw" "sc" "si" "sk" "sl" "sq" "sr" "sr@latin" "sv" "ta" "te" "th" "ti" "tr" "tt" "ug" "uk" "ur" "uz@Latn" "ve" "vi" "wa" "xh" "yi" "zh_CN" "zh_HK" "zh_TW" "zu") 6 | if [[ ${ALLLANGUAGE[@]} =~ "$WEBLANGUAGE" ]]; then 7 | sed -i 's/'"$Oldlanguage"'/language = u'"'"''"$WEBLANGUAGE"''"'"'/' /config/calibre-server/calibre/global.py 8 | fi 9 | fi 10 | -------------------------------------------------------------------------------- /rime-sogou/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM mcr.microsoft.com/dotnet/core/runtime:3.1-alpine3.11 2 | 3 | ARG S6_VER=1.22.1.0 4 | ARG IMEWLCONVERTER_VER=2.8.0 5 | 6 | ENV TZ=Asia/Shanghai 7 | 8 | COPY root / 9 | 10 | # install bash tzdata s6 overlay py3-requests wqy-zenhei imewlconverter 11 | RUN wget --no-check-certificate https://github.com/just-containers/s6-overlay/releases/download/v${S6_VER}/s6-overlay-amd64.tar.gz \ 12 | && tar -xvzf s6-overlay-amd64.tar.gz \ 13 | && rm s6-overlay-amd64.tar.gz \ 14 | && apk add --no-cache bash ca-certificates tzdata py3-requests \ 15 | && apk add --no-cache wqy-zenhei --repository http://dl-2.alpinelinux.org/alpine/edge/testing \ 16 | && rm -rf /var/cache/apk/* \ 17 | && wget -P / https://github.com/studyzy/imewlconverter/releases/download/v${IMEWLCONVERTER_VER}/imewlconverter_Linux_Mac.tar.gz \ 18 | && tar -xvf /imewlconverter_Linux_Mac.tar.gz -C /usr/local/bin \ 19 | && rm /imewlconverter_Linux_Mac.tar.gz 20 | 21 | VOLUME /output 22 | ENTRYPOINT [ "/init" ] 23 | -------------------------------------------------------------------------------- /aria2/root/usr/local/aria2/updatetrackers.sh: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | 3 | if [ "$TRACKERSAUTO" == "YES" ];then 4 | curl -so /tmp/trackers_all.txt https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all.txt 5 | #wget -qP /tmp https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all.txt --no-check-certificate 6 | Newtrackers="bt-tracker=`awk NF /tmp/trackers_all.txt|sed ":a;N;s/\n/,/g;ta"`" 7 | Oldtrackers="`grep bt-tracker= /config/aria2.conf`" 8 | if [ -e "/tmp/trackers_all.txt" ] ; then 9 | if [ $Newtrackers == $Oldtrackers ];then 10 | echo trackers文件一样,不需要更新。 11 | else 12 | sed -i 's@'"$Oldtrackers"'@'"$Newtrackers"'@g' /config/aria2.conf 13 | chown aria2:aria2 /config/aria2.conf 14 | #kill aria2 15 | ps -ef |grep aria2.conf |grep -v grep|awk '{print $1}'|xargs kill -9 16 | echo 已更新trackers。 17 | fi 18 | rm /tmp/trackers_all.txt 19 | else 20 | echo 更新文件未正确下载,更新未成功,请检查网络。 21 | fi 22 | else 23 | echo 未设定自动更新trackers。 24 | fi 25 | -------------------------------------------------------------------------------- /baidupcs-web/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine:3.10 2 | 3 | ARG BaiduPCSGo_VER=3.7.0 4 | ARG S6_VER=1.22.1.0 5 | 6 | COPY root / 7 | 8 | RUN apk add --no-cache bash \ 9 | && rm -rf /var/cache/apk/* \ 10 | && wget --no-check-certificate https://github.com/liuzhuoling2011/baidupcs-web/releases/download/${BaiduPCSGo_VER}/BaiduPCS-Go-${BaiduPCSGo_VER}-linux-amd64.zip \ 11 | #&& wget --no-check-certificate http://qiniu.zoranjojo.top/BaiduPCS-Go-${BaiduPCSGo_VER}-linux-amd64.zip \ 12 | && unzip BaiduPCS-Go-${BaiduPCSGo_VER}-linux-amd64.zip \ 13 | && mv BaiduPCS-Go-${BaiduPCSGo_VER}-linux-amd64/BaiduPCS-Go /usr/local/bin/BaiduPCS-Go \ 14 | && rm -rf BaiduPCS-Go-${BaiduPCSGo_VER}-linux-amd64* \ 15 | && chmod a+x /usr/local/bin/BaiduPCS-Go \ 16 | && wget https://github.com/just-containers/s6-overlay/releases/download/v${S6_VER}/s6-overlay-amd64.tar.gz \ 17 | && tar xvzf s6-overlay-amd64.tar.gz \ 18 | && rm s6-overlay-amd64.tar.gz 19 | 20 | VOLUME /root/Downloads /config 21 | EXPOSE 5299 22 | ENTRYPOINT [ "/init" ] 23 | 24 | 25 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | arch: arm64 2 | 3 | language: generic 4 | 5 | sudo: required 6 | 7 | services: 8 | - docker 9 | 10 | 11 | before_install: 12 | #qbittorrent 13 | #- docker build -t johngong/qbittorrent:4.2.5_arm64v8 ./qBittorrent -f ./qBittorrent/Dockerfile.aarch64 14 | - docker build -t johngong/qbittorrent:4.2.5_arm32v7 ./qBittorrent -f ./qBittorrent/Dockerfile.aarch32 15 | #qbittorrent:qee 16 | #- docker build -t johngong/qbittorrent:qee_4.2.5.13_arm64v8 ./qBittorrent -f ./qBittorrent/Dockerfile.qee.aarch64 17 | #- docker build -t johngong/qbittorrent:qee_4.2.5.13_arm32v7 ./qBittorrent -f ./qBittorrent/Dockerfile.qee.aarch32 18 | 19 | script: 20 | - echo "$DOCKER_PASSWORD" | docker login --username "$DOCKER_USERNAME" --password-stdin 21 | #qbittorrent 22 | #- docker push johngong/qbittorrent:4.2.5_arm64v8 23 | - docker push johngong/qbittorrent:4.2.5_arm32v7 24 | #qbittorrent:qee 25 | #- docker push johngong/qbittorrent:qee_4.2.5.13_arm64v8 26 | #- docker push johngong/qbittorrent:qee_4.2.5.13_arm32v7 27 | -------------------------------------------------------------------------------- /anki-sync-server/root/etc/cont-init.d/anki-sync-server.sh: -------------------------------------------------------------------------------- 1 | #! /usr/bin/with-contenv bash 2 | 3 | #检查配置文件位置 4 | #ankisyncd.conf 5 | if [ ! -f /config/ankisyncd.conf ] ; then 6 | cp /usr/local/anki-sync-server/defaults/ankisyncd.conf /config 7 | fi 8 | if [ -f /usr/local/anki-sync-server/src/ankisyncd.conf ] ; then 9 | rm /usr/local/anki-sync-server/src/ankisyncd.conf 10 | fi 11 | if [ ! -L /usr/local/anki-sync-server/src/ankisyncd.conf ] ; then 12 | ln -s /config/ankisyncd.conf /usr/local/anki-sync-server/src/ankisyncd.conf 13 | fi 14 | 15 | #nginx.conf 16 | if [ ! -f /config/nginx.conf ] ; then 17 | cp /usr/local/anki-sync-server/defaults/nginx.conf /config 18 | fi 19 | if [ -f /etc/nginx/nginx.conf ] ; then 20 | rm /etc/nginx/nginx.conf 21 | fi 22 | if [ ! -L /etc/nginx/nginx.conf ] ; then 23 | ln -s /config/nginx.conf /etc/nginx/nginx.conf 24 | fi 25 | 26 | #添加user. 27 | if [ -n "$USER" ] && [ -n "$PASSWORD" ] ; then 28 | if [ ! -d /config/collections/$USER ] ; then 29 | expect /usr/local/anki-sync-server/useradd.sh $USER $PASSWORD 30 | fi 31 | fi 32 | -------------------------------------------------------------------------------- /kms/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine:3.14 as compilingvlmcsd 2 | 3 | #compiling vlmcsd 4 | 5 | ARG SVN_VER=1113 6 | 7 | RUN apk add --no-cache git make build-base \ 8 | && wget https://github.com/Wind4/vlmcsd/archive/svn${SVN_VER}.tar.gz \ 9 | && tar -zxf svn${SVN_VER}.tar.gz \ 10 | && cd /vlmcsd-svn${SVN_VER} \ 11 | && make 12 | 13 | 14 | 15 | FROM alpine:3.14 16 | 17 | ARG S6_VER=2.2.0.3 18 | ARG SVN_VER=1113 19 | 20 | ENV WEB=YES 21 | 22 | COPY root / 23 | COPY --from=compilingvlmcsd /vlmcsd-svn${SVN_VER}/bin/vlmcsd /usr/bin/vlmcsd 24 | 25 | RUN apk add --no-cache darkhttpd ca-certificates bash \ 26 | && rm -rf /var/cache/apk/* \ 27 | && 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 \ 28 | && wget --no-check-certificate https://github.com/just-containers/s6-overlay/releases/download/v${S6_VER}/s6-overlay-${s6_arch}.tar.gz \ 29 | && tar -xvzf s6-overlay-${s6_arch}.tar.gz \ 30 | && rm s6-overlay-${s6_arch}.tar.gz \ 31 | && chmod a+x /usr/bin/vlmcsd 32 | 33 | EXPOSE 1688 80 34 | ENTRYPOINT [ "/init" ] 35 | -------------------------------------------------------------------------------- /kms/README.md: -------------------------------------------------------------------------------- 1 | ## 群晖nas自用 2 | 3 | ### 感谢以下项目: 4 | 5 | [https://github.com/Wind4/vlmcsd](https://github.com/Wind4/vlmcsd "https://github.com/Wind4/vlmcsd") 6 | 7 | ### 版本: 8 | 9 | |名称|版本|说明| 10 | |:-|:-|:-| 11 | |vlmcsd|1113|amd64;arm64v8;arm32v7| 12 | 13 | ### docker命令行设置: 14 | 15 | 1. 下载镜像 16 | 17 | docker pull johngong/kms:latest 18 | 19 | 20 | 2. 创建 kms容器 21 | 22 | docker create \ 23 | --name=kms \ 24 | -p 1688:1688 \ 25 | -p 80:80 \ 26 | --restart unless-stopped \ 27 | johngong/kms:latest 28 | 29 | 30 | 3. 运行 31 | 32 | docker start kms 33 | 34 | 4. 停止 35 | 36 | docker stop kms 37 | 38 | 5. 删除容器 39 | 40 | docker rm kms 41 | 42 | 6. 删除镜像 43 | 44 | docker image rm johngong/kms:latest 45 | 46 | ### 变量: 47 | 48 | |参数|说明| 49 | |:-|:-| 50 | | `--name=kms` |容器名| 51 | | `-p 1688:1688 ` |kms服务器端口| 52 | | `-p 80:80` |激活教程web访问端口,[ip:80](ip:80)| 53 | | `-e WEB=YES` |添加教程访问功能,默认开启。如不需要删除值即可| 54 | 55 | ### 群晖docker设置: 56 | 57 | 1. 端口 58 | 59 | |参数|说明| 60 | |:-|:-| 61 | | `本地端口1:1688` |kms服务器端口| 62 | | `本地端口2:80` |激活教程web访问端口,[ip:本地端口2](ip:本地端口2)| 63 | 64 | 2. 环境变量 65 | 66 | |参数|说明| 67 | |:-|:-| 68 | | `WEB=YES` |添加教程访问功能,默认开启。如不需要删除值即可| 69 | -------------------------------------------------------------------------------- /rime-sogou/README.md: -------------------------------------------------------------------------------- 1 | ## 群晖nas自用: 2 | 3 | ### 简介 4 | 5 | 自动更新sogou网络流行新词 ,生成rime输入法(拼音)使用文件luna_pinyin.sogou.dict.yaml。 6 | 7 | 8 | ### 感谢以下项目: 9 | 10 | [https://github.com/studyzy/imewlconverter](https://github.com/studyzy/imewlconverter) 11 | 12 | ### docker命令行设置: 13 | 14 | 1. 下载镜像 15 | 16 | docker pull johngong/rime-sogou:latest 17 | 18 | 2. 创建qbittorrent容器 19 | 20 | docker create \ 21 | --name=rime-sogou \ 22 | -v /dict位置:/output \ 23 | --restart unless-stopped \ 24 | johngong/rime-sogou:latest 25 | 26 | 27 | 3. 运行 28 | 29 | docker start rime-sogou 30 | 31 | 4. 停止 32 | 33 | docker stop rime-sogou 34 | 35 | 5. 删除容器 36 | 37 | docker rm rime-sogou 38 | 39 | 6. 删除镜像 40 | 41 | docker image rm johngong/rime-sogou:latest 42 | 43 | ### 变量: 44 | 45 | |参数|说明| 46 | |-|:-| 47 | | `--name=rime-sogou` |容器名| 48 | | `-v /dict位置:/output` |生成的sogou网络流行新词位置| 49 | | `-e TZ=Asia/Shanghai` |系统时区设置,默认为Asia/Shanghai| 50 | 51 | ### 群晖docker设置: 52 | 53 | 1. 卷 54 | 55 | |参数|说明| 56 | |-|:-| 57 | | `本地文件夹1:/output` |生成的sogou网络流行新词位置| 58 | 59 | 2. 环境变量: 60 | 61 | |参数|说明| 62 | |-|:-| 63 | | `TZ=Asia/Shanghai` |系统时区设置,默认为Asia/Shanghai| 64 | -------------------------------------------------------------------------------- /qiandao/Dockerfile.amd64: -------------------------------------------------------------------------------- 1 | FROM alpine:3.10 2 | 3 | ARG S6_VER=1.22.1.0 4 | 5 | ENV TZ=Asia/Shanghai 6 | ENV DOMAIN= 7 | ENV MAIL_STMP= 8 | ENV MAIL_PORT= 9 | ENV MAIL_SSL= 10 | ENV MAIL_STARTTLS= 11 | ENV MAIL_USER= 12 | ENV MAIL_PASSWORD= 13 | ENV MAIL_DOMAIN= 14 | ENV MAILGUN_KEY= 15 | ENV ADMINEMAIL= 16 | 17 | 18 | RUN apk add --no-cache bash ca-certificates tzdata python py-pip git gcc libc-dev python-dev \ 19 | # install s6-overlay 20 | && wget https://github.com/just-containers/s6-overlay/releases/download/v${S6_VER}/s6-overlay-amd64.tar.gz \ 21 | && tar -xvzf s6-overlay-amd64.tar.gz \ 22 | && rm s6-overlay-amd64.tar.gz \ 23 | # install qiandao 24 | && git clone https://github.com/binux/qiandao.git /usr/local/qiandao \ 25 | && pip install --no-cache-dir -r /usr/local/qiandao/requirements.txt \ 26 | && mkdir -p /usr/local/qiandao/defaults/ \ 27 | && mv /usr/local/qiandao/config.py /usr/local/qiandao/defaults/ \ 28 | && mv /usr/local/qiandao/libs/utils.py /usr/local/qiandao/defaults/ \ 29 | && chmod a+x /usr/local/qiandao/run.py \ 30 | # clean 31 | && pip uninstall redis -y \ 32 | && apk del py-pip git gcc libc-dev python-dev \ 33 | && rm -rf /var/cache/apk/* 34 | 35 | COPY root / 36 | 37 | 38 | VOLUME /dbpath 39 | EXPOSE 8923 40 | ENTRYPOINT [ "/init" ] 41 | -------------------------------------------------------------------------------- /qBittorrent/root/usr/local/qbittorrent/updatetrackers.sh: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | 3 | if [ "$TRACKERSAUTO" == "YES" ];then 4 | 5 | curl -so /tmp/trackers_all.txt https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all.txt 6 | #wget -qP /tmp https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all.txt --no-check-certificate 7 | Newtrackers="Bittorrent\TrackersList=$(awk '{if(!NF){next}}1' /tmp/trackers_all.txt|sed ':a;N;s/\n/\\n/g;ta' )" 8 | Oldtrackers="`grep TrackersList= /config/qBittorrent/config/qBittorrent.conf`" 9 | echo $Newtrackers >/tmp/Newtrackers.txt 10 | 11 | if [ -e "/tmp/trackers_all.txt" ] ; then 12 | 13 | if [ "$Newtrackers" == "$Oldtrackers" ];then 14 | echo trackers文件一样,不需要更新。 15 | else 16 | sed -i '/Bittorrent\\TrackersList=/r /tmp/Newtrackers.txt' /config/qBittorrent/config/qBittorrent.conf 17 | sed -i '1,/^Bittorrent\\TrackersList=.*/{//d;}' /config/qBittorrent/config/qBittorrent.conf 18 | chown qbittorrent:qbittorrent /config/qBittorrent/config/qBittorrent.conf 19 | #kill qBittorrent 20 | ps -ef |grep profile |grep -v grep|awk '{print $1}'|xargs kill -9 21 | echo 已更新trackers。 22 | fi 23 | 24 | rm /tmp/trackers_all.txt 25 | rm /tmp/Newtrackers.txt 26 | 27 | else 28 | echo 更新文件未正确下载,更新未成功,请检查网络。 29 | 30 | fi 31 | 32 | else 33 | 34 | echo 未设定自动更新trackers。 35 | fi 36 | -------------------------------------------------------------------------------- /qBittorrent/root/etc/cont-init.d/qBittorrent.sh: -------------------------------------------------------------------------------- 1 | #! /usr/bin/with-contenv bash 2 | 3 | #检查config配置文件,并创建. 4 | if [ ! -e "/config/qBittorrent/config/qBittorrent.conf" ] ; then 5 | mkdir -p /config/qBittorrent/config/ 6 | cp /usr/local/qbittorrent/defaults/qBittorrent.conf /config/qBittorrent/config/qBittorrent.conf 7 | fi 8 | 9 | #检查Search文件,并创建. 10 | if [ ! -d "/config/qBittorrent/data/nova3/engines" ] ; then 11 | mkdir -p /config/qBittorrent/data/nova3/engines 12 | fi 13 | cp -ru /usr/local/qbittorrent/defaults/Search/* /config/qBittorrent/data/nova3/engines 14 | 15 | 16 | #设定trackers更新任务 17 | if [ `grep -c updatetrackers.sh /var/spool/cron/crontabs/root` -eq 0 ];then 18 | echo "0 0 * * * /usr/local/qbittorrent/updatetrackers.sh" >> /var/spool/cron/crontabs/root 19 | echo trackers更新任务已设定。 20 | else 21 | echo trackers更新任务已存在。 22 | fi 23 | 24 | #启动时更新trackers。 25 | if [ "$TRACKERSAUTO" == "YES" ];then 26 | /usr/local/qbittorrent/updatetrackers.sh 27 | fi 28 | 29 | #设置时区 30 | ln -sf /usr/share/zoneinfo/$TZ /etc/localtime 31 | echo $TZ > /etc/timezone 32 | 33 | #修改用户UID GID 34 | groupmod -o -g "$GID" qbittorrent 35 | usermod -o -u "$UID" qbittorrent 36 | 37 | #修复权限 38 | chown -R qbittorrent:qbittorrent /config 39 | chown -R qbittorrent:qbittorrent /Downloads 40 | chown -R qbittorrent:qbittorrent /usr/local/qbittorrent/defaults 41 | -------------------------------------------------------------------------------- /.github/workflows/calibre-web-glibc-buildx.yml: -------------------------------------------------------------------------------- 1 | name: Build calibre-web-glibc-latest Image 2 | 3 | on: 4 | push: 5 | paths: 6 | - 'calibre-web/Dockerfile.glibc' 7 | workflow_dispatch: 8 | 9 | jobs: 10 | buildx: 11 | runs-on: ubuntu-18.04 12 | steps: 13 | - name: Checkout 14 | uses: actions/checkout@v1 15 | 16 | - name: Login to DockerHub 17 | uses: crazy-max/ghaction-docker-login@v1 18 | with: 19 | username: ${{ secrets.DOCKER_USERNAME }} 20 | password: ${{ secrets.DOCKER_PASSWORD }} 21 | 22 | - name: Set up Docker Buildx 23 | id: buildx 24 | uses: crazy-max/ghaction-docker-buildx@v3 25 | with: 26 | buildx-version: latest 27 | qemu-version: latest 28 | 29 | - name: Build dockerfile (with push) 30 | run: | 31 | docker buildx build \ 32 | --platform linux/amd64 \ 33 | --output "type=image,push=true" \ 34 | --tag johngong/calibre-web:latest \ 35 | --file ./calibre-web/Dockerfile.glibc ./calibre-web 36 | 37 | - name: Docker Hub Description 38 | uses: peter-evans/dockerhub-description@v2 39 | env: 40 | DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} 41 | DOCKERHUB_PASSWORD: ${{ secrets.DOCKERHUB_PASSWORD }} 42 | DOCKERHUB_REPOSITORY: johngong/calibre-web 43 | README_FILEPATH: ./calibre-web/README.md 44 | -------------------------------------------------------------------------------- /.github/workflows/kms-buildx.yml: -------------------------------------------------------------------------------- 1 | name: Build kms-latest Image 2 | 3 | on: 4 | push: 5 | paths: 6 | - 'kms/Dockerfile' 7 | - 'kms/root/**' 8 | workflow_dispatch: 9 | 10 | jobs: 11 | buildx: 12 | runs-on: ubuntu-20.04 13 | steps: 14 | - name: Checkout 15 | uses: actions/checkout@v1 16 | 17 | - name: Set up QEMU 18 | id: qemu 19 | uses: docker/setup-qemu-action@v1 20 | with: 21 | platforms: all 22 | 23 | - name: Set up Docker Buildx 24 | id: buildx 25 | uses: docker/setup-buildx-action@v1 26 | with: 27 | version: latest 28 | 29 | - name: Login to DockerHub 30 | uses: docker/login-action@v1 31 | with: 32 | username: ${{ secrets.DOCKER_USERNAME }} 33 | password: ${{ secrets.DOCKER_PASSWORD }} 34 | 35 | - name: Build and push 36 | uses: docker/build-push-action@v2 37 | with: 38 | context: ./kms 39 | file: ./kms/Dockerfile 40 | platforms: linux/amd64,linux/arm/v7,linux/arm64 41 | push: true 42 | tags: johngong/kms:latest 43 | 44 | - name: Docker Hub Description 45 | uses: peter-evans/dockerhub-description@v2 46 | env: 47 | DOCKERHUB_USERNAME: ${{ secrets.DOCKER_USERNAME }} 48 | DOCKERHUB_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} 49 | DOCKERHUB_REPOSITORY: johngong/kms 50 | README_FILEPATH: ./kms/README.md 51 | -------------------------------------------------------------------------------- /.github/workflows/aria2-buildx.yml: -------------------------------------------------------------------------------- 1 | name: Build aria2-latest Image 2 | 3 | on: 4 | push: 5 | paths: 6 | - 'aria2/Dockerfile' 7 | - 'aria2/root/**' 8 | workflow_dispatch: 9 | 10 | jobs: 11 | buildx: 12 | runs-on: ubuntu-20.04 13 | steps: 14 | - name: Checkout 15 | uses: actions/checkout@v1 16 | 17 | - name: Set up QEMU 18 | id: qemu 19 | uses: docker/setup-qemu-action@v1 20 | with: 21 | platforms: all 22 | 23 | - name: Set up Docker Buildx 24 | id: buildx 25 | uses: docker/setup-buildx-action@v1 26 | with: 27 | version: latest 28 | 29 | - name: Login to DockerHub 30 | uses: docker/login-action@v1 31 | with: 32 | username: ${{ secrets.DOCKER_USERNAME }} 33 | password: ${{ secrets.DOCKER_PASSWORD }} 34 | 35 | - name: Build and push 36 | uses: docker/build-push-action@v2 37 | with: 38 | context: ./aria2 39 | file: ./aria2/Dockerfile 40 | platforms: linux/amd64,linux/arm/v7,linux/arm64 41 | push: true 42 | tags: johngong/aria2:latest 43 | 44 | - name: Docker Hub Description 45 | uses: peter-evans/dockerhub-description@v2 46 | env: 47 | DOCKERHUB_USERNAME: ${{ secrets.DOCKER_USERNAME }} 48 | DOCKERHUB_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} 49 | DOCKERHUB_REPOSITORY: johngong/aria2 50 | README_FILEPATH: ./aria2/README.md 51 | -------------------------------------------------------------------------------- /.github/workflows/qiandao-buildx.yml: -------------------------------------------------------------------------------- 1 | name: Build qiandao-latest Image 2 | 3 | on: 4 | push: 5 | paths: 6 | - 'qiandao/Dockerfile' 7 | - 'qiandao/root/**' 8 | workflow_dispatch: 9 | 10 | jobs: 11 | buildx: 12 | runs-on: ubuntu-20.04 13 | steps: 14 | - name: Checkout 15 | uses: actions/checkout@v1 16 | 17 | - name: Set up QEMU 18 | id: qemu 19 | uses: docker/setup-qemu-action@v1 20 | with: 21 | platforms: all 22 | 23 | - name: Set up Docker Buildx 24 | id: buildx 25 | uses: docker/setup-buildx-action@v1 26 | with: 27 | version: latest 28 | 29 | - name: Login to DockerHub 30 | uses: docker/login-action@v1 31 | with: 32 | username: ${{ secrets.DOCKER_USERNAME }} 33 | password: ${{ secrets.DOCKER_PASSWORD }} 34 | 35 | - name: Build and push 36 | uses: docker/build-push-action@v2 37 | with: 38 | context: ./qiandao 39 | file: ./qiandao/Dockerfile 40 | platforms: linux/amd64,linux/arm/v7,linux/arm64 41 | push: true 42 | tags: johngong/qiandao:latest 43 | 44 | - name: Docker Hub Description 45 | uses: peter-evans/dockerhub-description@v2 46 | env: 47 | DOCKERHUB_USERNAME: ${{ secrets.DOCKER_USERNAME }} 48 | DOCKERHUB_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} 49 | DOCKERHUB_REPOSITORY: johngong/qiandao 50 | README_FILEPATH: ./qiandao/README.md 51 | -------------------------------------------------------------------------------- /.github/workflows/baidunetdisk-buildx.yml: -------------------------------------------------------------------------------- 1 | name: Build baidunetdisk-latest Image 2 | 3 | on: 4 | push: 5 | paths: 6 | - 'baidunetdisk/Dockerfile' 7 | - 'baidunetdisk/root/**' 8 | workflow_dispatch: 9 | 10 | jobs: 11 | buildx: 12 | runs-on: ubuntu-18.04 13 | steps: 14 | - name: Checkout 15 | uses: actions/checkout@v1 16 | 17 | - name: Set up QEMU 18 | id: qemu 19 | uses: docker/setup-qemu-action@v1 20 | with: 21 | platforms: all 22 | 23 | - name: Set up Docker Buildx 24 | id: buildx 25 | uses: docker/setup-buildx-action@v1 26 | with: 27 | version: latest 28 | 29 | - name: Login to DockerHub 30 | uses: docker/login-action@v1 31 | with: 32 | username: ${{ secrets.DOCKER_USERNAME }} 33 | password: ${{ secrets.DOCKER_PASSWORD }} 34 | 35 | - name: Build and push 36 | uses: docker/build-push-action@v2 37 | with: 38 | context: ./baidunetdisk 39 | file: ./baidunetdisk/Dockerfile 40 | platforms: linux/amd64 41 | push: true 42 | tags: johngong/baidunetdisk:latest 43 | 44 | - name: Docker Hub Description 45 | uses: peter-evans/dockerhub-description@v2 46 | env: 47 | DOCKERHUB_USERNAME: ${{ secrets.DOCKER_USERNAME }} 48 | DOCKERHUB_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} 49 | DOCKERHUB_REPOSITORY: johngong/baidunetdisk 50 | README_FILEPATH: ./baidunetdisk/README.md 51 | -------------------------------------------------------------------------------- /.github/workflows/calibre-web-buildx.yml: -------------------------------------------------------------------------------- 1 | name: Build calibre-web-latest Image 2 | 3 | on: 4 | push: 5 | paths: 6 | - 'calibre-web/Dockerfile' 7 | - 'calibre-web/root/**' 8 | workflow_dispatch: 9 | 10 | jobs: 11 | buildx: 12 | runs-on: ubuntu-18.04 13 | steps: 14 | - name: Checkout 15 | uses: actions/checkout@v1 16 | 17 | - name: Set up QEMU 18 | id: qemu 19 | uses: docker/setup-qemu-action@v1 20 | with: 21 | platforms: all 22 | 23 | - name: Set up Docker Buildx 24 | id: buildx 25 | uses: docker/setup-buildx-action@v1 26 | with: 27 | version: latest 28 | 29 | - name: Login to DockerHub 30 | uses: docker/login-action@v1 31 | with: 32 | username: ${{ secrets.DOCKER_USERNAME }} 33 | password: ${{ secrets.DOCKER_PASSWORD }} 34 | 35 | - name: Build and push 36 | uses: docker/build-push-action@v2 37 | with: 38 | context: ./calibre-web 39 | file: ./calibre-web/Dockerfile 40 | platforms: linux/amd64,linux/arm/v7,linux/arm64 41 | push: true 42 | tags: johngong/calibre-web:latest 43 | 44 | - name: Docker Hub Description 45 | uses: peter-evans/dockerhub-description@v2 46 | env: 47 | DOCKERHUB_USERNAME: ${{ secrets.DOCKER_USERNAME }} 48 | DOCKERHUB_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} 49 | DOCKERHUB_REPOSITORY: johngong/calibre-web 50 | README_FILEPATH: ./calibre-web/README.md 51 | -------------------------------------------------------------------------------- /.github/workflows/qBittorrent-buildx.yml: -------------------------------------------------------------------------------- 1 | name: Build qBittorrent-latest Image 2 | 3 | on: 4 | push: 5 | paths: 6 | - 'qBittorrent/Dockerfile' 7 | - 'qBittorrent/root/**' 8 | workflow_dispatch: 9 | 10 | jobs: 11 | buildx: 12 | runs-on: ubuntu-20.04 13 | steps: 14 | - name: Checkout 15 | uses: actions/checkout@v1 16 | 17 | - name: Set up QEMU 18 | id: qemu 19 | uses: docker/setup-qemu-action@v1 20 | with: 21 | platforms: all 22 | 23 | - name: Set up Docker Buildx 24 | id: buildx 25 | uses: docker/setup-buildx-action@v1 26 | with: 27 | version: latest 28 | 29 | - name: Login to DockerHub 30 | uses: docker/login-action@v1 31 | with: 32 | username: ${{ secrets.DOCKER_USERNAME }} 33 | password: ${{ secrets.DOCKER_PASSWORD }} 34 | 35 | - name: Build and push 36 | uses: docker/build-push-action@v2 37 | with: 38 | context: ./qBittorrent 39 | file: ./qBittorrent/Dockerfile 40 | platforms: linux/amd64,linux/arm/v7,linux/arm64 41 | push: true 42 | tags: johngong/qbittorrent:latest 43 | 44 | - name: Docker Hub Description 45 | uses: peter-evans/dockerhub-description@v2 46 | env: 47 | DOCKERHUB_USERNAME: ${{ secrets.DOCKER_USERNAME }} 48 | DOCKERHUB_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} 49 | DOCKERHUB_REPOSITORY: johngong/qbittorrent 50 | README_FILEPATH: ./qBittorrent/README.md 51 | -------------------------------------------------------------------------------- /.github/workflows/calibre-web-CN-buildx.yml: -------------------------------------------------------------------------------- 1 | name: Build calibre-web-CN-latest Image 2 | 3 | on: 4 | push: 5 | paths: 6 | - 'calibre-web/Dockerfile.CN' 7 | - 'calibre-web/root/**' 8 | workflow_dispatch: 9 | 10 | jobs: 11 | buildx: 12 | runs-on: ubuntu-18.04 13 | steps: 14 | - name: Checkout 15 | uses: actions/checkout@v1 16 | 17 | - name: Set up QEMU 18 | id: qemu 19 | uses: docker/setup-qemu-action@v1 20 | with: 21 | platforms: all 22 | 23 | - name: Set up Docker Buildx 24 | id: buildx 25 | uses: docker/setup-buildx-action@v1 26 | with: 27 | version: latest 28 | 29 | - name: Login to DockerHub 30 | uses: docker/login-action@v1 31 | with: 32 | username: ${{ secrets.DOCKER_USERNAME }} 33 | password: ${{ secrets.DOCKER_PASSWORD }} 34 | 35 | - name: Build and push 36 | uses: docker/build-push-action@v2 37 | with: 38 | context: ./calibre-web 39 | file: ./calibre-web/Dockerfile.CN 40 | platforms: linux/amd64,linux/arm/v7,linux/arm64 41 | push: true 42 | tags: johngong/calibre-web:CN-latest 43 | 44 | - name: Docker Hub Description 45 | uses: peter-evans/dockerhub-description@v2 46 | env: 47 | DOCKERHUB_USERNAME: ${{ secrets.DOCKER_USERNAME }} 48 | DOCKERHUB_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} 49 | DOCKERHUB_REPOSITORY: johngong/calibre-web 50 | README_FILEPATH: ./calibre-web/README.md 51 | -------------------------------------------------------------------------------- /.github/workflows/qBittorrent.qee-buildx.yml: -------------------------------------------------------------------------------- 1 | name: Build qBittorrent.qee-latest Image 2 | 3 | on: 4 | push: 5 | paths: 6 | - 'qBittorrent/Dockerfile.qee' 7 | - 'qBittorrent/root/**' 8 | workflow_dispatch: 9 | 10 | jobs: 11 | buildx: 12 | runs-on: ubuntu-20.04 13 | steps: 14 | - name: Checkout 15 | uses: actions/checkout@v1 16 | 17 | - name: Set up QEMU 18 | id: qemu 19 | uses: docker/setup-qemu-action@v1 20 | with: 21 | platforms: all 22 | 23 | - name: Set up Docker Buildx 24 | id: buildx 25 | uses: docker/setup-buildx-action@v1 26 | with: 27 | version: latest 28 | 29 | - name: Login to DockerHub 30 | uses: docker/login-action@v1 31 | with: 32 | username: ${{ secrets.DOCKER_USERNAME }} 33 | password: ${{ secrets.DOCKER_PASSWORD }} 34 | 35 | - name: Build and push 36 | uses: docker/build-push-action@v2 37 | with: 38 | context: ./qBittorrent 39 | file: ./qBittorrent/Dockerfile.qee 40 | platforms: linux/amd64,linux/arm/v7,linux/arm64 41 | push: true 42 | tags: johngong/qbittorrent:qee-latest 43 | 44 | - name: Docker Hub Description 45 | uses: peter-evans/dockerhub-description@v2 46 | env: 47 | DOCKERHUB_USERNAME: ${{ secrets.DOCKER_USERNAME }} 48 | DOCKERHUB_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} 49 | DOCKERHUB_REPOSITORY: johngong/qbittorrent 50 | README_FILEPATH: ./qBittorrent/README.md 51 | -------------------------------------------------------------------------------- /.github/workflows/baidunetdisk-Tags-buildx.yml: -------------------------------------------------------------------------------- 1 | name: Build baidunetdisk-Tags Image 2 | 3 | on: 4 | push: 5 | paths: 6 | - '.github/workflows/baidunetdisk-Tags-buildx.yml' 7 | workflow_dispatch: 8 | 9 | env: 10 | BAIDUNETDISK_VER: 3.5.0 11 | 12 | jobs: 13 | buildx: 14 | runs-on: ubuntu-18.04 15 | steps: 16 | - name: Checkout 17 | uses: actions/checkout@v1 18 | 19 | - name: Set up QEMU 20 | id: qemu 21 | uses: docker/setup-qemu-action@v1 22 | with: 23 | platforms: all 24 | 25 | - name: Set up Docker Buildx 26 | id: buildx 27 | uses: docker/setup-buildx-action@v1 28 | with: 29 | version: latest 30 | 31 | - name: Login to DockerHub 32 | uses: docker/login-action@v1 33 | with: 34 | username: ${{ secrets.DOCKER_USERNAME }} 35 | password: ${{ secrets.DOCKER_PASSWORD }} 36 | 37 | - name: Build and push 38 | uses: docker/build-push-action@v2 39 | with: 40 | context: ./baidunetdisk 41 | file: ./baidunetdisk/Dockerfile 42 | platforms: linux/amd64 43 | push: true 44 | tags: johngong/baidunetdisk:v_${{ env.BAIDUNETDISK_VER }} 45 | 46 | - name: Docker Hub Description 47 | uses: peter-evans/dockerhub-description@v2 48 | env: 49 | DOCKERHUB_USERNAME: ${{ secrets.DOCKER_USERNAME }} 50 | DOCKERHUB_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} 51 | DOCKERHUB_REPOSITORY: johngong/baidunetdisk 52 | README_FILEPATH: ./baidunetdisk/README.md 53 | -------------------------------------------------------------------------------- /syncthing-relay-discosrv/Dockerfile.amd64: -------------------------------------------------------------------------------- 1 | FROM alpine:3.10 2 | 3 | ARG RELAYSRV_VER=1.3.1 4 | ARG DISCOSRV_VER=1.3.1 5 | ARG S6_VER=1.22.1.0 6 | 7 | ENV GLOBAL_RATE=100000000 8 | ENV PER_SESSION_RATE=10000000 9 | ENV MESSAGE_TIMEOUT=1m30s 10 | ENV NETWORK_TIMEOUT=3m0s 11 | ENV PING_INTERVAL=1m30s 12 | ENV PROVIDED_BY=strelaysrv 13 | ENV POOLS= 14 | ENV DISCO_OTHER_OPTION= 15 | ENV RELAY_OTHER_OPTION= 16 | 17 | COPY root / 18 | 19 | RUN apk add --no-cache bash ca-certificates \ 20 | # install relaysrv discosrv 21 | && wget https://github.com/syncthing/relaysrv/releases/download/v${RELAYSRV_VER}/strelaysrv-linux-amd64-v${RELAYSRV_VER}.tar.gz \ 22 | && tar -xvzf strelaysrv-linux-amd64-v${RELAYSRV_VER}.tar.gz \ 23 | && mv strelaysrv-linux-amd64-v${RELAYSRV_VER}/strelaysrv /usr/local/bin/relaysrv \ 24 | && wget https://github.com/syncthing/discosrv/releases/download/v${DISCOSRV_VER}/stdiscosrv-linux-amd64-v${DISCOSRV_VER}.tar.gz \ 25 | && tar -xvzf stdiscosrv-linux-amd64-v${DISCOSRV_VER}.tar.gz \ 26 | && mv stdiscosrv-linux-amd64-v${DISCOSRV_VER}/stdiscosrv /usr/local/bin/discosrv \ 27 | && chmod a+x /usr/local/bin/relaysrv \ 28 | && chmod a+x /usr/local/bin/discosrv \ 29 | && rm -rf stdiscosrv* \ 30 | && rm -rf strelaysrv* \ 31 | # install s6-overlay 32 | && wget https://github.com/just-containers/s6-overlay/releases/download/v${S6_VER}/s6-overlay-amd64.tar.gz \ 33 | && tar -xvzf s6-overlay-amd64.tar.gz \ 34 | && rm s6-overlay-amd64.tar.gz \ 35 | && rm -rf /var/cache/apk/* 36 | 37 | VOLUME discosrvdb certs 38 | 39 | EXPOSE 22067 22070 8443 40 | ENTRYPOINT [ "/init" ] 41 | -------------------------------------------------------------------------------- /baidupcs-web/README.md: -------------------------------------------------------------------------------- 1 | ## 群晖nas自用: 2 | 3 | ### 感谢以下项目: 4 | 5 | [https://github.com/iikira/BaiduPCS-Go](https://github.com/iikira/BaiduPCS-Go "https://github.com/iikira/BaiduPCS-Go") 6 | [https://github.com/liuzhuoling2011/baidupcs-web](https://github.com/liuzhuoling2011/baidupcs-web "https://github.com/liuzhuoling2011/baidupcs-web") 7 | 8 | 9 | ### 版本: 10 | 11 | baidupcs-web:3.7.0 (amd64) 12 | 13 | ### docker命令行设置: 14 | 15 | 1. 下载镜像 16 | 17 | docker pull johngong/baidupcs-web:latest 18 | 19 | 20 | 2. 创建 baidupcs容器 21 | 22 | docker create \ 23 | --name=baidupcs \ 24 | -p 5299:5299 \ 25 | -v /配置文件位置:/config \ 26 | -v /下载位置:/root/Downloads \ 27 | --restart unless-stopped \ 28 | johngong/baidupcs-web:latest 29 | 30 | 31 | 3. 运行 32 | 33 | docker start baidupcs 34 | 35 | 4. 停止 36 | 37 | docker stop baidupcs 38 | 39 | 5. 删除容器 40 | 41 | docker rm baidupcs 42 | 43 | 6. 删除镜像 44 | 45 | docker image rm johngong/baidupcs-web:latest 46 | 47 | ### 变量: 48 | 49 | |参数|说明| 50 | |:-|:-| 51 | | `--name=baidupcs` |容器名| 52 | | `-p 5299:5299` |BaiduPCS-Go web访问端口,[ip:5299](ip:5299)| 53 | | `-v /配置文件位置:/config` |BaiduPCS-Go配置文件位置| 54 | | `-v /下载位置:/root/Downloads ` |BaiduPCS-Go默认下载路径| 55 | 56 | ### 群晖docker设置: 57 | 58 | 1. 卷 59 | 60 | |参数|说明| 61 | |:-|:-| 62 | | `本地文件夹1: /root/Downloads` |BaiduPCS-Go默认下载路径| 63 | | `本地文件夹2:/config` |BaiduPCS-Go配置文件位置| 64 | 65 | 2. 端口 66 | 67 | |参数|说明| 68 | |:-|:-| 69 | | `本地端口1:5299` |BaiduPCS-Go web访问端口,[ip:本地端口1](ip:本地端口1)| 70 | 71 | -------------------------------------------------------------------------------- /.github/workflows/calibre-web-glibc-Tags-buildx.yml: -------------------------------------------------------------------------------- 1 | name: Build calibre-web-glibc-Tags Image 2 | 3 | on: 4 | push: 5 | paths: 6 | - '.github/workflows/calibre-web-glibc-Tags-buildx.yml' 7 | workflow_dispatch: 8 | 9 | env: 10 | CALIBRE_WEB_VER: 0.6.9 11 | CALIBRE_VER: 4.23.0 12 | KEPUBIFY_VER: 3.1.4 13 | 14 | jobs: 15 | buildx: 16 | runs-on: ubuntu-18.04 17 | steps: 18 | - name: Checkout 19 | uses: actions/checkout@v1 20 | 21 | - name: Login to DockerHub 22 | uses: crazy-max/ghaction-docker-login@v1 23 | with: 24 | username: ${{ secrets.DOCKER_USERNAME }} 25 | password: ${{ secrets.DOCKER_PASSWORD }} 26 | 27 | - name: Set up Docker Buildx 28 | id: buildx 29 | uses: crazy-max/ghaction-docker-buildx@v3 30 | with: 31 | buildx-version: latest 32 | qemu-version: latest 33 | 34 | - name: Build dockerfile (with push) 35 | run: | 36 | docker buildx build \ 37 | --platform linux/amd64 \ 38 | --output "type=image,push=true" \ 39 | --tag johngong/calibre-web:${{ env.CALIBRE_WEB_VER }}-${{ env.CALIBRE_VER }}-glibc \ 40 | --file ./calibre-web/Dockerfile.glibc ./calibre-web 41 | 42 | 43 | - name: Docker Hub Description 44 | uses: peter-evans/dockerhub-description@v2 45 | env: 46 | DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} 47 | DOCKERHUB_PASSWORD: ${{ secrets.DOCKERHUB_PASSWORD }} 48 | DOCKERHUB_REPOSITORY: johngong/calibre-web 49 | README_FILEPATH: ./calibre-web/README.md 50 | -------------------------------------------------------------------------------- /aria2/root/etc/cont-init.d/aria2c.sh: -------------------------------------------------------------------------------- 1 | #! /usr/bin/with-contenv bash 2 | 3 | #检查自定义config位置文件 4 | 5 | if [ ! -e "/config/aria2.conf" ] ; then 6 | cp /usr/local/aria2/defaults/aria2.conf /config/aria2.conf 7 | fi 8 | 9 | if [ ! -e "/config/aria2.session" ] ; then 10 | touch /config/aria2.session 11 | fi 12 | 13 | if [ ! -e "/config/dht.dat" ] ; then 14 | touch /config/dht.dat 15 | fi 16 | 17 | 18 | 19 | #修改AriaNg 20 | #cp原始js 21 | cp /usr/local/aria2/AriaNg/js/Originaljs/aria-ng* /usr/local/aria2/AriaNg/js/ 22 | #替换js字符串(修改线程等设置限制。) 23 | sed -i 's/max:16/max:128/g' /usr/local/aria2/AriaNg/js/aria-ng* 24 | sed -i 's/defaultValue:"20M"/defaultValue:"4k"/g' /usr/local/aria2/AriaNg/js/aria-ng* 25 | if [ "$SECRETAUTO" == "YES" ]; then 26 | #替换js字符串(添加设置的token值为默认。) 27 | secret=`echo -n $RPC_SECRET|base64` 28 | sed -i 's/secret:""/secret:"'"$secret"'"/g' /usr/local/aria2/AriaNg/js/aria-ng* 29 | fi 30 | 31 | #设定trackers更新任务 32 | if [ `grep -c updatetrackers.sh /var/spool/cron/crontabs/root` -eq 0 ];then 33 | echo "0 0 * * * /usr/local/aria2/updatetrackers.sh" >> /var/spool/cron/crontabs/root 34 | echo trackers更新任务已设定。 35 | else 36 | echo trackers更新任务已存在。 37 | fi 38 | 39 | #启动更新trackers。 40 | if [ "$TRACKERSAUTO" == "YES" ];then 41 | /usr/local/aria2/updatetrackers.sh 42 | fi 43 | 44 | #设置时区 45 | ln -sf /usr/share/zoneinfo/$TZ /etc/localtime 46 | echo $TZ > /etc/timezone 47 | 48 | #修改用户UID GID 49 | groupmod -o -g "$GID" aria2 50 | usermod -o -u "$UID" aria2 51 | 52 | #修复权限 53 | chown -R aria2:aria2 /config 54 | chown -R aria2:aria2 /Downloads 55 | chown -R aria2:aria2 /usr/local/aria2 56 | -------------------------------------------------------------------------------- /tt-rss/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine:3.10 2 | 3 | ARG TTRSS_VER=19.8 4 | ARG S6_VER=1.22.1.0 5 | 6 | COPY root / 7 | 8 | # install php tt-rss caddy 9 | RUN apk add --no-cache bash shadow ca-certificates caddy php7-pcntl php7-cli php7-curl php7-ldap php7-mcrypt php7-mysqli php7-mysqlnd php7-pdo_mysql php7-mbstring php7-json php7-gd php7-pgsql php7-xml php7-opcache php7-posix php7-apcu php7-fpm php7-pdo php7-fileinfo php7-iconv php7-dom php7-intl php7-pdo_pgsql php7-session \ 10 | && wget -P /tmp https://gitlab.com/gothfox/tt-rss/-/archive/${TTRSS_VER}/tt-rss-${TTRSS_VER}.zip \ 11 | && unzip -d /usr/local/ /tmp/tt-rss-${TTRSS_VER}.zip \ 12 | && mv /usr/local/tt-rss-${TTRSS_VER} /usr/local/tt-rss \ 13 | && rm -rf /tmp/tt-rss-${TTRSS_VER}.zip \ 14 | && rm -rf /var/cache/apk/* \ 15 | # install s6-overlay 16 | && wget https://github.com/just-containers/s6-overlay/releases/download/v${S6_VER}/s6-overlay-amd64.tar.gz \ 17 | && tar -xvzf s6-overlay-amd64.tar.gz \ 18 | && rm s6-overlay-amd64.tar.gz \ 19 | && mkdir -p /usr/local/tt-rss/defaults \ 20 | && mv /usr/local/tt-rss/cache /usr/local/tt-rss/defaults/cache \ 21 | && mv /usr/local/tt-rss/feed-icons /usr/local/tt-rss/defaults/feed-icons \ 22 | && mv /usr/local/tt-rss/lock /usr/local/tt-rss/defaults/lock \ 23 | && mv /usr/local/tt-rss/plugins.local /usr/local/tt-rss/defaults/plugins.local \ 24 | && mv /usr/local/tt-rss/themes.local /usr/local/tt-rss/defaults/themes.local \ 25 | #create ttrss user 26 | && groupmod -g 1000 users \ 27 | && useradd -u 1001 -U -s /bin/bash ttrss \ 28 | && usermod -G users ttrss 29 | 30 | VOLUME /config 31 | EXPOSE 80 32 | ENTRYPOINT [ "/init" ] 33 | -------------------------------------------------------------------------------- /calibre-server/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine:3.9 2 | 3 | ARG GLIBC_VER=2.29 4 | ARG S6_VER=1.22.0.0 5 | 6 | ENV USER= 7 | ENV PASSWORD= 8 | ENV WEBLANGUAGE=zh_CN 9 | 10 | COPY root / 11 | 12 | RUN apk add --no-cache bash ca-certificates python2 expect libstdc++ mesa-gl libxcomposite fontconfig libxrender \ 13 | && wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub \ 14 | && wget -P /tmp https://github.com/sgerrand/alpine-pkg-glibc/releases/download/${GLIBC_VER}-r0/glibc-${GLIBC_VER}-r0.apk \ 15 | && wget -P /tmp https://github.com/sgerrand/alpine-pkg-glibc/releases/download/${GLIBC_VER}-r0/glibc-bin-${GLIBC_VER}-r0.apk \ 16 | && wget -P /tmp https://github.com/sgerrand/alpine-pkg-glibc/releases/download/${GLIBC_VER}-r0/glibc-i18n-${GLIBC_VER}-r0.apk \ 17 | && apk add --no-cache /tmp/glibc-${GLIBC_VER}-r0.apk /tmp/glibc-bin-${GLIBC_VER}-r0.apk /tmp/glibc-i18n-${GLIBC_VER}-r0.apk \ 18 | && /usr/glibc-compat/bin/localedef -i POSIX -f UTF-8 C.UTF-8 || true \ 19 | && wget https://github.com/just-containers/s6-overlay/releases/download/v${S6_VER}/s6-overlay-amd64.tar.gz \ 20 | && tar xvzf s6-overlay-amd64.tar.gz \ 21 | && wget -nv -O- https://download.calibre-ebook.com/linux-installer.sh | bash /dev/stdin \ 22 | && rm /etc/apk/keys/sgerrand.rsa.pub \ 23 | && apk del glibc-i18n \ 24 | && rm s6-overlay-amd64.tar.gz \ 25 | && rm -rf /var/cache/apk/* \ 26 | && rm -rf /tmp/* \ 27 | && chmod a+x /usr/local/calibre-server/useradd.sh \ 28 | && chmod a+x /usr/local/calibre-server/languagechange.sh 29 | 30 | VOLUME /library /config 31 | EXPOSE 8080 32 | ENTRYPOINT [ "/init" ] 33 | -------------------------------------------------------------------------------- /qiandao/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine:3.13 2 | 3 | ARG S6_VER=2.2.0.1 4 | 5 | ENV TZ=Asia/Shanghai 6 | ENV DOMAIN= 7 | ENV MAIL_STMP= 8 | ENV MAIL_PORT= 9 | ENV MAIL_SSL= 10 | ENV MAIL_STARTTLS= 11 | ENV MAIL_USER= 12 | ENV MAIL_PASSWORD= 13 | ENV MAIL_DOMAIN= 14 | ENV MAILGUN_KEY= 15 | ENV ADMINEMAIL= 16 | 17 | 18 | RUN apk add --no-cache bash ca-certificates tzdata python2 git gcc libc-dev python2-dev \ 19 | #install pip2(alpine:3.13) 20 | && wget --no-check-certificate https://bootstrap.pypa.io/2.7/get-pip.py \ 21 | && python2 get-pip.py \ 22 | # install s6-overlay 23 | && 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 \ 24 | && wget --no-check-certificate https://github.com/just-containers/s6-overlay/releases/download/v${S6_VER}/s6-overlay-${s6_arch}.tar.gz \ 25 | && tar -xvzf s6-overlay-${s6_arch}.tar.gz \ 26 | && rm s6-overlay-${s6_arch}.tar.gz \ 27 | # install qiandao 28 | && git clone https://github.com/binux/qiandao.git /usr/local/qiandao \ 29 | && pip2 install --no-cache-dir -r /usr/local/qiandao/requirements.txt \ 30 | && mkdir -p /usr/local/qiandao/defaults/ \ 31 | && mv /usr/local/qiandao/config.py /usr/local/qiandao/defaults/ \ 32 | && mv /usr/local/qiandao/libs/utils.py /usr/local/qiandao/defaults/ \ 33 | && chmod a+x /usr/local/qiandao/run.py \ 34 | # clean 35 | && rm get-pip.py \ 36 | && pip2 uninstall redis -y \ 37 | && apk del git gcc libc-dev python2-dev \ 38 | && rm -rf /var/cache/apk/* 39 | 40 | COPY root / 41 | 42 | 43 | VOLUME /dbpath 44 | EXPOSE 8923 45 | ENTRYPOINT [ "/init" ] 46 | -------------------------------------------------------------------------------- /.github/workflows/syncthing-relay-discosrv-buildx.yml: -------------------------------------------------------------------------------- 1 | name: Build syncthing-relay-discosrv-latest Image 2 | 3 | on: 4 | push: 5 | paths: 6 | - 'syncthing-relay-discosrv/Dockerfile' 7 | - 'syncthing-relay-discosrv/root/**' 8 | workflow_dispatch: 9 | 10 | jobs: 11 | buildx: 12 | runs-on: ubuntu-20.04 13 | steps: 14 | - name: Checkout 15 | uses: actions/checkout@v1 16 | 17 | - name: Set up QEMU 18 | id: qemu 19 | uses: docker/setup-qemu-action@v1 20 | with: 21 | platforms: all 22 | 23 | - name: Set up Docker Buildx 24 | id: buildx 25 | uses: docker/setup-buildx-action@v1 26 | with: 27 | version: latest 28 | 29 | - name: Login to DockerHub 30 | uses: docker/login-action@v1 31 | with: 32 | username: ${{ secrets.DOCKER_USERNAME }} 33 | password: ${{ secrets.DOCKER_PASSWORD }} 34 | 35 | - name: Build and push 36 | uses: docker/build-push-action@v2 37 | with: 38 | context: ./syncthing-relay-discosrv 39 | file: ./syncthing-relay-discosrv/Dockerfile 40 | platforms: linux/amd64,linux/arm/v7,linux/arm64 41 | push: true 42 | tags: johngong/syncthing-relay-discosrv:latest 43 | 44 | - name: Docker Hub Description 45 | uses: peter-evans/dockerhub-description@v2 46 | env: 47 | DOCKERHUB_USERNAME: ${{ secrets.DOCKER_USERNAME }} 48 | DOCKERHUB_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} 49 | DOCKERHUB_REPOSITORY: johngong/syncthing-relay-discosrv 50 | README_FILEPATH: ./syncthing-relay-discosrv/README.md 51 | -------------------------------------------------------------------------------- /.github/workflows/anki-sync-server-buildx.yml: -------------------------------------------------------------------------------- 1 | name: Build anki-sync-server-latest Image 2 | 3 | on: 4 | push: 5 | paths: 6 | - 'anki-sync-server/Dockerfile' 7 | - 'anki-sync-server/root/**' 8 | workflow_dispatch: 9 | 10 | jobs: 11 | buildx: 12 | runs-on: ubuntu-20.04 13 | steps: 14 | - name: Checkout 15 | uses: actions/checkout@v1 16 | 17 | - name: Set up QEMU 18 | id: qemu 19 | uses: docker/setup-qemu-action@v1 20 | with: 21 | platforms: all 22 | 23 | - name: Set up Docker Buildx 24 | id: buildx 25 | uses: docker/setup-buildx-action@v1 26 | with: 27 | version: latest 28 | 29 | - name: Login to DockerHub 30 | uses: docker/login-action@v1 31 | with: 32 | username: ${{ secrets.DOCKER_USERNAME }} 33 | password: ${{ secrets.DOCKER_PASSWORD }} 34 | 35 | - name: run multiarch/qemu-user-static 36 | run: | 37 | docker run --rm --privileged multiarch/qemu-user-static --reset -p yes 38 | 39 | - name: Build and push 40 | uses: docker/build-push-action@v2 41 | with: 42 | context: ./anki-sync-server 43 | file: ./anki-sync-server/Dockerfile 44 | platforms: linux/amd64,linux/arm64 45 | push: true 46 | tags: johngong/anki-sync-server:latest 47 | 48 | - name: Docker Hub Description 49 | uses: peter-evans/dockerhub-description@v2 50 | with: 51 | username: ${{ secrets.DOCKER_USERNAME }} 52 | password: ${{ secrets.DOCKER_PASSWORD }} 53 | repository: johngong/anki-sync-server 54 | readme-filepath: ./anki-sync-server/README.md 55 | -------------------------------------------------------------------------------- /anki-sync-server/Dockerfile.tsudoko: -------------------------------------------------------------------------------- 1 | FROM alpine:3.13 2 | 3 | ARG ANKI__SYNC_SERVER=2.1.0 4 | ARG S6_VER=2.2.0.1 5 | 6 | ENV USER= 7 | ENV PASSWORD= 8 | 9 | COPY root / 10 | 11 | RUN apk add --no-cache bash python3 expect py3-pip \ 12 | #install anki-sync-server 13 | && wget -P /tmp https://github.com/tsudoko/anki-sync-server/releases/download/${ANKI__SYNC_SERVER}/ankisyncd-${ANKI__SYNC_SERVER}.tar.gz \ 14 | && tar -zxvf /tmp/ankisyncd-${ANKI__SYNC_SERVER}.tar.gz --strip-components 1 -C /usr/local/anki-sync-server \ 15 | #Anki ≥2.1.9 remove "pyaudio" from requirements.txt 16 | && sed -i '/^pyaudio/d' /usr/local/anki-sync-server/anki-bundled/requirements.txt \ 17 | && pip3 install --no-cache-dir -r /usr/local/anki-sync-server/anki-bundled/requirements.txt \ 18 | && pip3 install --no-cache-dir webob \ 19 | #install s6-overlay 20 | && 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 \ 21 | && wget --no-check-certificate https://github.com/just-containers/s6-overlay/releases/download/v${S6_VER}/s6-overlay-${s6_arch}.tar.gz \ 22 | && tar -xvzf s6-overlay-${s6_arch}.tar.gz \ 23 | #clear 24 | && rm s6-overlay-${s6_arch}.tar.gz \ 25 | && rm -rf /var/cache/apk/* \ 26 | && rm -rf /tmp/* \ 27 | #defaults ankisyncd.conf 28 | && mkdir -p /usr/local/anki-sync-server/defaults \ 29 | && mv /usr/local/anki-sync-server/ankisyncd.conf /usr/local/anki-sync-server/defaults/ankisyncd.conf \ 30 | && sed -i 's/\.\//\/config\//g' /usr/local/anki-sync-server/defaults/ankisyncd.conf \ 31 | # ankisyncd路径 32 | && echo "/usr/local/anki-sync-server/" > /usr/lib/python3.8/site-packages/ankisyncd.pth \ 33 | && chmod a+x /usr/local/anki-sync-server/useradd.sh 34 | 35 | VOLUME /config 36 | EXPOSE 27701 37 | ENTRYPOINT [ "/init" ] 38 | -------------------------------------------------------------------------------- /qBittorrent/root/usr/local/qbittorrent/defaults/Search/sukebei.py: -------------------------------------------------------------------------------- 1 | #VERSION: 1.20 2 | #AUTHORS: anon 3 | from helpers import retrieve_url, download_file 4 | from novaprinter import prettyPrinter 5 | import json 6 | class sukebei(object): 7 | url = 'https://sukebei.pantsu.cat' 8 | name = 'sukebei' 9 | supported_categories = {'all': '_', 10 | 'anime': '1_1', 11 | 'books': '4_', 12 | 'pictures': '1_', 13 | 'games': '1_3'} 14 | engine_url='sukebei' 15 | def __init__(self): 16 | pass 17 | def download_torrent(self, info): 18 | print(download_file(info)) 19 | def search(self, what, cat='all'): 20 | per_page=100 21 | url = self.url+'/api/search/?c='+self.supported_categories[cat]+'&q='+what+'&limit='+str(1)+'&page='+str(1) 22 | count = json.loads(retrieve_url(url))['totalRecordCount'] 23 | pages=count/per_page 24 | 25 | if count%per_page != 0: 26 | pages=int(count/per_page)+1 27 | 28 | for page, x in enumerate(range(pages),start=1): 29 | url = self.url+'/api/search/?c='+self.supported_categories[cat]+'&q='+what+'&limit='+str(per_page)+'&page='+str(page) 30 | link = json.loads(retrieve_url(url)) 31 | for animu in link['torrents']: 32 | dic={} 33 | dic['link'] = animu['magnet'] 34 | dic['name'] = animu['name'] 35 | dic['size'] = str(animu['filesize'])+'B' 36 | dic['seeds']= animu['seeders'] 37 | dic['leech']= animu['leechers'] 38 | dic['desc_link']=self.url+'/view/'+str(animu['id']) 39 | dic['engine_url']=self.engine_url 40 | prettyPrinter(dic) 41 | -------------------------------------------------------------------------------- /qiandao/root/usr/local/qiandao/mailstarttls/config.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- encoding: utf-8 -*- 3 | # vim: set et sw=4 ts=4 sts=4 ff=unix fenc=utf8: 4 | # Author: Binux 5 | # http://binux.me 6 | # Created on 2014-07-30 12:21:48 7 | 8 | import os 9 | import hashlib 10 | import urlparse 11 | 12 | debug = False 13 | gzip = True 14 | bind = '0.0.0.0' 15 | port = int(os.getenv('PORT', 8923)) 16 | https = bool(os.getenv('ENABLE_HTTPS', False)) 17 | cookie_days = 5 18 | mysql_url = urlparse.urlparse(os.getenv('JAWSDB_MARIA_URL', '')) 19 | redis_url = urlparse.urlparse(os.getenv('REDISCLOUD_URL', '')) 20 | 21 | class mysql(object): 22 | host = mysql_url.hostname or 'localhost' 23 | port = mysql_url.port or '3306' 24 | database = mysql_url.path[1:] or 'qiandao' 25 | user = mysql_url.username or 'qiandao' 26 | passwd = mysql_url.password or None 27 | 28 | class sqlite3(object): 29 | path = './database.db' 30 | 31 | # 数据库类型,修改 sqlite3 为 mysql 使用 mysql 32 | db_type = os.getenv('DB_TYPE', 'sqlite3') 33 | 34 | # redis 连接参数,可选 35 | class redis(object): 36 | host = redis_url.hostname or 'localhost' 37 | port = redis_url.port or 6379 38 | passwd = redis_url.password or None 39 | db = int(os.getenv('REDIS_DB_INDEX', 1)) 40 | evil = 100 41 | 42 | pbkdf2_iterations = 400 43 | aes_key = hashlib.sha256(os.getenv('AES_KEY', 'binux')).digest() 44 | cookie_secret = hashlib.sha256(os.getenv('COOKIE_SECRET', 'binux')).digest() 45 | check_task_loop = 10000 46 | download_size_limit = 1*1024*1024 47 | proxies = [] 48 | 49 | # 域名 50 | domain = 'qiandao.today' 51 | 52 | # mailgun 邮件发送, 域名和 apikey 53 | #以下有修改 54 | 55 | mail_smtp = "" 56 | mail_port = "" 57 | mail_ssl = "" 58 | mail_starttls = "" 59 | mail_user = "" 60 | mail_password = "" 61 | mail_domain = "" 62 | mailgun_key = "" 63 | 64 | 65 | # google analytics 66 | ga_key = "" 67 | 68 | try: 69 | from local_config import * 70 | except ImportError: 71 | pass 72 | -------------------------------------------------------------------------------- /qBittorrent/root/usr/local/qbittorrent/defaults/Search/magnetdl.py: -------------------------------------------------------------------------------- 1 | #VERSION: 1.3 2 | #AUTHORS: hoanns,nindogo 3 | # magnetdl.com 4 | # first thirty pages 5 | 6 | import re 7 | # qBt 8 | from novaprinter import prettyPrinter 9 | from helpers import retrieve_url 10 | 11 | 12 | # noinspection PyPep8Naming 13 | class magnetdl(object): 14 | url = "http://www.magnetdl.com/" 15 | name = "MagnetDL" 16 | result_page_match = re.compile( 17 | '.*?.*?.*?(.*?)(.*?)(.*?)') 18 | total_results_num = re.compile( 19 | r'