一键安装配置基于 Squid 的 HTTP 代理服务器,自动生成随机认证账号密码,开箱即用。
- 🚀 一键安装,自动配置
- 🔐 自动生成随机用户名和密码
- 🛡️ 隐私保护(删除转发标头)
- 📝 自动保存配置信息到文件
- 🔧 简单的用户管理命令
- 💾 关闭缓存节省磁盘空间
- Ubuntu 18.04 或更高版本
- Root 权限或 sudo 访问权限
- 至少 512MB 可用内存
- Docker 20.10 或更高版本
- 至少 256MB 可用内存
使用 GitHub Container Registry 镜像:
# 使用随机生成的用户名和密码
docker run -d \
--name http-proxy \
-p 3128:3128 \
--restart unless-stopped \
ghcr.io/fengerwoo/setup-http-proxy:latest
# 查看生成的用户名和密码
docker logs http-proxy自定义用户名和密码:
docker run -d \
--name http-proxy \
-p 3128:3128 \
-e PROXY_USERNAME=myuser \
-e PROXY_PASSWORD=mypassword \
--restart unless-stopped \
ghcr.io/fengerwoo/setup-http-proxy:latest使用 docker-compose:
创建 docker-compose.yml 文件:
version: '3.8'
services:
http-proxy:
image: ghcr.io/fengerwoo/setup-http-proxy:latest
container_name: http-proxy
ports:
- "3128:3128"
environment:
- PROXY_USERNAME=myuser
- PROXY_PASSWORD=mypassword
restart: unless-stopped启动服务:
docker-compose up -d本地构建镜像:
# 克隆仓库
git clone https://github.com/fengerwoo/setup-http-proxy.git
cd setup-proxy
# 构建镜像
docker build -t http-proxy .
# 运行容器
docker run -d \
--name http-proxy \
-p 3128:3128 \
--restart unless-stopped \
http-proxywget -qO- https://raw.githubusercontent.com/fengerwoo/setup-http-proxy/main/setup-proxy.sh | sudo bash或者
curl -fsSL https://raw.githubusercontent.com/fengerwoo/setup-http-proxy/main/setup-proxy.sh | sudo bash# 下载脚本
wget https://raw.githubusercontent.com/fengerwoo/setup-http-proxy/main/setup-proxy.sh
# 添加执行权限
chmod +x setup-proxy.sh
# 运行脚本
sudo bash setup-proxy.sh脚本会自动输出代理信息,包括:
- 服务器地址和端口
- 随机生成的用户名和密码
- 完整的代理 URL
- 常用管理命令
配置信息也会保存到 /root/proxy_info_YYYYMMDD_HHMMSS.txt 文件中。
安装完成后,您会得到类似以下的代理信息:
地址: 123.456.789.0:3128
用户名: proxy_a1b2c3d4
密码: AbCd1234!@#$EfGh
完整代理URL:
http://proxy_a1b2c3d4:AbCd1234!@#$EfGh@123.456.789.0:3128
Linux/Mac 终端:
export http_proxy="http://username:password@server_ip:3128"
export https_proxy="http://username:password@server_ip:3128"浏览器配置:
- 手动代理配置
- HTTP 代理:
server_ip - 端口:
3128 - 需要认证,输入用户名和密码
安装或部署完成后,可以使用以下命令测试代理是否正常工作:
方法一:使用 curl(推荐)
# 基本测试(假设用户名是 proxy_xhkxyaks,密码是 AeBGBX7-7CVoF!QF)
curl -x http://proxy_xhkxyaks:AeBGBX7-7CVoF%21QF@localhost:3128 -L https://httpbin.org/ip方法二:测试认证功能
# 测试无认证访问(应该返回 407 错误)
curl -I -x http://localhost:3128 http://www.baidu.com
# 测试正确认证(应该返回 200)
curl -I -x http://用户名:密码@localhost:3128 http://www.baidu.com特殊字符处理说明:
- URL 中的特殊字符需要转义:
!→%21#→%23@→%40$→%24%→%25
- 或者使用
--proxy-user参数(无需转义)
预期输出:
{
"origin": "您的服务器IP地址"
}查看容器日志(包含用户名密码):
docker logs http-proxy用户管理:
# 修改现有用户密码
docker exec -it http-proxy htpasswd /etc/squid/passwords username
# 添加新用户
docker exec -it http-proxy htpasswd /etc/squid/passwords new_username
# 删除用户
docker exec -it http-proxy htpasswd -D /etc/squid/passwords username
# 查看所有用户
docker exec -it http-proxy cat /etc/squid/passwords | cut -d: -f1
# 查看保存的代理信息
docker exec -it http-proxy cat /var/log/squid/proxy_info.txt容器管理:
# 重启容器
docker restart http-proxy
# 停止容器
docker stop http-proxy
# 启动容器
docker start http-proxy
# 查看容器状态
docker ps | grep http-proxy
# 查看访问日志
docker exec -it http-proxy tail -f /var/log/squid/access.log
# 查看错误日志
docker exec -it http-proxy tail -f /var/log/squid/cache.log卸载:
# 停止并删除容器
docker stop http-proxy && docker rm http-proxy
# 删除镜像
docker rmi ghcr.io/fengerwoo/setup-http-proxy:latest用户管理:
# 修改现有用户密码
sudo htpasswd /etc/squid/passwords username
# 添加新用户
sudo htpasswd /etc/squid/passwords new_username
# 删除用户
sudo htpasswd -D /etc/squid/passwords username
# 查看所有用户
sudo cat /etc/squid/passwords | cut -d: -f1服务管理:
# 重启 Squid 服务
sudo systemctl restart squid
# 查看服务状态
sudo systemctl status squid
# 停止服务
sudo systemctl stop squid
# 启动服务
sudo systemctl start squid
# 查看访问日志
sudo tail -f /var/log/squid/access.log
# 查看错误日志
sudo tail -f /var/log/squid/cache.log卸载:
# 完全卸载 Squid 和配置文件
sudo apt remove --purge squid -y
sudo rm -rf /etc/squid /var/log/squid /var/spool/squid- 更改默认端口:编辑
/etc/squid/squid.conf,修改http_port 3128为其他端口 - 定期更换密码:使用
htpasswd命令定期更新用户密码 - 限制访问IP:在 squid.conf 中添加 ACL 规则限制允许的客户端 IP
- 使用防火墙:配置 UFW 或 iptables 限制端口访问
- 启用日志监控:定期检查访问日志,发现异常流量
主配置文件位于:/etc/squid/squid.conf
主要配置项:
- 认证:使用 basic_ncsa_auth 进行用户认证
- 端口:默认 3128
- 缓存:已禁用以节省空间
- 隐私:删除 X-Forwarded-For 和 Via 标头
- 日志:记录在
/var/log/squid/目录下
# 检查服务状态
sudo systemctl status squid
# 检查端口是否监听
sudo netstat -tlnp | grep 3128
# 检查防火墙
sudo ufw status# 检查密码文件权限
ls -la /etc/squid/passwords
# 重新创建用户
sudo htpasswd -c /etc/squid/passwords username# 查看 Squid 日志
sudo journalctl -u squid -n 50
sudo tail -f /var/log/squid/cache.log本项目采用 MIT 许可证 - 详见 LICENSE 文件
欢迎提交 Issue 和 Pull Request!
本脚本仅供学习和合法用途使用。使用者需遵守当地法律法规,开发者不对任何滥用行为负责。
如有问题或建议,请在 GitHub Issues 提出。
注意:首次安装后请妥善保存生成的用户名和密码,它们不会再次显示!配置信息已保存在 /root/proxy_info_*.txt 文件中。