PT工具之Docker全家桶+HTTPS详细配置教程
一、前言
因为使用Docker的隔离性、可移植性比较好,所以自己使用的服务一般都使用Docker部署,这样每次迁移时将挂载的目录备份即可,不需要考虑机器的版本和兼容性,更换设备时基本可以做到一键迁移,而且升级镜像也比较方便。
这次的教程是将PT下载中的一些常用应用都使用docker部署,将之聚合到一篇文章,方便自己查看,也希望能够帮助到有相同需求的朋友。
二、服务简介
(一)服务种类
这次介绍的服务有下面几种:
- 阿里云DDNS
- Nginx
- qBittorrent
- Transmission
- IYUUPlus
- 迅雷快鸟
所有服务均采用docker-compose
进行部署,也就是只需要个docker-compose.yml
,在Linux环境下,比如盒子里,只需要使用docker-compose up -d
命令即可直接运行,在NAS环境下更简单,以威联通为例,点击创建应用程序,将docker-compose.yml
中的内容粘贴进去即可,无需任何额外配置。
比如我的威联通的服务基本全部采用docker进行配置:
Linux环境的docker的安装可以参考我的这篇文章:Ubuntu使用Docker搭建编译环境完整教程
(二)适合对象
本文中的内容因为涉及到DDNS和Nginx反向代理,所以最适合的用户是有公网IP和域名的朋友;如果没有的话,可以跳过DDNS和Nginx,直接看相关服务的部署,同时服务部署完成后,需要在内网访问。
如果你符合下面所有条件,恭喜你,你就是本文最佳目标读者:
- 喜欢使用Docker部署服务
- 有动态公网IP
- 有域名
- 会申请证书
- 需要使用https
(三)网络架构
主要服务的网络架构如下:
因为如果你要在外网使用服务的话,使用http
就等于裸奔,你网络链路上的任何一个环节都可以看到你输入的账号和密码,所以墙裂建议使用https
。
几块钱买一个域名,然后证书的申请很简单,阿里和腾讯都有免费的一年证书,动手能力再强一点的,可以使用Let's Encrypt
自动颁发证书,自动续期。
三、服务部署
好了,啰里啰唆这么多,终于到了我们服务部署的环节。
(一)阿里云DDNS
1.前提条件
DDNS相信已经不需要我详细介绍,简单点说就是你的公网IP每次拨号后会改变,每次IP改变后自动将你的域名解析到新的IP,这样你只要访问你的域名,就可以持续访问到你的服务。
前提条件:
- 有公网IP
- 已经在阿里云购买域名
- 已经获取
AccessKey
关于AccessKey
的获取可以参考我的这篇文章:
Windows使用阿里云RAM访问控制API实现自建DDNS动态域名解析
2.配置文件
docker-compose.yml参考:
1 |
|
3.创建容器
这里以威联通为例,打开Container Station
,点击创建
,点击创建应用程序
,将上面的yml
中内容粘贴进去即可,验证OK后点击创建。
(二)Nginx
这里的Nginx主要作用是对其他服务进行反向代理,我们和Nginx之间的通信采用https加密,Nginx和内网的服务采用http进行通信,这样有下面几个好处:
- Nginx一般比服务自带的https兼容性好
- 证书统一管理,同一个域名只需要部署一份证书
- 方便后期证书升级更换
- 内网可以正常使用http访问服务,防止https配置错误时无法访问服务
1.准备工作
去你购买域名的服务商处申请证书,然后选择Nginx服务器证书下载,一般是一个pem
文件和一个key
文件。
2.使用docker部署nginx
这里我们使用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参考:
1 |
|
3.部署证书
假设我们下载的证书文件分别是home.shangyexin.com.key
和home.shangyexin.com.pem
,将这2个文件放置到你上面配置的证书文件夹,比如/share/CACHEDEV3_DATA/Docker/nginx/ssl
。
4.启动容器
现在你就可以启动容器了,具体的每个服务的代理设置我们会在相应的服务中分别讲解。
(三)qBittorrent
1.配置文件
docker-compose.yml参考:
1 |
|
2.配置解释
(1)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
,如果你没有这个需求,不用管这个选项即可。
(2)WEBUI_PORT
这里需要改成你web想要访问的端口,服务启动后,输入IP+端口才能访问到你的服务。注意的是配置文件中的ports
选项的第三行需要同步将这个端口expose出来,也就是这里的端口需要改成和WEBUI_PORT
一样的端口。
(3)ports
这里的10681
需要改成你实际使用,qbittorrent
用来传入连接的端口,这个和你的WEB端口是两个东西,是BT下载用的。这个端口,路由器里面需要配置端口转发,你的qbittorrent
配置里也要配置成相同端口。
这里多说一句,因为我路由器里配置的端口范围转发,比如转发10000-11000
所有范围的端口到我的NAS,这样只要我NAS的所有服务都配置成这个范围的端口,就不需要为每个端口进行转发配置。
(4)volumes
这里是将的宿主机的磁盘挂载到容器里面去,这样我们可以直接修改文件而不需要进入容器。
/share/CACHEDEV3_DATA/Docker/qbittorrent/config
,qb的配置文件夹,改成你的实际设备路径,后期的种子文件夹可以直接去这个里面找。/share/CACHEDEV3_DATA/Multimedia/QBDownloads
: 下载文件夹,你下载所有文件都在这个文件夹。
3.反向代理
这个时候,如果你一切操作都OK的话,你已经可以在内网访问到你的qBittorrent
了,比如你的NAS的IP地址是192.168.31.8
,在内网你输入http://192.168.31.8:8081
应该就可以访问到qBittorrent
了。
但是如果我们还想上https
,增加我们在外网访问的安全性,还需要使用Nginx进行反向代理配置。
(1)配置文件
还记得我们上面的Nginx配置文件路径吗,比如/share/CACHEDEV3_DATA/Docker/nginx/conf.d
,使用SSH登入系统,使用cd
命令进入当前文件夹,使用vim
或者直接用sftp
将当前配置文件复制到这个目录即可。
配置文件qbittorrent.conf
,文件名可以修改,但是一定要使用conf
后缀名:
1 |
|
(2)配置解释
这里的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
:可选项,比如用于一次性添加大量种子。
(3)配置生效
只需要重启Nginx即可使我们的配置生效,因为我们的Nginx
也是使用docker配置的,所以重启Nginx这个容器就行了。
这时候在浏览器中输入你的域名加端口即可在外网使用https
进行访问,以增加我们账号密码的安全性:
https://home.shangyexin.com:10081
(四)transmission
1.配置文件
docker-compose.yml参考:
1 |
|
2.配置解释
(1)PUID
和PGID
同上面的qbittorrent
(2)TRANSMISSION_WEB_HOME
这是WEB_UI的风格,这里改成中文的,很多人习惯使用的/transmission-web-control/
。
(3)USER
和PASS
改成你想设置的用户名和密码。
(4)volumes
这里是将的宿主机的磁盘挂载到容器里面去,前面需要改成你设备的实际路径。
config
:配置目录,后面的种子文件夹在这里面downloads
:下载目录watch
:种子监控目录qbdownloads
: 可选项,这样transmission
可以访问到qbittorrent
的下载文件
(5)ports
左边的的9091
需要改成你实际使用,右边容器内的端口不能改,但这里建议不修改,这里的端口就是我们web访问的端口。
这里的10413
需要改成你实际使用,transmission
用来传入连接的端口,这个端口,路由器里面需要配置端口转发,你的transmission
配置里也要配置成相同端口。
3.反向代理
这个时候,如果你一切操作都OK的话,你已经可以在内网访问到你的transmission
了,比如你的NAS的IP地址是192.168.31.8
,在内网你输入http://192.168.31.8:9091
应该就可以访问到transmission
了。
但是如果我们还想使用https
,增加我们在外网访问的安全性,还需要使用Nginx进行反向代理配置。
(1)配置文件
还记得我们上面的Nginx配置文件路径吗,比如/share/CACHEDEV3_DATA/Docker/nginx/conf.d
,使用SSH登入系统,使用cd
命令进入当前文件夹,使用vim
或者直接用sftp
将当前配置文件复制到当前目录即可。
配置文件transmission.conf
,文件名可以修改,但是一定要使用conf
后缀名:
1 |
|
(2)配置解释
这里的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
:可选项,比如用于一次性添加大量种子。
(3)配置生效
只需要重启Nginx即可使我们的配置生效,因为我们的Nginx
也是使用docker配置的,所以重启Nginx这个容器就行了。
这时候在浏览器中输入你的域名加端口即可在外网使用https
进行访问,以增加我们账号密码的安全性:
https://home.shangyexin.com:10091
(五)IYUUPlus
篇幅所限,这里不讲解软件的详细使用,只有部署服务的流程。
1.配置文件
docker-compose.yml参考:
1 |
|
2.配置解释
(1)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
里配置文件的路径,这里更加详细点,是种子的存放目录的绝对路径
3.反向代理
这个时候,如果你一切操作都OK的话,你已经可以在内网访问到你的IYUUPlus
了,比如你的NAS的IP地址是192.168.31.8
,在内网你输入http://192.168.31.8:8787
应该就可以访问到IYUUPlus
了。
但是如果我们还想使用https
,增加我们在外网访问的安全性,还需要使用Nginx进行反向代理配置。
(1)配置文件
还记得我们上面的Nginx配置文件路径吗,比如/share/CACHEDEV3_DATA/Docker/nginx/conf.d
,使用SSH登入系统,使用cd
命令进入当前文件夹,使用vim
或者直接用sftp
将当前配置文件复制到当前目录即可。
配置文件iyuuplus.conf
,文件名可以修改,但是一定要使用conf
后缀名:
1 |
|
(2)配置解释
这里的listen端口10787
需要改成你配置过转发的端口,也就是你在外网能够访问到端口,比如我们的8787
没有配置转发,所以在外网无法使用http进行访问。
server_name
改成你的实际域名。
ssl_certificate
因为我们已经将容器内的ssl
文件夹映射到宿主机的/share/CACHEDEV3_DATA/Docker/nginx/ssl
文件夹,所以这里不用修改,只需要你将证书文件放到你映射的文件夹即可。
将http://127.0.0.1:8787
中的端口改成你设置的内网端口。
(3)配置生效
只需要重启Nginx即可使我们的配置生效,因为我们的Nginx
也是使用docker配置的,所以重启Nginx这个容器就行了。
这时候在浏览器中输入你的域名加端口即可在外网使用https
进行访问,以增加我们账号密码的安全性:
https://home.shangyexin.com:10787
(六)迅雷快鸟
这里只适合迅雷超级VIP用户,或者迅雷快鸟用户,可以自己到官网看相应的资费,上行最高提高到50M,下行最高提高到700M,但是一定要到官网看看自己有没有办法提速和实际能提速多少,比如我就是将200M下行提速到了500M下行。
好处就是可以按月购买以及比有的地方的官方提速包要便宜些,至于使用容器的好处就是不需要电脑打开迅雷客户端才提速,可以一直保证家中的带宽是提速状态。
1.配置文件
docker-compose.yml参考:
1 |
|
2.配置解释
没啥好解释的,XUNLEI_UID
和XUNLEI_PASSWD
换成你的迅雷用户名和密码就行了,看docker输出的日志是成功后,再测速看看有无成功即可。
四、写在最后
因为篇幅所限,本篇主要写了一些常用的PT工具的docker部署办法,还有一些常用的服务比如个人云盘Nextcloud
和个人多媒体服务器Jellyfin
等等就不写在这里了。
其实Nextcloud
的配置可以参考我的这篇文章:使用docker-compose搭建Nextcloud个人云盘并开启https教程,只是当时针对服务器写的,可能很多东西没有解释的那么详细。
还有本人水平所限,可能文中有很多错误或者不是最优配置,请谅解。
但是容器用多了真的再也回不去了,毕竟谁能够拒绝再也不用为环境而头疼,几分钟内立刻搭建好自己常用的服务呢。
希望多多少少能帮助到一些人吧。
Enjoy it now.