便宜机场

Trojan 搭建教程:Debian 12 官方实现与 6 步验收

更新于 2026-10-30 · xn--wtq35pfyd55o.shop

简答:如果你有 Debian 12、x86_64 VPS、可修改 DNS 的域名和 root 权限,最短路径是:核对 DNS 与 80/443 端口,安装官方 quickstart,申请证书,沿用官方配置模板填写域名和密码,用 trojan -t 验证,再检查 systemd、443 监听和客户端 TLS。本文适合愿意维护 VPS、证书和安全更新的人;如果你只是想导入节点,不必为了使用客户端而自建服务。

定义:Trojan 是一种以 TLS 连接承载代理通信的客户端/服务端程序;本文只讨论 trojan-gfw 官方实现,不等同于 Trojan-Go、Xray 或面板中的同名入站。

先给结论:什么人适合自建,什么人不适合

本文是第三方使用指南,不是任何 Trojan 项目的官方网站。自建 Trojan 不是“安装一个客户端”这么简单,而是同时维护 VPS、域名 DNS、TLS 证书、systemd 服务、私钥权限、端口和安全更新。适合已经有服务器管理权限,并愿意处理证书续期和故障日志的读者;如果你的目标只是使用网络加速服务,订阅导入通常更省维护工作。

部署前判断表
你的情况建议原因
已有 Debian 12 x86_64 VPS、域名和 root 权限可以按本文尝试官方 quickstart 当前只支持 linux-amd64,路径和服务单元仍需按实际输出确认。
只有手机或电脑客户端,没有 VPS不要从自建开始先解决订阅导入和客户端连接问题更直接。
不想维护证书、SSH、日志和安全组优先选择订阅方式自建后的维护成本不会因首次连接成功而消失。
需要面板、多用户、流量统计或多协议不要照抄本文本文只覆盖单实例官方实现,不覆盖面板和其他核心。

截至 2026-10-30,官方 quickstart 页面说明它会把二进制安装到 /usr/local/bin,把配置模板放到 /usr/local/etc/trojan,并在适用时创建 systemd 服务;它只支持 linux-amd64。安装脚本会从官方发布接口读取最新版本,因此本文不把某个未固定的版本号写成长期承诺,执行后应立即运行 trojan -v 记录实际版本。参考:官方 quickstart 仓库。

第 1 步:先检查系统、域名和端口

入口:通过 SSH 登录 Debian 12 VPS,以下命令以 root shell 为例。使用普通用户时,在命令前加 sudo。

执行:

  • cat /etc/os-release
  • uname -m
  • ip -br address
  • ss -ltnp | grep -E ':(80|443)\s' || true
  • timedatectl status

预期结果:系统为 Debian 12,架构为 x86_64,VPS 有公网地址,时间服务已同步。80 端口用于 HTTP-01 证书验证时必须能从公网访问;443 需要留给 Trojan 或你明确配置的 HTTPS 服务。Let’s Encrypt 明确说明 HTTP-01 challenge 只能使用 80 端口。参考:Let’s Encrypt Challenge Types。

在 DNS 服务商处建立一个 A 记录,把你准备使用的域名指向 VPS 公网 IPv4,然后在服务器上检查:

  • apt-get update && apt-get install -y dnsutils curl openssl
  • DOMAIN='填写你自己的完整域名'
  • dig +short "$DOMAIN" A
  • dig +short "$DOMAIN" AAAA

如果 A 记录为空或仍指向旧地址,先修正 DNS;如果 AAAA 返回了不可达的 IPv6 地址,先修正或删除该记录,否则客户端和证书验证可能走到错误地址。80 或 443 已被 Nginx、Apache 等程序占用时,先用 ss -ltnp 找出进程,再决定停用、改用 webroot,或让现有 Web 服务继续负责证书验证。不要反复执行安装命令来绕过端口冲突。

第 2 步:安装官方 quickstart,并记录实际版本

注意:官方脚本会下载并执行远程安装逻辑。先保存脚本、阅读关键部分,再执行;不要把第三方“一键脚本”混入本文路径。

Debian 12、root 权限下执行:

  • apt-get install -y curl ca-certificates xz-utils
  • curl -fsSL https://raw.githubusercontent.com/trojan-gfw/trojan-quickstart/master/trojan-quickstart.sh -o /root/trojan-quickstart.sh
  • sed -n '1,240p' /root/trojan-quickstart.sh
  • bash /root/trojan-quickstart.sh
  • rm -f /root/trojan-quickstart.sh
  • command -v trojan && trojan -v
  • systemctl cat trojan

预期结果:能够看到实际二进制路径、版本信息和 systemd 单元内容。官方脚本源码显示,它会检查 root 权限和 x86_64 架构,从官方 release API 获取版本,并写入二进制、配置模板和 systemd 服务。路径可能随脚本变化,因此后续命令应以 command -v trojan 与 systemctl cat trojan 的结果为准。参考:quickstart 脚本源码。

如果架构不是 x86_64,停止使用该脚本,不要修改检测条件强行安装。若没有生成 systemd 服务,先查找实际文件,再决定是否手工创建服务单元。

第 3 步:申请 TLS 证书,不要先改 443

本文示例使用 Certbot standalone。它要求域名已解析到本机,并且 Certbot 在申请时能够绑定 80 端口。若 80 已有网站服务,先选择 webroot 或使用该服务配合 Certbot,不要同时让两个程序抢占端口。

执行环境:Debian 12、root 权限。把域名和邮箱替换为真实值后再执行:

  • DOMAIN='你的完整域名'
  • EMAIL='你的邮箱地址'
  • test -n "$DOMAIN" && test -n "$EMAIL"
  • apt-get install -y certbot
  • certbot certonly --standalone --non-interactive --agree-tos --email "$EMAIL" -d "$DOMAIN"
  • ls -l "/etc/letsencrypt/live/$DOMAIN/fullchain.pem" "/etc/letsencrypt/live/$DOMAIN/privkey.pem"

预期结果:真实域名对应的 fullchain.pem 和 privkey.pem 存在。证书申请失败时,按 DNS、AAAA、云安全组、系统防火墙、80 端口占用和服务器时间的顺序排查。不要把私钥内容复制到聊天、工单或公开仓库。

Certbot 官方文档说明,certbot renew --dry-run 可用于测试后续续期;成功续期后可以通过 deploy hook 执行服务重新加载。参考:Certbot User Guide。

第 4 步:沿用官方模板,正确处理回落目标和密码

官方 quickstart 会安装服务端配置模板。建议先备份,再修改模板,而不是从零拼接一份不确定字段的 JSON:

  • CONFIG='/usr/local/etc/trojan/config.json'
  • test -f "$CONFIG"
  • cp -a "$CONFIG" "$CONFIG.bak.$(date +%Y%m%d%H%M%S)"
  • sed -n '1,240p' "$CONFIG"

服务端至少需要核对 run_type、local_addr、local_port、password、TLS 证书路径和私钥路径。密码建议使用只包含字母、数字和少量安全符号的随机值,避免直接把引号、反斜杠或换行写入 JSON:

  • PASSWORD=$(tr -dc 'A-Za-z0-9_-' < /dev/urandom | head -c 32)
  • printf '%s\n' "$PASSWORD"

把密码写入模板后,先检查变量不是空值,再运行配置测试。使用 heredoc 时必须使用带引号的结束标记,避免 shell 意外展开其他内容;更稳妥的做法是复制官方模板,只修改已存在字段。

关于 remote_addr 和 remote_port:它们不是“自动生成的网站”。如果配置写成 127.0.0.1:80,本机必须确实有 HTTP 服务在 80 端口监听;没有 Web 服务时,这个回落目标不可用。Trojan 官方使用说明要求在启动前准备 HTTP 服务、域名、证书和有效配置;因此不要把空端口当成伪装站,也不要凭经验直接删除字段。具体字段以你安装的版本配置模板和测试结果为准。参考:Trojan 官方使用说明 与 Trojan 官方配置文档。

配置写完后执行:

  • trojan -t "$CONFIG"
  • echo $?

成功标准是配置测试退出状态为 0。JSON 报错先检查逗号、引号和变量;证书报错先检查真实路径;回落连接失败则检查 80 端口是否真的有 HTTP 服务。

第 5 步:启动 systemd,按权限和日志验收

先确认 systemd 实际使用哪个用户、二进制和配置路径:

  • systemctl cat trojan
  • systemctl daemon-reload
  • systemctl enable --now trojan
  • systemctl status trojan --no-pager
  • ss -ltnp | grep ':443'
  • journalctl -u trojan -n 100 --no-pager

官方 quickstart 当前源码生成的服务单元包含 ExecStart、systemd journal 输出、失败重启和 HUP reload 配置,但没有在示例中设置 User=。因此不要先假定服务一定以普通用户运行,先看 systemctl cat。如果由 root 运行,私钥可保持 root 可读;如果你自行增加了 User=trojan,则必须为该用户提供受控读取权限,同时保证 /etc/letsencrypt/live 和 archive 目录可遍历。

成功标准是服务为 active/running,443 由 Trojan 监听,日志没有 JSON、证书、权限或 bind 失败。修改权限后重新执行 systemctl restart trojan 并再次看日志。不要为了“先连上”把私钥改成全局可读。

云平台安全组和系统防火墙都要检查。只放行 SSH 管理所需来源以及本文实际使用的 TCP 端口;如果证书申请采用 HTTP-01,申请或续期阶段还必须保证 80 可访问。端口策略属于本文方案的安全建议,不代表所有部署环境都必须完全相同。

第 6 步:客户端连接、证书续期与回滚

原版 Trojan 配置使用 JSON,Xray、Trojan-Go、面板和各客户端的配置格式不能默认互换。客户端至少需要对应以下信息:

客户端字段对照
服务端信息客户端常见字段核验方法
域名地址、服务器、SNI地址和 SNI 通常应与证书域名一致。
443端口与 VPS 上 ss -ltnp 看到的监听端口一致。
password密码逐字符比对,不要多空格。
TLS启用 TLS、证书校验先保持证书校验开启,不要用关闭校验掩盖域名错误。
协议核心Trojan 节点类型确认客户端实际使用的核心支持原版 Trojan。

客户端报 TLS 错误时,先查域名、SNI、系统时间和证书链;客户端无节点或导入失败时,先确认你填的是客户端节点字段,而不是把服务端 JSON 直接导入。具体菜单名称随 v2rayN、v2rayNG、Clash 或 NekoBox 版本变化,应以客户端自身说明为准。

续期检查:

  • systemctl list-timers --all | grep -i certbot || true
  • certbot certificates
  • certbot renew --dry-run

如果 dry-run 成功,可在 /etc/letsencrypt/renewal-hooks/deploy/ 放置只在证书成功更新后执行的脚本,例如调用 systemctl kill -s SIGUSR1 trojan。Trojan 官方使用说明记录了 SIGUSR1 可重新加载证书和私钥而不主动断开现有连接,但仍应先查看当前版本的 trojan -v、systemd 单元和日志;如果信号方式不符合你的版本,改用受控 restart。续期后再次检查证书、服务状态和客户端连接。

回滚顺序:先停止服务,复制最近一次备份配置覆盖当前配置,运行 trojan -t,再执行 systemctl restart trojan,最后查看 journalctl -u trojan。不要在没有备份的情况下连续修改 DNS、证书、密码和客户端设置。

Trojan 搭建失败:5 分钟自检卡

  1. 域名:dig +short "$DOMAIN" A 返回 VPS IPv4;不通过就先修 DNS。
  2. 端口:ss -ltnp | grep -E ':(80|443)\s' 能解释占用情况;不通过就处理端口冲突或安全组。
  3. 证书:ls -l /etc/letsencrypt/live/你的域名/ 能看到证书文件;不通过就检查 Certbot 日志。
  4. 配置:trojan -t /实际配置路径 返回成功;不通过就恢复备份。
  5. 服务:systemctl status trojan 为 active,日志没有权限或 bind 错误;不通过就查运行用户、私钥目录和监听冲突。
按现象定位
现象优先检查下一步
证书申请失败DNS、AAAA、80 端口、安全组、时间一次只改一个变量后重试。
服务启动失败配置测试、证书路径、私钥权限恢复备份并查看 journal。
443 没有监听systemd 状态、端口冲突、启动用户确认实际 ExecStart 和配置路径。
客户端 TLS 报错域名、SNI、系统时间、证书校验不要先关闭校验。
续期后失效dry-run、deploy hook、证书加载时间手动 reload/restart 后复查。

常见问题

Trojan 搭建一定要用 Debian 12 吗?

不一定,但本文只按 Debian 12、x86_64 和官方 quickstart 组织。其他系统、ARM 架构、容器或第三方核心的安装路径可能不同,应以对应版本文档和实际输出为准。

没有网站时,可以直接把 remote_addr 写成 127.0.0.1、remote_port 写成 80 吗?

不能把它当成完成配置。这样只表示回落目标是本机 80 端口;本机必须确实有 HTTP 服务监听。没有 Web 服务时,应按目标版本官方模板和文档决定配置,不要凭经验删除或保留字段。

为什么 Certbot 申请证书时提示 80 端口被占用?

standalone 模式需要临时绑定 80 完成 HTTP-01 验证。先用 ss -ltnp 找出占用进程,再选择暂时停止该服务、改用 webroot,或使用其他验证方式。

私钥应该设置成 600 吗?

如果 systemd 以 root 运行,私钥保持 root 可读通常更简单;如果设置了 User=trojan,则不能只 chmod 600 后期待服务仍能读取。应检查运行用户、目录遍历权限和日志中的 permission denied。

证书续期后一定要重启 Trojan 吗?

需要让进程加载新证书。当前官方使用说明记录了 SIGUSR1 重新加载证书和私钥的行为,但仍应以实际版本、systemd 单元和日志为准;无法确认时使用受控 restart,并完成证书、服务和客户端三项复查。

原版 Trojan JSON 能直接导入 Clash、Xray 或 Trojan-Go 吗?

不能默认互换。原版 Trojan、Xray、Trojan-Go 和面板入站可能使用不同字段与核心。客户端应按自身节点界面填写地址、端口、密码、TLS 和 SNI,而不是直接覆盖配置文件。

自建成功后还需要做哪些安全检查?

删除临时脚本,备份配置但不要公开密码和私钥,限制 SSH 来源并优先使用密钥登录,检查云安全组和系统防火墙,确认续期 dry-run,并保留一份可恢复配置。

相关阅读

参考资料

  1. Trojan 官方 quickstart 仓库
  2. Trojan 官方 quickstart 安装脚本源码
  3. Trojan 官方使用说明
  4. Trojan 官方配置文档
  5. Certbot 官方使用指南(eff-certbot.readthedocs.io)

便宜机场是什么,适合哪些人?

便宜机场提供按流量和使用周期区分的订阅选择,包括月付、季付、年付及一次性套餐,并标注对应可用流量。页面显示支持多地区线路,可在 Windows、macOS、Android、iOS 等设备上使用。适合希望先比较流量需求、使用时长和设备兼容性的用户,具体服务内容仍应以套餐说明为准。

怎么开始使用,套餐该怎么选?

可以先创建账号并完成邮箱验证,再根据预计流量和使用时长选择订阅。购买后进入账户仪表盘,在订阅中心复制订阅链接,也可使用扫码或一键导入;随后按照账户中的兼容性提示选择客户端。不同设备的下载与使用指引可能不同,导入前应确认客户端支持情况。

使用前需要注意什么?

连接前应核对套餐有效期、剩余流量和具体权益,遇到异常可先更新客户端与订阅,再查看帮助中心或登录后提交工单。订阅链接属于账户使用信息,应妥善保管,避免转发或泄露。使用网络接入服务时,还应了解所在地及目标服务的相关规则,实际体验以网络环境和套餐说明为准。

常见问题

便宜机场有哪些套餐类型?

页面列出月付、季付、年付和一次性套餐,并按100G、500G、1000G等流量档位区分,具体权益以套餐说明为准。

购买后如何导入便宜机场订阅?

进入仪表盘的订阅中心后,可复制订阅链接、扫码或使用一键导入,并按账户提示选择兼容客户端。

连接出现问题时应该怎么处理?

先更新客户端和订阅,检查套餐有效期及剩余流量;仍未解决时,可查看帮助中心或登录后提交工单。

本页为第三方整理的介绍,与便宜机场无关联,具体以便宜机场的公告为准。