赞
踩
因为使用Docker的隔离性、可移植性比较好,所以自己使用的服务一般都使用Docker部署,这样每次迁移时将挂载的目录备份即可,不需要考虑机器的版本和兼容性,更换设备时基本可以做到一键迁移,而且升级镜像也比较方便。
这次的教程是将PT下载中的一些常用应用都使用docker部署,将之聚合到一篇文章,方便自己查看,也希望能够帮助到有相同需求的朋友。
这次介绍的服务有下面几种:
所有服务均采用docker-compose
进行部署,也就是只需要个docker-compose.yml
,在Linux环境下,比如盒子里,只需要使用docker-compose up -d
命令即可直接运行,在NAS环境下更简单,以威联通为例,点击创建应用程序,将docker-compose.yml
中的内容粘贴进去即可,无需任何额外配置。
比如我的威联通的服务基本全部采用docker进行配置:
Linux环境的docker的安装可以参考我的这篇文章:https://blog.csdn.net/shangyexin/article/details/103910923
本文中的内容因为涉及到DDNS和Nginx反向代理,所以最适合的用户是有公网IP和域名的朋友;如果没有的话,可以跳过DDNS和Nginx,直接看相关服务的部署,同时服务部署完成后,需要在内网访问。
如果你符合下面所有条件,恭喜你,你就是本文最佳目标读者:
主要服务的网络架构如下:
因为如果你要在外网使用服务的话,使用http
就等于裸奔,你网络链路上的任何一个环节都可以看到你输入的账号和密码,所以墙裂建议使用https
。
几块钱买一个域名,然后证书的申请很简单,阿里和腾讯都有免费的一年证书,动手能力再强一点的,可以使用Let's Encrypt
自动颁发证书,自动续期。
好了,啰里啰唆这么多,终于到了我们服务部署的环节。
DDNS相信已经不需要我详细介绍,简单点说就是你的公网IP每次拨号后会改变,每次IP改变后自动将你的域名解析到新的IP,这样你只要访问你的域名,就可以持续访问到你的服务。
前提条件:
AccessKey
关于AccessKey
的获取可以参考我的这篇文章:
https://blog.csdn.net/shangyexin/article/details/105572102
docker-compose.yml参考:
version: '3.2'
services:
ddns:
image: chenhw2/aliyun-ddns-cli
container_name: ddns
restart: always
environment:
AKID: 获取到的AccessKey ID
AKSCT: 获取到的AccessKeySecret
DOMAIN: 你要解析的域名
REDO: 60
这里以威联通为例,打开Container Station
,点击创建
,点击创建应用程序
,将上面的yml
中内容粘贴进去即可,验证OK后点击创建。
这里的Nginx主要作用是对其他服务进行反向代理,我们和Nginx之间的通信采用https加密,Nginx和内网的服务采用http进行通信,这样有下面几个好处:
去你购买域名的服务商处申请证书,然后选择Nginx服务器证书下载,一般是一个pem
文件和一个key
文件。
这里我们使用host
模式部署nginx,这样后期可以直接进行代理而不需要再expose新的端口。
需要注意的是,下面的/share/CACHEDEV3_DATA/Docker/
路径前缀需要替换为你机器的实际路径,建议所有Docker部署的服务放到统一的文件中进行管理,也方便我们后期进行备份。
这里有2个路径需要我们关注:
/share/CACHEDEV3_DATA/Docker/nginx/conf.d
:nginx配置文件夹,后面所有服务的配置文件都在这里新增/share/CACHEDEV3_DATA/Docker/nginx/ssl
:SSL证书文件夹,我们的证书文件需要放到这个目录docker-compose.yml参考:
version: '3' services: nginx: image: nginx:stable-alpine container_name: nginx restart: always #privileged: true environment: - TZ=Asia/Shanghai network_mode: "host" volumes: - /etc/localtime:/etc/localtime:ro - /share/CACHEDEV3_DATA/Docker/nginx/conf.d:/etc/nginx/conf.d - /share/CACHEDEV3_DATA/Docker/nginx/log:/var/log/nginx - /share/CACHEDEV3_DATA/Docker/nginx/dist:/opt/dist:ro - /share/CACHEDEV3_DATA/Docker/nginx/ssl:/ssl:ro
假设我们下载的证书文件分别是home.shangyexin.com.key
和home.shangyexin.com.pem
,将这2个文件放置到你上面配置的证书文件夹,比如/share/CACHEDEV3_DATA/Docker/nginx/ssl
。
现在你就可以启动容器了,具体的每个服务的代理设置我们会在相应的服务中分别讲解。
docker-compose.yml参考:
version: "3.2" services: qbittorrent: image: linuxserver/qbittorrent container_name: qbittorrent environment: - PUID=1001 - PGID=1001 - TZ=Asia/Shanghai - UMASK_SET=022 - WEBUI_PORT=8081 volumes: - /share/CACHEDEV3_DATA/Docker/qbittorrent/config:/config - /share/CACHEDEV3_DATA/Multimedia/QBDownloads:/downloads ports: - 10681:10681 - 10681:10681/udp - 8081:8081 restart: unless-stopped
PUID
和PGID
这是容器里启动服务的用户的用户UID和GID,一般是为了限制容器服务的权限,比如你可以在NAS里,新建一个docker
用户,所有的docker服务都用这个权限来启动。
用户新建完成后,ssh
登陆NAS后,使用cat /etc/passwd
查看这个用户的UID和GID,比如像这样:docker:x:1000:100:Linux User,,Docker服务用户,:/share/homes/docker:/bin/sh
,然后修改上面的PIUD=1000
,PGID=100
,如果你没有这个需求,不用管这个选项即可。
WEBUI_PORT
这里需要改成你web想要访问的端口,服务启动后,输入IP+端口才能访问到你的服务。注意的是配置文件中的ports
选项的第三行需要同步将这个端口expose出来,也就是这里的端口需要改成和WEBUI_PORT
一样的端口。
ports
这里的10681
需要改成你实际使用,qbittorrent
用来传入连接的端口,这个和你的WEB端口是两个东西,是BT下载用的。这个端口,路由器里面需要配置端口转发,你的qbittorrent
配置里也要配置成相同端口。
这里多说一句,因为我路由器里配置的端口范围转发,比如转发10000-11000
所有范围的端口到我的NAS,这样只要我NAS的所有服务都配置成这个范围的端口,就不需要为每个端口进行转发配置。
volumes
这里是将的宿主机的磁盘挂载到容器里面去,这样我们可以直接修改文件而不需要进入容器。
/share/CACHEDEV3_DATA/Docker/qbittorrent/config
,qb的配置文件夹,改成你的实际设备路径,后期的种子文件夹可以直接去这个里面找。/share/CACHEDEV3_DATA/Multimedia/QBDownloads
: 下载文件夹,你下载所有文件都在这个文件夹。这个时候,如果你一切操作都OK的话,你已经可以在内网访问到你的qBittorrent
了,比如你的NAS的IP地址是192.168.31.8
,在内网你输入http://192.168.31.8:8081
应该就可以访问到qBittorrent
了。
但是如果我们还想上https
,增加我们在外网访问的安全性,还需要使用Nginx进行反向代理配置。
还记得我们上面的Nginx配置文件路径吗,比如/share/CACHEDEV3_DATA/Docker/nginx/conf.d
,使用SSH登入系统,使用cd
命令进入当前文件夹,使用vim
或者直接用sftp
将当前配置文件复制到这个目录即可。
配置文件qbittorrent.conf
,文件名可以修改,但是一定要使用conf
后缀名:
server { listen 10081 ssl http2; listen [::]:10081 ssl http2; server_name home.shangyexin.com; ssl_certificate /ssl/home.shangyexin.com; ssl_certificate_key /ssl/home.shangyexin.com; client_max_body_size 100G; location / { proxy_pass http://127.0.0.1:8081; proxy_set_header Host 127.0.0.1:8081; proxy_set_header X-Forwarded-Host $http_host; proxy_set_header X-Forwarded-For $remote_addr; } proxy_cookie_path / "/; Secure"; }
这里的listen端口10081
需要改成你配置过转发的端口,也就是你在外网能够访问到端口,比如我们的8081
没有配置转发,所以在外网无法使用http进行访问。
server_name
改成你的实际域名。
ssl_certificate
因为我们已经将容器内的ssl
文件夹映射到宿主机的/share/CACHEDEV3_DATA/Docker/nginx/ssl
文件夹,所以这里不用修改,只需要你将证书文件放到你映射的文件夹即可。
将http://127.0.0.1:8081
中的端口改成你设置的内网WEBUI_PORT
端口。
client_max_body_size
:可选项,比如用于一次性添加大量种子。
只需要重启Nginx即可使我们的配置生效,因为我们的Nginx
也是使用docker配置的,所以重启Nginx这个容器就行了。
这时候在浏览器中输入你的域名加端口即可在外网使用https
进行访问,以增加我们账号密码的安全性:
https://home.shangyexin.com:10081
docker-compose.yml参考:
version: "3.2" services: transmission: image: lscr.io/linuxserver/transmission container_name: transmission environment: - PUID=1001 - PGID=1001 - TZ=Asia/Shanghai - TRANSMISSION_WEB_HOME=/transmission-web-control/ - USER=your_user_name - PASS=your_passwd volumes: - /share/CACHEDEV3_DATA/Docker/transmission/config:/config - /share/CACHEDEV3_DATA/Network/transmission/downloads:/downloads - /share/CACHEDEV3_DATA/Network/transmission/watch:/watch - /share/CACHEDEV3_DATA/Multimedia/QBDownloads:/qbdownloads ports: - 9091:9091 - 10413:10413 - 10413:10413/udp restart: unless-stopped
PUID
和PGID
同上面的qbittorrent
TRANSMISSION_WEB_HOME
这是WEB_UI的风格,这里改成中文的,很多人习惯使用的/transmission-web-control/
。
USER
和PASS
改成你想设置的用户名和密码。
volumes
这里是将的宿主机的磁盘挂载到容器里面去,前面需要改成你设备的实际路径。
config
:配置目录,后面的种子文件夹在这里面downloads
:下载目录watch
:种子监控目录qbdownloads
: 可选项,这样transmission
可以访问到qbittorrent
的下载文件ports
左边的的9091
需要改成你实际使用,右边容器内的端口不能改,但这里建议不修改,这里的端口就是我们web访问的端口。
这里的10413
需要改成你实际使用,transmission
用来传入连接的端口,这个端口,路由器里面需要配置端口转发,你的transmission
配置里也要配置成相同端口。
这个时候,如果你一切操作都OK的话,你已经可以在内网访问到你的transmission
了,比如你的NAS的IP地址是192.168.31.8
,在内网你输入http://192.168.31.8:9091
应该就可以访问到transmission
了。
但是如果我们还想使用https
,增加我们在外网访问的安全性,还需要使用Nginx进行反向代理配置。
还记得我们上面的Nginx配置文件路径吗,比如/share/CACHEDEV3_DATA/Docker/nginx/conf.d
,使用SSH登入系统,使用cd
命令进入当前文件夹,使用vim
或者直接用sftp
将当前配置文件复制到当前目录即可。
配置文件transmission.conf
,文件名可以修改,但是一定要使用conf
后缀名:
server { listen 10091 ssl http2; listen [::]:10091 ssl http2; server_name home.shangyexin.com; ssl_certificate /ssl/home.shangyexin.com.pem; ssl_certificate_key /ssl/home.shangyexin.com.key; client_max_body_size 100G; location / { proxy_redirect off; proxy_pass http://127.0.0.1:9091; proxy_set_header Host $http_host; } }
这里的listen端口10091
需要改成你配置过转发的端口,也就是你在外网能够访问到端口,比如我们的8081
没有配置转发,所以在外网无法使用http
进行访问。
server_name
改成你的实际域名。
ssl_certificate
因为我们已经将容器内的ssl
文件夹映射到宿主机的/share/CACHEDEV3_DATA/Docker/nginx/ssl
文件夹,所以这里不用修改,只需要你将证书文件放到你映射的文件夹即可。
将http://127.0.0.1:9091
中的端口改成你设置的内网端口。
client_max_body_size
:可选项,比如用于一次性添加大量种子。
只需要重启Nginx即可使我们的配置生效,因为我们的Nginx
也是使用docker配置的,所以重启Nginx这个容器就行了。
这时候在浏览器中输入你的域名加端口即可在外网使用https
进行访问,以增加我们账号密码的安全性:
https://home.shangyexin.com:10091
篇幅所限,这里不讲解软件的详细使用,只有部署服务的流程。
docker-compose.yml参考:
version: "3.2"
services:
iyuuplus:
image: iyuucn/iyuuplus
container_name: iyuuplus
volumes:
- /share/CACHEDEV3_DATA/Docker/iyuuplus/db:/IYUU/db
- /share/CACHEDEV3_DATA/Docker/qbittorrent/config/qBittorrent/BT_backup:/BT_backup
- /share/CACHEDEV3_DATA/Docker/transmission/config/torrents:/torrents
ports:
- 8787:8787
restart: unless-stopped
volumes
这里是将的宿主机的磁盘挂载到容器里面去,前面需要改成你设备的实际路径。
/share/CACHEDEV3_DATA/Docker/iyuuplus/db
:程序数据库存放位置,改成机器中你想放置的任意路径/share/CACHEDEV3_DATA/Docker/qbittorrent/config/qBittorrent/BT_backup
:这是前面qBittorrent
里配置文件的路径,这里更加详细点,是种子的存放目录的绝对路径/share/CACHEDEV3_DATA/Docker/transmission/config/torrents
:这是前面transmission
里配置文件的路径,这里更加详细点,是种子的存放目录的绝对路径这个时候,如果你一切操作都OK的话,你已经可以在内网访问到你的IYUUPlus
了,比如你的NAS的IP地址是192.168.31.8
,在内网你输入http://192.168.31.8:8787
应该就可以访问到IYUUPlus
了。
但是如果我们还想使用https
,增加我们在外网访问的安全性,还需要使用Nginx进行反向代理配置。
还记得我们上面的Nginx配置文件路径吗,比如/share/CACHEDEV3_DATA/Docker/nginx/conf.d
,使用SSH登入系统,使用cd
命令进入当前文件夹,使用vim
或者直接用sftp
将当前配置文件复制到当前目录即可。
配置文件iyuuplus.conf
,文件名可以修改,但是一定要使用conf
后缀名:
server {
listen 10787 ssl http2;
listen [::]:10787 ssl http2;
server_name home.shangyexin.com;
ssl_certificate /ssl/home.shangyexin.com.pem;
ssl_certificate_key /ssl/home.shangyexin.com.key;
location / {
proxy_redirect off;
proxy_pass http://127.0.0.1:8787;
proxy_set_header Host $http_host;
}
}
这里的listen端口10787
需要改成你配置过转发的端口,也就是你在外网能够访问到端口,比如我们的8787
没有配置转发,所以在外网无法使用http进行访问。
server_name
改成你的实际域名。
ssl_certificate
因为我们已经将容器内的ssl
文件夹映射到宿主机的/share/CACHEDEV3_DATA/Docker/nginx/ssl
文件夹,所以这里不用修改,只需要你将证书文件放到你映射的文件夹即可。
将http://127.0.0.1:8787
中的端口改成你设置的内网端口。
只需要重启Nginx即可使我们的配置生效,因为我们的Nginx
也是使用docker配置的,所以重启Nginx这个容器就行了。
这时候在浏览器中输入你的域名加端口即可在外网使用https
进行访问,以增加我们账号密码的安全性:
https://home.shangyexin.com:10787
这里只适合迅雷超级VIP用户,或者迅雷快鸟用户,可以自己到官网看相应的资费,上行最高提高到50M,下行最高提高到700M,但是一定要到官网看看自己有没有办法提速和实际能提速多少,比如我就是将200M下行提速到了500M下行。
好处就是可以按月购买以及比有的地方的官方提速包要便宜些,至于使用容器的好处就是不需要电脑打开迅雷客户端才提速,可以一直保证家中的带宽是提速状态。
docker-compose.yml参考:
version: "3.2"
services:
xunlei:
image: scjtqs/xunlei-fastdick
container_name: xunlei
environment:
- XUNLEI_UID=your_xunlei_username
- XUNLEI_PASSWD=your_xunlei_passwd
restart: unless-stopped
没啥好解释的,XUNLEI_UID
和XUNLEI_PASSWD
换成你的迅雷用户名和密码就行了,看docker输出的日志是成功后,再测速看看有无成功即可。
因为篇幅所限,本篇主要写了一些常用的PT工具的docker部署办法,还有一些常用的服务比如个人云盘Nextcloud
和个人多媒体服务器Jellyfin
等等就不写在这里了。
其实Nextcloud
的配置可以参考我的这篇文章:https://blog.csdn.net/shangyexin/article/details/106306680,只是当时针对服务器写的,可能很多东西没有解释的那么详细。
还有本人水平所限,可能文中有很多错误或者不是最优配置,请谅解。
但是容器用多了真的再也回不去了,毕竟谁能够拒绝再也不用为环境而头疼,几分钟内立刻搭建好自己常用的服务呢。
希望多多少少能帮助到一些人吧。
Enjoy it now.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。