一份功能强大且易于使用的 Bash 脚本,用于在任何支持 Docker 的 Linux 服务器上一键部署一个安全、稳定、高性能的多协议代理服务器,同时支持 SOCKS5、HTTP 和 HTTPS(通过 HTTP CONNECT 隧道)三种代理协议。特别适用于需要为指纹浏览器(如 AdsPower、VMLogin)或其他应用配置独立 IP 代理的场景。
- 🚀 一键部署: 只需执行一个命令,即可完成所有环境检查、依赖安装、配置和部署工作。
- 📡 多协议支持: 同时提供 SOCKS5、HTTP、HTTPS(CONNECT 隧道)三种代理入口,满足不同客户端需求。
- 📦 Docker 容器化: 所有服务运行在隔离的 Docker 容器中,干净、便携且不污染宿主系统。
- 🔒 安全可靠: 自动生成强随机密码,使用 3proxy 的
strong认证模式,确保代理安全。 - ⚙️ 高度可定制: 支持自定义用户名、密码、SOCKS5 端口和 HTTP/HTTPS 端口。
- 🔧 便捷管理: 自动生成
manage.sh脚本,轻松实现服务的启动、停止、重启、查看状态和日志。 - 🩺 健康检查: 内置 Docker 健康检查,同时监控 SOCKS5 和 HTTP 两个端口的运行状态。
- 🔥 自动防火墙配置: 自动检测并配置
UFW或firewalld,开放所有所需端口。 - 📄 清晰的连接信息: 部署完成后,自动生成
connection_info.txt文件,包含三种协议的连接细节和测试命令。
| 协议 | 默认端口 | 说明 |
|---|---|---|
| SOCKS5 | 1080 | 完整的 SOCKS5 代理,支持 TCP/UDP 转发 |
| HTTP | 8118 | HTTP 代理,适用于浏览器和 HTTP 客户端 |
| HTTPS | 8118 (同 HTTP) | 通过 HTTP CONNECT 隧道自动支持,无需额外配置 |
HTTPS 代理与 HTTP 代理共用同一端口。客户端通过 HTTP 代理端口访问 HTTPS 网站时,会自动建立 CONNECT 隧道进行加密通信。
- 一台 Linux 服务器 (推荐使用 Debian 10/11/12 或 Ubuntu 20.04/22.04)
root用户权限- 服务器已连接到互联网
通过 SSH 连接到您的 Linux 服务器,并以 root 用户身份执行以下命令。
从您的代码仓库或指定 URL 下载部署脚本 full_deploy.sh。
wget [您的脚本下载链接]/full_deploy.shchmod +x full_deploy.sh./full_deploy.sh脚本启动后,会提示您进行配置:
- 检查环境: 脚本会自动检查并安装 Docker 和 Docker Compose。
- 配置参数:
- 您可以选择使用 默认配置(推荐),脚本将为您生成安全的随机用户名和密码。
- 您也可以选择 自定义配置,手动输入用户名、密码、SOCKS5 端口和 HTTP/HTTPS 端口。
部署过程大约需要几分钟,具体取决于您的网络速度和服务器性能。当您看到 "🎉 部署完成!" 的提示时,表示代理服务器已成功启动并准备就绪。
部署完成后,脚本会自动将 pxy 注册为全局命令(软链接至 /usr/local/bin/pxy),无需进入项目目录,在任意位置均可直接使用:
| 命令 | 描述 |
|---|---|
pxy start |
启动代理服务 |
pxy stop |
停止代理服务(会移除容器) |
pxy restart |
重启代理服务 |
pxy status |
查看服务的运行状态和健康状况 |
pxy logs |
实时查看服务日志 (按 Ctrl+C 退出) |
pxy info |
显示完整的连接信息(IP、端口、用户名、密码) |
pxy rebuild |
强制重新构建 镜像并启动,适用于修改配置后 |
也可以直接执行原始脚本:
/opt/multi-proxy-server/manage.sh <命令>
部署完成后,可在服务器上执行以下命令测试各协议是否正常工作:
# SOCKS5 代理测试
curl --socks5-hostname USERNAME:PASSWORD@127.0.0.1:1080 https://ifconfig.me
# HTTP 代理测试
curl -x http://USERNAME:PASSWORD@127.0.0.1:8118 http://ifconfig.me
# HTTPS 代理测试(通过 HTTP CONNECT 隧道)
curl -x http://USERNAME:PASSWORD@127.0.0.1:8118 https://ifconfig.me请将
USERNAME、PASSWORD和端口号替换为您的实际配置。如果命令成功返回您服务器的 IP 地址,则表示对应协议的代理工作正常。
所有文件都位于 /opt/multi-proxy-server/ 目录下:
/opt/multi-proxy-server/
├── 3proxy.cfg # 3proxy 核心配置文件,包含用户认证和多协议入口配置
├── connection_info.txt # 部署后生成的连接信息详情(SOCKS5 + HTTP/HTTPS)
├── docker-compose.yml # Docker Compose 编排文件
├── Dockerfile # 用于构建代理服务的 Docker 镜像定义
└── manage.sh # 服务管理脚本
1. 如何修改代理的用户名或密码?
- 进入项目目录:
cd /opt/multi-proxy-server - 编辑配置文件:
nano 3proxy.cfg - 找到
users ...这一行,修改为您想要的用户名和密码。 - 保存文件后,执行
./manage.sh rebuild来使更改生效。
2. 如何修改端口号?
- 编辑
3proxy.cfg,修改socks -pXXXX和proxy -pXXXX中的端口号。 - 同步修改
docker-compose.yml中的端口映射。 - 执行
./manage.sh rebuild使更改生效。
3. HTTP 代理和 HTTPS 代理有什么区别?
它们共用同一个端口。当客户端通过 HTTP 代理端口访问 http:// 网站时,使用普通 HTTP 代理;当访问 https:// 网站时,客户端会自动发送 CONNECT 请求建立加密隧道,无需额外配置。
4. 指纹浏览器应该选择哪种代理类型?
- 如果支持 SOCKS5,推荐使用 SOCKS5(端口 1080),性能更好。
- 如果只支持 HTTP 代理,使用 HTTP(端口 8118),同样支持访问 HTTPS 网站。
5. 如何完全卸载此代理服务?
- 停止并移除容器:
pxy stop - 移除全局命令:
rm /usr/local/bin/pxy - 删除整个项目目录:
rm -rf /opt/multi-proxy-server - (可选) 删除 Docker 镜像:
docker rmi $(docker images | grep 'multi-proxy-server' | awk '{print $3}')
6. 部署失败或服务启动不起来怎么办?
请进入项目目录 cd /opt/multi-proxy-server,然后运行 ./manage.sh logs 查看详细的错误日志,根据日志提示解决问题。常见的错误原因包括端口被占用、Docker 构建失败等。
- 请务必使用 强密码 来保护您的代理服务。
- 定期更新您的服务器系统和 Docker,以获得最新的安全补丁。
- 请勿将您的代理凭据泄露给他人。
- 如无必要,建议通过防火墙限制代理端口的访问来源 IP。
本项目采用 MIT License 许可。