一、前言
因为使用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的安装可以参考我的这篇文章:https://blog.youkuaiyun.com/shangyexin/article/details/103910923
(二)适合对象
本文中的内容因为涉及到DDNS和Nginx反向代理,所以最适合的用户是有公网IP和域名的朋友;如果没有的话,可以跳过DDNS和Nginx,直接看相关服务的部署,同时服务部署完成后,需要在内网访问。
如果你符合下面所有条件,恭喜你,你就是本文最佳目标读者:
- 喜欢使用Docker部署服务
- 有动态公网IP
- 有域名
- 会申请证书
- 需要使用https
(三)网络架构
主要服务的网络架构如下:
因为如果你要在外网使用服务的话,使用http
就等于裸奔,你网络链路上的任何一个环节都可以看到你输入的账号和密码,所以墙裂建议使用https
。
几块钱买一个域名,然后证书的申请很简单,阿里和腾讯都有免费的一年证书,动手能力再强一点的,可以使用Let's Encrypt
自动颁发证书,自动续期。
三、服务部署
好了,啰里啰唆这么多,终于到了我们服务部署的环节。
(一)阿里云DDNS
1.前提条件
DDNS相信已经不需要我详细介绍,简单点说就是你的公网IP每次拨号后会改变,每次IP改变后自动将你的域名解析到新的IP,这样你只要访问你的域名,就可以持续访问到你的服务。
前提条件:
- 有公网IP
- 已经在阿里云购买域名
- 已经获取
AccessKey
关于AccessKey
的获取可以参考我的这篇文章:
https://blog.youkuaiyun.com/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后点击创建。
(二)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证书文件夹,我们的证书文件需要放到这个目录