Trojan SOCKS 独立后台
Trojan → SOCKS5 独立管理 v1.1.1
v1.1.1:Nginx 接入与 443 冲突修复
本次发布包含独立 Nginx 网站、同域名多端口入口,以及已由管理员接入的共享 Nginx 适配。Nginx 占用外部 443 时,Trojan 使用独立的本机内部端口,不再争用 443。映射保存在服务器配置中,网页保存或程序升级会保留映射。域名、外部端口、Trojan 密码、分享链接、SOCKS5 出口均保持不变。
共享模式继续使用原 nginx.service,仅重新加载本站的配置片段,不启动第二个 Nginx,也不停止其他网站。共享 SNI 加载入口必须由管理员检查并接入,不能直接覆盖已有 nginx.conf;现有其他域名路由保留不变。源码包含 shared_nginx.py 适配器,但升级脚本不会自行改写他人的 Nginx 分流。已经修复并接入共享模式的服务器可直接保留现状,不必再次迁移。
尚未接入共享模式且存在 443 冲突的旧安装,需要先安排 Nginx 的 SNI 路由与内部端口;单纯升级代码不等于自动完成共享网关迁移,不要停止原 Nginx 来抢占端口。
Nginx + 域名网站
新装独立后台会安装 Nginx 依赖并尝试启用网站。已有安装仍先更新代码,再手动确认迁移:
# 先更新代码;不要卸载或覆盖已有配置。
curl -fL https://node.xboardnext.com/trojan-socks/install.sh -o /tmp/trojan-socks-install.sh && sudo bash /tmp/trojan-socks-install.sh --upgrade
# 以下仅用于首次接入独立 Nginx,已接入共享 Nginx 的机器无需执行。
sudo bash /opt/trojan-socks/setup-nginx.sh
# 然后登录后台,点击「启用 Nginx + 网站」;也可以使用:
sudo tsocks nginx-enable迁移保持已有域名、外部端口、Trojan 密码、分享链接和每条 SOCKS5 出口不变。应用会使本项目入口短暂重连;已保存但未启用的连接不进入运行配置。同域名不同端口继续支持,沿用 v1.0.3 的「+ 同域名新建」。
实际结构:Nginx 接收每条外部 TCP 端口,转发至 sing-box 独立的 `127.0.0.1` 内部端口,TLS 仍由 sing-box 处理。有效 Trojan 请求走该入口对应的 SOCKS5;普通 HTTPS 浏览器请求回落到 Nginx 的本机静态网站。路由只允许网站的精确回环地址/端口直连,互联网目标没有直连备用。网站支持首页、文章、关于页,不含后台入口或代理凭据。浏览器访问卡片上的「查看域名网站」即可;非 443 端口要带端口。
重要限制:这里的 Nginx 是 TCP 透传,并不会把 sing-box 的 TLS 指纹变成 Nginx 的 TLS 指纹。正常网站展示**不能保证不可探测或避免 IP 封锁**;[sing-box 官方说明](https://sing-box.sagernet.org/configuration/inbound/trojan/)也明确提示,不能把 HTTP 回落当作防封锁保证。不复制第三方机构、品牌或登录页面;默认是本项目原创的 Fieldnotes 静态博客,可换成自己的真实网站内容。
- 默认独立模式使用 `trojan-socks-nginx.service`,配置 `/etc/trojan-socks/nginx.conf`、端口映射 `frontend.json`。独立模式不会改写 `/etc/nginx`,也不会停止已有 nginx.service 或 oo。新装发行版 Nginx 的默认站点不会自动占用端口;已有其他网站占用 80 时会明确报错,需要管理员先安排端口,不会抢占。显式接入的共享模式仅维护本站的三个 Nginx 片段和已确认的 SNI 加载入口。
- 网站目录 `/var/www/trojan-socks/`,现有同名页面不覆盖;不要把配置、私钥、备份放进这里。后台仍独立在 `https://IP:9443`,不反代到公开网站。
- TCP 80 提供正常网站与 ACME HTTP-01;Certbot 改用 webroot,不为签发/续期停止 Nginx。已有 standalone 证书通过 `certbot reconfigure` 做测试环境验证后迁移续期设置,不删除证书,不强制反复重签。需要 Certbot ≥ 2.3(Debian 13 满足)。自定义验证插件、停服钩子等不会被擅自覆盖。
- 若证书迁移失败,旧 Trojan 仍保持直连;HTTP 网站保留,供已迁移证书续期使用。界面显示「迁移尚未完成」,修复 DNS/公网 80 后再次点击即可。若核心/Nginx 应用失败,会尝试恢复原配置和服务,并在操作日志中报告失败。没有保证回滚必然成功,需查看日志。
- 当前公网监听延续 IPv4 部署;DNS A 要指向本机,不能保留指向错误或未提供服务的 IPv6 地址。防火墙需放行 80、各外部入口端口,后台 9443 推荐限制管理员 IP。无需向公网开放内部端口。
- Nginx 不记录网站访问日志;错误日志 `/var/log/trojan-socks-nginx-error.log`。后台操作日志记录接入、证书检查、配置应用和错误,但不展示凭据。
独立模式本机联调使用临时证书、两个独立入口与两个模拟 SOCKS5 出口,验证网站 HTTPS、ACME 文件、出站隔离和隐藏文件保护。共享模式已在实际服务器验证网站 HTTPS、Trojan 经 SOCKS5 出网、网页保存保留端口映射和 Certbot 测试环境续期;仍需对每台机器的 DNS、安全组和出口单独验收。
同域名新建入口
已有连接卡片新增「+ 同域名新建」按钮。点击后只需填写新入口端口、SOCKS5 地址、端口、用户名和密码;无需重填域名、证书邮箱或备注。
新连接自动沿用域名与证书邮箱,复用有效证书,备注自动加上端口号;Trojan 密码、二维码、出站配置和记录 ID 均独立,不复制原出站凭据。新端口不能重复,也不能使用预留的 80 或 9443。新连接仍然先保存再启用,失败保留卡片和日志,原连接配置不被覆盖。删除任意一条连接不会连带删除另一条,应用配置会使共享进程内的其他入口短暂重连。
上述功能均包含在本次 v1.1.1 安装包和公开源码内。
v1.0.2:先保存,再启用
保留 v1.0.2 开始提供的「先保存,再启用」和失败日志功能。
已安装用户升级
在安装后台的服务器执行(不要先卸载):
curl -fL https://node.xboardnext.com/trojan-socks/install.sh -o /tmp/trojan-socks-install.sh && sudo bash /tmp/trojan-socks-install.sh --upgrade升级会先备份到 `/root/trojan-socks-upgrades/`,仅更新程序代码并重启网页后台,不重启 Trojan 转发服务、不覆盖账号密码、连接配置和已有 Nginx 端口映射、不重新申请证书。执行前退出 `tsocks` 菜单,等待后台正在执行的任务完成。升级后刷新浏览器,页面显示 v1.1.1,也可执行以下命令确认:
sudo tsocks version旧版失败后从未保存的连接无法自动找回,需要重新添加一次;本版以后启用失败会保留信息。备份含密码等私密信息,不要上传或分享。
- 点击「保存并尝试启用」后,先将完整连接信息写入服务器磁盘,再检查端口、申请证书和应用配置。
- 启用失败保留连接卡片,显示失败步骤与原因;刷新或重启后台不会丢失已保存内容。
- 「修改连接」可修改未启用连接的域名、入口端口和出站信息;SOCKS5 密码留空保留原密码。已应用连接不允许直接改域名和入口端口。
- 「重新启用」复用原记录和 Trojan 密码,不重复创建,也不会启用其他失败记录。后台重启中断的任务只标记失败,不自动重试签发。
- 每张卡片提供「查看日志」,顶部提供全部「操作日志」。记录保存、端口检查、证书、配置校验和启动步骤,失败详情可展开。日志会隐藏已知密码和凭据链接,最多保留最近 300 条步骤记录,页面展示最近 100 条。
- 已保存数据与实际运行配置分开维护。新连接失败不加入运行配置;修改失败保留填写内容,并尝试恢复原运行配置。
私有数据都在 `/etc/trojan-socks/`:`connections.json` 保存连接,`profiles.json` / `config.json` 保存已应用配置,`operations.json` 保存任务和日志;文件权限为 600,不能公开下载。原有网页账号不变。
网页后台(推荐 Debian 13)
curl -fL https://node.xboardnext.com/trojan-socks/install.sh -o /tmp/trojan-socks-install.sh && sudo bash /tmp/trojan-socks-install.sh安装时输入服务器公网 IPv4、设置 admin 密码(至少 12 位)。然后访问 **https://服务器IP:9443**,浏览器会提示自签名证书不受信任;核对安装终端打印的 SHA256 指纹后信任,不应在未知证书警告下输入密码。安全组需要放行 9443,推荐限制到管理员 IP。后台使用 HTTPS 加密,不提供明文 HTTP 登录。
后台可新建连接(域名/端口/SOCKS5 信息/证书邮箱)、自动申请证书、查看证书到期日、修改出站、删除单条连接、查看二维码和连接链接、检查续期。TCP 80 保留给 Certbot,9443 保留给后台,其他端口可用于 Trojan。启用失败保留已保存的新连接和日志;已有配置会备份并尽量回滚。不会停止现有 Nginx,端口冲突会明确记录。
自动续签通过 certbot.timer 运行;后台「检查续期」仅执行到期续签,不强制重新签发。IP 管理证书是独立的十年自签名证书,不属于 ACME 自动续签。证书列表显示的是各 Trojan 域名的证书。
Web 服务 `trojan-socks-web` 使用单个 Gunicorn worker、4 threads。认证文件 `/etc/trojan-socks/web-auth.json`,没有默认通用密码。所有修改接口要求登录和 CSRF 校验;连续失败登录受限。不要上传配置、备份、认证文件。网页和 CLI 共用文件锁,请勿长期打开 CLI 阻塞后台任务。
配置和接口测试不能代替每台新机器上的真实 DNS、签发、端口安全组和 SOCKS5 连通性验证。
不接面板、不依赖 oo。v1.0.x 为 sing-box 直连;v1.1.1 包含可迁移的独立 Nginx 前置和显式接入的共享 Nginx 适配。每个 Trojan 端口绑定自己的 SOCKS5 出口;一个域名可用多个不同端口,证书复用。
安装(全新 Debian/Ubuntu + systemd)
解压完整项目,在目录中执行:
sudo bash install.sh
sudo tsocks安装程序优先从自托管 https://node.xboardnext.com/sing-box/ 下载 1.14.1 的 Linux amd64/arm64 官方原包,连接失败时回退 SagerNet/sing-box 官方 GitHub Releases。两种来源均核对固定的官方 SHA256 后才安装;校验失败立即停止。不再通过 sing-box.app 跳转下载。设置连接超时、低速检测和两次重试,下载失败不安装。已有 sing-box 则复用,不停止其服务。依赖 apt 的 certbot、qrencode、python3;不是离线安装包。配置先通过 sing-box check 才会应用。
菜单 1 依次输入备注、域名、Trojan 端口、SOCKS5 地址/端口/账号密码。Trojan 密码可留空随机生成。域名 DNS A 必须指向该机器,错误的 AAAA 应修正;证书 HTTP-01 需要 TCP 80,Trojan 需要放行每条配置的 TCP 端口。80 被占用时不会擅自停止别人的服务。
菜单 3 显示 trojan:// 链接和终端二维码,包含 Trojan 凭据,不包含 SOCKS5 凭据。手机客户端扫码导入后启用证书验证;传输为普通 TCP,不是 WebSocket。请在私密终端查看。
菜单 4 修改单条出站,5 删除单条,6 状态,7 日志,8 重启,9 证书续期测试。修改配置会重启本项目共享进程,所有入口短暂重连;独立模式重启本项目自己的 Nginx,共享模式只重新加载已有 Nginx,不停止其他网站。删除前确认并保留备份,不删除证书。
配置 `/etc/trojan-socks/`(700),JSON(600),快捷命令 `tsocks`,systemd 服务 `trojan-socks.service`。配置及备份包含账号密码,不要上传公开仓库。程序内没有内置任何用户凭据。
目前仅 TCP;UDP/QUIC 未启用,客户端宜使用 TCP DNS/DoH。所有已配置入站均有明确 SOCKS5 出站规则,没有直连备用。SOCKS5 连接本身通常不加密,Trojan TLS 只保护客户端到本机这一段,不能保证本机到 SOCKS5 的加密。安装、证书签发等管理请求并不经过 SOCKS5。
证书自动续期使用 certbot.timer,续期后重启本项目服务。保持 HTTP-01 的 80 端口可达,不要反复删除证书申请。已有证书需自行确认域名、有效期和续期设置。菜单状态只代表服务状态,不等于 SOCKS5 可用;须客户端连接后检查公网出口及实际网站访问。
验证
`python3 -m unittest -v` 测试端口唯一性、出站隔离、URI 编码、失败回滚,以及保存前置、失败保留、重试、日志脱敏和权限校验。仓库内测试文件使用临时数据与模拟失败,不申请证书或启动代理;测试夹具不随公开安装包发布。新系统完整安装、真实证书签发和真实 SOCKS5 联通仍需部署验证。当前提供手动升级命令,不含自动更新和一键卸载功能。
官方配置文档:
- https://sing-box.sagernet.org/configuration/inbound/trojan/
- https://sing-box.sagernet.org/configuration/outbound/socks/
v1.1.1 安装包与校验
https://node.xboardnext.com/trojan-socks/releases/v1.1.1/trojan-socks.tar.gz
https://node.xboardnext.com/trojan-socks/releases/v1.1.1/SHA256SUMS