pt吧 关注:205,414贴子:10,903,524

【211214】PT工具之Docker全家桶+HTTPS详细配置教程

只看楼主收藏回复

一、前言
因为使用Docker的隔离性、可移植性比较好,所以自己使用的服务一般都使用Docker部署,这样每次迁移时将挂载的目录备份即可,不需要考虑机器的版本和兼容性,更换设备时基本可以做到一键迁移,而且升级镜像也比较方便。
这次的教程是将PT下载中的一些常用应用都使用docker部署,将之聚合到一篇文章,方便自己查看,也希望能够帮助到有相同需求的朋友。


IP属地:北京1楼2021-12-14 13:16回复
    二楼自留


    IP属地:北京2楼2021-12-14 13:17
    收起回复
      三楼自留


      IP属地:北京3楼2021-12-14 13:17
      收起回复
        绑定


        IP属地:山东来自iPhone客户端4楼2021-12-14 13:18
        回复
          二、服务简介
          (一)服务种类
          这次介绍的服务有下面几种:
          阿里云DDNS
          Nginx
          qBittorrent
          Transmission
          IYUUPlus
          迅雷快鸟
          所有服务均采用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


          IP属地:北京5楼2021-12-14 13:18
          回复
            (二)适合对象
            本文中的内容因为涉及到DDNS和Nginx反向代理,所以最适合的用户是有公网IP和域名的朋友;如果没有的话,可以跳过DDNS和Nginx,直接看相关服务的部署,同时服务部署完成后,需要在内网访问。
            如果你符合下面所有条件,恭喜你,你就是本文最佳目标读者:
            喜欢使用Docker部署服务
            有动态公网IP
            有域名
            会申请证书
            需要使用https


            IP属地:北京6楼2021-12-14 13:19
            回复
              (三)网络架构
              主要服务的网络架构如下:

              因为如果你要在外网使用服务的话,使用http就等于裸奔,你网络链路上的任何一个环节都可以看到你输入的账号和密码,所以墙裂建议使用https。
              几块钱买一个域名,然后证书的申请很简单,阿里和腾讯都有免费的一年证书,动手能力再强一点的,可以使用Let's Encrypt自动颁发证书,自动续期。


              IP属地:北京7楼2021-12-14 13:20
              回复
                三、服务部署
                好了,啰里啰唆这么多,终于到了我们服务部署的环节。
                (一)阿里云DDNS
                1.前提条件
                DDNS相信已经不需要我详细介绍,简单点说就是你的公网IP每次拨号后会改变,每次IP改变后自动将你的域名解析到新的IP,这样你只要访问你的域名,就可以持续访问到你的服务。
                前提条件:
                有公网IP
                已经在阿里云购买域名
                已经获取AccessKey
                关于AccessKey的获取可以参考我的这篇文章:
                https://blog.csdn.net/shangyexin/article/details/105572102
                2.配置文件
                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
                3.创建容器
                这里以威联通为例,打开Container Station,点击创建,点击创建应用程序,将上面的yml中内容粘贴进去即可,验证OK后点击创建。


                IP属地:北京8楼2021-12-14 13:21
                回复
                  (二)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参考:

                  3.部署证书
                  假设我们下载的证书文件分别是home.shangyexin.com.key和home.shangyexin.com.pem,将这2个文件放置到你上面配置的证书文件夹,比如/share/CACHEDEV3_DATA/Docker/nginx/ssl。
                  4.启动容器
                  现在你就可以启动容器了,具体的每个服务的代理设置我们会在相应的服务中分别讲解。


                  IP属地:北京9楼2021-12-14 13:23
                  回复
                    (三)qBittorrent
                    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: 下载文件夹,你下载所有文件都在这个文件夹。


                    IP属地:北京10楼2021-12-14 13:25
                    回复
                      绑定,先收藏,慢慢研究


                      IP属地:浙江来自iPhone客户端11楼2021-12-14 13:25
                      回复
                        (四)transmission
                        1.配置文件
                        docker-compose.yml参考:

                        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配置里也要配置成相同端口。


                        IP属地:北京13楼2021-12-14 13:28
                        回复
                          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后缀名:


                          IP属地:北京14楼2021-12-14 13:29
                          收起回复


                            IP属地:北京15楼2021-12-14 13:30
                            回复
                              学习


                              IP属地:福建来自Android客户端16楼2021-12-14 13:30
                              回复