### **零基础入门:使用 Docker 打造专属的 Sub-Converter 订阅转换服务**
您是否厌倦了公共订阅转换服务的不稳定或速度慢?本教程将手把手教您如何利用 Docker 技术,在自己的 VPS 服务器上轻松部署 Sub-Converter 后端和美观的前端 Web 界面,实现秒级转换,安全又私密。
#### **最终效果**
* 一个通过 `IP:端口` 或 `域名` 访问的专属订阅转换网站。
* 一个强大的 Sub-Converter 后端服务,负责处理转换逻辑。
* 一个 Nginx Proxy Manager(NPM)面板,用于管理反向代理和一键申请 SSL 证书。
***
#### **第一步:准备工作 (Prerequisites)**
在开始之前,请确保您已具备以下条件:
1. **一台云服务器 (VPS)**:建议选择主流的 Linux 发行版,如 Ubuntu 20.04 / 22.04 或 Debian 11。这能确保教程中的命令有最好的兼容性。
2. **SSH 连接工具**:用于连接并管理您的服务器。
* **Windows 用户**:推荐使用 FinalShell [https://www.hostbuf.com/t/988.html](https://), MobaXterm [
点击下载](https://mobaxterm.mobatek.net/) 或 Windows Terminal。
* **macOS 用户**:可以直接使用系统自带的“终端 (Terminal)”。
3. **(可选) 一个域名**:如果您希望通过 `sub.yourdomain.com` 这样的域名来访问服务,而不是用 `IP地址:端口` 的方式,那么您需要注册一个域名,并将其 DNS 解析托管到 Cloudflare [
点击下载](https://www.cloudflare.com/)。这一步是可选的,但强烈推荐,因为它能让后续的 HTTPS 配置变得异常简单。
***
#### **第二步:配置服务器防火墙**
为了保证服务能被外界访问,我们需要在服务器的防火墙上“打开”相应的端口。这是一个良好的安全习惯,只开放必要的端口,而不是直接关闭防火墙。
以下命令以 Ubuntu/Debian 系统常用的 `ufw` 防火墙为例。登录您的服务器后,依次执行以下命令:
```bash
# 允许 SSH 默认端口,防止断开连接
sudo ufw allow 22
# 允许 Nginx Proxy Manager 所需的端口
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 81/tcp
# 允许 Sub-Converter 后端服务端口
sudo ufw allow 25500/tcp
# 允许 Sub-Converter 前端网页端口
sudo ufw allow 58080/tcp
# 启用防火墙
sudo ufw enable
```
**命令解释:**
* `ufw allow <端口号>/<协议>`:放行指定端口,`tcp` 是我们需要的协议。
* `ufw enable`: 启用防火墙规则。当提示 `Command may disrupt existing ssh connections` 时,输入 `y` 并回车即可。
***
#### **第三步:一键安装 Docker 和 Nginx Proxy Manager (NPM)**
为了简化部署,我们使用一个集成了 Docker、Docker-Compose 和 NPM 安装的自动化脚本。
1. **解释**:
* **Docker**:一个容器化平台,可以将我们的服务(如 Sub-Converter)打包成一个独立的“集装箱”,让它在任何地方都能以相同的方式运行。
* **Nginx Proxy Manager (NPM)**:一个带有图形化界面的反向代理工具。它可以帮助我们轻松地将域名指向服务器上运行的服务,并能一键申请免费的 SSL 证书,让您的网站实现 `https://` 加密访问。
2. **执行安装命令**:
将下面这行完整的命令复制到您的 SSH 终端中,然后按回车执行。
```bash
sudo apt-get update && sudo apt-get install git -y && git clone https://github.com/slobys/npm.git && cd npm && chmod +x npm.sh && ./npm.sh
```
这个命令会做以下几件事:
* `apt-get update`: 更新系统软件包列表。
* `apt-get install git -y`: 安装 `git` 工具,用于下载脚本。
* `git clone ...`: 从 Github 下载预设好的 NPM 安装脚本。
* `cd npm`: 进入脚本目录。
* `chmod +x npm.sh`: 赋予脚本执行权限。
* `./npm.sh`: 运行安装脚本。
安装过程需要几分钟,请耐心等待。脚本会自动处理所有依赖项。
***
#### **第四步:部署 Sub-Converter 后端**
后端是执行订阅转换的核心程序。我们使用 Docker 来运行它。
复制并执行以下命令:
```bash
docker run -d --restart=always --name subconverter -p 25500:25500 tindy2013/subconverter:latest
```
**命令解释:**
* `docker run`: 运行一个 Docker 容器。
* `-d`: 让容器在后台(Detached)运行。
* `--restart=always`: 设置容器总是在退出或服务器重启后自动启动,确保服务高可用。
* `--name subconverter`: 为这个容器起一个好记的名字,方便日后管理。
* `-p 25500:25500`: 将服务器的 `25500` 端口映射到容器内部的 `25500` 端口。
* `tindy2013/subconverter:latest`: 指定要使用的 Docker 镜像,这是 Sub-Converter 的官方镜像。
***
#### **第五步:部署 Sub-Converter 前端网页 (Sub-Web)**
现在,我们来部署一个漂亮的前端界面,这样就不需要手动拼接复杂的 URL 了。
复制并执行以下命令:
```bash
docker run -d --restart=always --name subweb -p 58080:80 careywong/subweb:latest
```
**命令解释:**
* `--name subweb`: 为前端容器命名为 `subweb`。
* `-p 58080:80`: 将服务器的 `58080` 端口映射到容器内部的 `80` 端口。
* **注意**:您可以将 `58080` 修改为您喜欢的任何未被占用的端口,例如 `8080`。如果修改,请确保在第二步的防火墙规则中也允许了您修改后的端口。
* `careywong/subweb:latest`: 这是目前最受欢迎的 Sub-Converter 前端之一 `sub-web` 的 Docker 镜像。
***
#### **第六步:访问和配置**
恭喜您,至此所有服务都已成功部署!现在可以通过以下地址访问它们:
* **Nginx Proxy Manager 管理面板**: `http://<你的服务器IP>:81`
* **Sub-Web 前端页面**: `http://<你的服务器IP>:58080`
**首次配置 Sub-Web:**
1. 打开浏览器,访问 `http://<你的服务器IP>:58080`。
2. 点击页面右上角的 **设置**(齿轮图标)。
3. 在 **后端地址** 一栏中,填入您 Sub-Converter 后端的地址:`http://<你的服务器IP>:25500`。
4. 点击保存,页面会自动刷新。现在,您的前端已经成功连接到了后端,可以开始使用了!
#### **(进阶) 第七步:配置域名和 SSL 加密**
如果您拥有一个域名,可以通过 NPM 轻松实现 `https://sub.yourdomain.com` 访问,并自动隐藏端口号。
1. **域名解析**:前往您的域名服务商(如 Cloudflare),添加一条 `A` 记录,将您的子域名(如 `sub`)解析到您的服务器 IP 地址。
2. **登录 NPM**:访问 `http://<你的服务器IP>:81`。
* 默认管理员邮箱: `admin@example.com`
* 默认密码: `changeme`
* 首次登录会强制要求您修改邮箱和密码,请务必修改并妥善保管。
3. **添加代理主机**:
* 点击 `Hosts` -> `Proxy Hosts` -> `Add Proxy Host`。
* 在 **Details** 标签页:
* **Domain Names**: 输入您的域名,如 `sub.yourdomain.com`。
* **Scheme**: `http`
* **Forward Hostname / IP**: 输入 `127.0.0.1` (代表服务器本机)。
* **Forward Port**: 输入 `58080` (或者您在第五步中设置的前端端口)。
* 勾选 `Block Common Exploits`。
* 切换到 **SSL** 标签页:
* **SSL Certificate**: 选择 `Request a new SSL Certificate`。
* 勾选 `Force SSL` 和 `HTTP/2 Support`。
* **Email Address for Let's Encrypt**: 输入您的真实邮箱。
* 勾选 `I Agree to the Let's Encrypt Terms of Service`。
* 点击 **Save**。
NPM 会自动为您申请 SSL 证书并配置反向代理。等待几十秒后,您就可以通过 `https://sub.yourdomain.com` 来访问您的专属订阅转换服务了!
0 评论