轻松部署无限节点代理池
转自: https://blog.cmliussss.com/p/ProxyPool/#1-2-%E9%83%A8%E7%BD%B2%E6%96%B9%E5%BC%8F%E4%BA%8C%EF%BC%9A%E4%BD%BF%E7%94%A8-docker-compose-yml-%E9%83%A8%E7%BD%B2%E5%AE%B9%E5%99%A8
🚀 自建代理池:打造属于你的无限节点
想拥有一个永不过期、取之不尽的节点池吗?手把手教你如何通过几步简单的配置,构建自己的代理池,让你在任何时候都能轻松获取优质节点。
正所谓授人以鱼不如授人以渔!
🛠️ 准备工作
在开始之前,请确保你已具备以下条件:
- 一台能运行 Docker 的设备(要求直连互联网,测试节点必须如此)。
- 一个 Github 账户 或 Cloudflare 账户(并且已经完成域名托管,不要使用需要双向解析的免费域名)。
📦 涉及项目
- Docker subs-check
该容器化工具会自动测速筛选节点。
🐳 1. 部署 Docker subs-check
subs-check 支持三种部署方式,用户可根据自己的操作习惯和硬件环境选择最适合自己的方式:
- 小白命令一键部署容器
适合新手,操作简单,但重置 Docker 后会丢失所有配置信息。 - 使用
docker-compose.yml
部署容器
推荐方式,便于管理和持久化配置,适合大多数用户。 - 命令行创建
docker
容器
适合熟悉 Docker 命令的用户,subs-check 配置和节点信息可保留,但无法保留 Docker 构建信息。
1.1 部署方式一:小白命令一键部署容器
bash
1
|
docker run -d --name subs-check -p 8199:8199 -p 8299:8299 -e API_KEY=填入管理密码 --restart always ghcr.io/beck-8/subs-check:latest
|
例如:
bash
1
|
docker run -d --name subs-check -p 8199:8199 -p 8299:8299 -e API_KEY=admin --restart always ghcr.io/beck-8/subs-check:latest
|
1.2 部署方式二:使用 docker-compose.yml
部署容器
创建 docker-compose.yml
,并启动容器。将 config.yaml
配置文件所在目录映射到容器 /app/config
内:
yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
version: "3" services: subs-check: image: ghcr.io/beck-8/subs-check:latest container_name: subs-check # mem_limit: 500m volumes: - ${config 绝对路径}:/app/config - ${output 绝对路径}:/app/output ports: - "8199:8199" - "8299:8299" environment: - TZ=Asia/Shanghai - API_KEY=admin # - HTTP_PROXY=http://192.168.1.1:7890 # - HTTPS_PROXY=http://192.168.1.1:7890 restart: always tty: true network_mode: bridge |
1.3 部署方式三:命令行创建 docker
容器
bash
1
|
docker run -d --name subs-check -p 8199:8199 -p 8299:8299 -v ${config 绝对路径}:/app/config -v ${output 绝对路径}:/app/output -e API_KEY=admin --restart always ghcr.io/beck-8/subs-check:latest
|
登录 WebUI 管理页面,编辑 config.yaml
配置文件
- WebUI:
plaintext1
http://你设备的IP:8199/admin
你可以通过 WebUI 编辑你的config.yaml
,参考文档:config.yaml
你可以使用 SubsCheck-Win-GUI 测试完善后将
config.yaml
然后替换原文件并重启容器即可完成配置。
- 通用订阅:
plaintext1
https://你设备的IP:8299/download/sub
- clash订阅:
plaintext1
https://你设备的IP:8299/api/file/mihomo
🔐 2. 通过 Gist 实现外网静态订阅
- 获取 Github Token 与 Gist ID
2.1 如何生成 Github Token
- 点击 Github 右上角头像,依次进入:
Settings
→Developer settings
→Personal access tokens
→Tokens (classic)
→Generate new token (classic)
;
- 在生成页面:将 Expiration 设置为
No expiration
,勾选gist
权限,然后点击 Generate token;
- 生成后请务必记录这个 Github Token(仅显示一次)。
2.2 如何获取 Gist ID
- 登录 gist.github.com,创建一个新的 Gist;
- 在生成的 Gist 页面,其链接格式类似:
plaintext
1
|
https://gist.github.com/cmliussss2024/055c0f79d37f79235cda63c77a985749
|
2.3 记录测试结果 URL
格式如下:
plaintext
1 2 3 4 5 |
#clash订阅配置 https://gist.githubusercontent.com/{你的Github用户名}/{你的Gist ID}/raw/mihomo.yaml #base64订阅配置 https://gist.githubusercontent.com/{你的Github用户名}/{你的Gist ID}/raw/base64.txt |
例如:
plaintext
1 2 3 4 5 |
#clash订阅配置 https://gist.githubusercontent.com/cmliussss2024/055c0f79d37f79235cda63c77a985749/raw/mihomo.yaml #base64订阅配置 https://gist.githubusercontent.com/cmliussss2024/055c0f79d37f79235cda63c77a985749/raw/base64.txt |
可选 API Mirror
- Gist 上传失败的时候可以尝试使用以下 API Mirror 来上传:
plaintext1
https://api.github.fxxk.dedyn.io
📶 3. 通过 CF隧道 实现外网动态订阅
3.1 创建 CF 隧道,并获取隧道TOKEN
- 登录 Cloudflare,进入 Zero Trust;
- 点击 网络 → Tunnels → 添加隧道;
- 选择隧道类型:
Cloudflared
;
- 为隧道命名,填入你运行docker设备的名称(如:
nas
),点击 保存隧道;
- 点击
运行命令
复制命令,如下:
- 其中cloudflared.exe service install之后的内容就是我们需要的 隧道TOKEN,请务必记录下来。
shell1
cloudflared.exe service install eyJhIjoiOWIwM2EzMGM0NzFhOTUyMTk3YjhiOGJiNmYxMTNiZjYiLCJ0IjoiM2VmZjE3ZTYtNTVkNi00ZmEwLWEyZGUtNGE4NTZhNGFlMDE4IiwicyI6Ik0yRm1ZVEF6WlRJdE4yVXhZUzAwWTJJMUxXRmtOekV0TXpnMk5UQTROREl3T0RabSJ9
- 将命令末尾的TOKEN复制保存到本地,如下:
shell1
eyJhIjoiOWIwM2EzMGM0NzFhOTUyMTk3YjhiOGJiNmYxMTNiZjYiLCJ0IjoiM2VmZjE3ZTYtNTVkNi00ZmEwLWEyZGUtNGE4NTZhNGFlMDE4IiwicyI6Ik0yRm1ZVEF6WlRJdE4yVXhZUzAwWTJJMUxXRmtOekV0TXpnMk5UQTROREl3T0RabSJ9
3.2 部署 CF 隧道
- 创建
docker-compose.yml
,并启动容器
使用下面的配置来启动 Docker 容器,同时将隧道TOKEN
替换为你复制保存的 TOKEN:
yml
1 2 3 4 5 6 7 |
version: '3' services: cloudflared: container_name: Cloudflare_Tunnels image: cloudflare/cloudflared:latest restart: always command: tunnel --no-autoupdate run --token [隧道TOKEN] |
如:
yml
1 2 3 4 5 6 7 |
version: '3' services: cloudflared: container_name: Cloudflare_Tunnels image: cloudflare/cloudflared:latest restart: always command: tunnel --no-autoupdate run --token eyJhIjoiOWIwM2EzMGM0NzFhOTUyMTk3YjhiOGJiNmYxMTNiZjYiLCJ0IjoiM2VmZjE3ZTYtNTVkNi00ZmEwLWEyZGUtNGE4NTZhNGFlMDE4IiwicyI6Ik0yRm1ZVEF6WlRJdE4yVXhZUzAwWTJJMUxXRmtOekV0TXpnMk5UQTROREl3T0RabSJ9 |
3.3 设置 CF 隧道的4个公共主机名
- 路径download,用于通用订阅
- 路径api/file,用于clash订阅
- 路径admin,用于WebUI访问
- 路径api,用于WebUI获取信息
3.4 使用 CF 隧道管理 WebUI 和订阅
- 访问WebUI:
plaintext1
https://{你的域名}/admin
- 通用订阅:
plaintext1
https://{你的域名}/download/sub
- clash订阅:
plaintext1
https://{你的域名}/api/file/mihomo
✨ 总结
- 导出订阅转换后的订阅地址,你可以再次进行汇聚订阅,也可以在订阅转换的
客户端类型
更换为你对应的客户端类型,接下来你就可以自由发挥了!