Skip to content

suiyuee/go-socks5

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

59 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SOCKS5 代理服务器

基于 Go 语言的高性能 SOCKS5 代理服务器,支持用户认证和配置热重载

✨ 特性

  • 用户名/密码认证 - 安全可靠
  • 配置热重载 - 修改用户配置后自动生效,无需重启
  • 系统服务 - systemd 管理,开机自启
  • 用户管理工具 - 命令行工具 + RESTful API
  • API 管理接口 - 支持通过 HTTP API 管理用户
  • Nginx 反向代理 - 生产环境配置示例
  • 安全加固 - systemd 安全选项,专用系统用户
  • 一键部署 - 单条命令完成安装

🚀 快速开始

一键安装(推荐)

在 Debian 12 / Ubuntu 20.04+ 服务器上执行:

curl -sSL https://raw.githubusercontent.com/suiyuee/go-socks5/master/scripts/install.sh | sudo bash

安装完成!服务将自动启动在 0.0.0.0:8080

默认账号

用户名 密码
admin ChangeMe123!

⚠️ 重要:安装后必须立即修改默认密码!

📖 使用指南

用户管理

方式1:命令行工具

# 查看所有用户
sudo socks5-users list

# 添加新用户
sudo socks5-users add newuser mypassword

# 删除用户
sudo socks5-users del olduser

# 修改密码
sudo socks5-users change admin newpassword123

# 查看配置文件
sudo socks5-users show

方式2:RESTful API

# 获取 API Key
API_KEY=$(sudo cat /opt/socks5-server/.api-key)

# 查看所有用户
curl -H "X-API-Key: $API_KEY" http://127.0.0.1:8081/api/users

# 添加用户
curl -X POST \
  -H "X-API-Key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"username":"newuser","password":"StrongPass123!"}' \
  http://127.0.0.1:8081/api/user/add

# 删除用户
curl -X DELETE \
  -H "X-API-Key: $API_KEY" \
  "http://127.0.0.1:8081/api/user/delete?username=olduser"

# 修改密码
curl -X PUT \
  -H "X-API-Key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"username":"admin","password":"NewPass123!"}' \
  http://127.0.0.1:8081/api/user/change-password

📚 完整 API 文档: API-USAGE.md

服务管理

# SOCKS5 代理服务
sudo systemctl status socks5-server     # 查看状态
sudo systemctl restart socks5-server    # 重启服务
sudo systemctl stop socks5-server       # 停止服务
sudo journalctl -u socks5-server -f     # 查看日志

# API 管理服务
sudo systemctl status socks5-api        # 查看状态
sudo systemctl restart socks5-api       # 重启服务
sudo systemctl stop socks5-api          # 停止服务
sudo journalctl -u socks5-api -f        # 查看日志

客户端测试

# 使用 curl 测试
curl --socks5 admin:ChangeMe123!@your-server-ip:8080 http://httpbin.org/ip

# 或者使用代理
export http_proxy=socks5://admin:ChangeMe123!@your-server-ip:8080
export https_proxy=socks5://admin:ChangeMe123!@your-server-ip:8080
curl http://httpbin.org/ip

浏览器配置

Firefox:

  1. 设置 → 网络设置 → 手动配置代理
  2. SOCKS 主机:your-server-ip 端口:8080
  3. SOCKS v5
  4. 勾选"使用 SOCKS v5 代理 DNS"

Chrome/Edge:
使用 SwitchyOmega 扩展配置 SOCKS5 代理

🌐 Nginx 反向代理(可选)

如果需要通过域名访问 API,可以配置 Nginx 反向代理:

# 下载配置示例
sudo curl -sSL https://gitee.com/xpeng888/go-socks5/raw/master/configs/nginx-api.conf \
  -o /etc/nginx/sites-available/socks5-api

# 修改配置文件中的域名
sudo nano /etc/nginx/sites-available/socks5-api

# 创建软链接
sudo ln -s /etc/nginx/sites-available/socks5-api /etc/nginx/sites-enabled/

# 测试配置
sudo nginx -t

# 重载 Nginx
sudo systemctl reload nginx

配置后可以通过域名访问:

curl -H "X-API-Key: your-api-key" https://your-domain.com/api/users

📝 配置文件: nginx-api.conf


🔧 高级配置

自定义端口

编辑 /etc/systemd/system/socks5-server.service:

ExecStart=/opt/socks5-server/socks5-server -addr 0.0.0.0:1080

然后重启服务:

sudo systemctl daemon-reload
sudo systemctl restart socks5-server

配置文件位置

用户配置:/opt/socks5-server/users.json

格式:

{
  "users": {
    "username1": "password1",
    "username2": "password2"
  }
}

修改后会在 5 秒内自动重载,无需重启服务。

防火墙配置

# UFW
sudo ufw allow 8080/tcp

# iptables
sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
sudo iptables-save > /etc/iptables/rules.v4

📊 系统要求

  • 操作系统: Debian 12 / Ubuntu 20.04+
  • 内存: 最低 512MB
  • 磁盘: 最低 100MB
  • Go: 1.18+ (安装脚本会自动安装)

🏗️ 手动安装

如果需要手动安装:

# 1. 安装 Go
sudo apt-get update
sudo apt-get install -y golang-go

# 2. 克隆项目
git clone https://github.com/suiyuee/go-socks5.git
cd go-socks5

# 3. 编译
go build -o socks5-server cmd/socks5-server/main.go

# 4. 运行
./socks5-server

📁 项目结构

go-socks5/
├── cmd/
│   ├── socks5-server/
│   │   └── main.go           # SOCKS5 代理服务器
│   └── api-server/
│       └── main.go           # RESTful API 服务器
├── scripts/
│   ├── install.sh            # 一键安装脚本
│   └── user-manager.sh       # 用户管理脚本
├── configs/
│   ├── nginx-api.conf        # Nginx 配置示例
│   └── API-USAGE.md          # API 使用文档
├── go.mod                    # Go 模块定义
└── README.md                 # 项目文档

🔒 安全建议

  1. 修改默认密码 - 首次安装后立即修改
  2. 使用强密码 - 密码长度 12+ 字符,包含大小写字母、数字、符号
  3. 限制访问 - 使用防火墙限制允许连接的 IP
  4. 定期更新 - 保持系统和软件更新
  5. 监控日志 - 定期检查 journalctl -u socks5-server

🐛 故障排查

服务无法启动

# 查看详细日志
sudo journalctl -u socks5-server -n 100 --no-pager

# 检查端口占用
sudo ss -tlnp | grep 8080

# 检查配置文件
sudo cat /opt/socks5-server/users.json

无法连接

  1. 检查防火墙是否开放端口
  2. 检查服务是否运行:sudo systemctl status socks5-server
  3. 检查用户名密码是否正确
  4. 查看日志:sudo journalctl -u socks5-server -f

配置不生效

配置修改后会在 5 秒内自动重载。如果未生效:

# 手动重启服务
sudo systemctl restart socks5-server

# 检查配置文件格式
sudo socks5-users show

📝 更新日志

v1.0.0 (2025-09-30)

  • ✨ 初始版本发布
  • ✅ 支持用户名/密码认证
  • ✅ 支持配置热重载
  • ✅ 一键安装脚本
  • ✅ 用户管理工具

🤝 贡献

欢迎提交 Issue 和 Pull Request!

📄 许可证

基于 MIT 许可证开源。

基础库来自 suiyuee/go-socks5

👨‍💻 作者

维护者:suiyuee

项目地址:https://github.com/suiyuee/go-socks5


如果这个项目对您有帮助,请给个 ⭐️ Star 支持一下!

About

SOCKS5 server in Golang

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Shell 61.1%
  • Go 38.9%