字节笔记本

2026年2月22日

EasyTrojan:一行命令搭建 Trojan 代理服务器

本文介绍 EasyTrojan,一个极简的 Trojan 代理服务器一键部署脚本。该项目由 eastmaple 开发维护,在 GitHub 上已获得 1.2k stars。EasyTrojan 的最大特点是无需购买域名和配置证书,仅需一行命令即可快速搭建代理服务器。

项目简介

EasyTrojan 是一款面向个人用户和主机商家的 Trojan 部署解决方案。它通过自动化脚本简化了传统 Trojan 部署中繁琐的配置流程,自动提供免费的域名解析和 SSL 证书服务,让用户能够快速搭建可用的代理服务器。

该项目主要解决以下问题:

  • 个人用户与主机商家面临的连接阻断问题
  • 降低大量 IP 被阻断造成的后续影响
  • 简化 Trojan 部署的技术门槛

核心特性

  • 一键部署:仅需一行命令即可完成服务器搭建
  • 免费域名:自动通过 nip.io 提供域名解析服务,无需购买域名
  • 自动证书:集成 Caddy HTTPS 模块,自动申请 Let's Encrypt 或 ZeroSSL 免费证书
  • 多系统支持:兼容 RHEL 7/8/9 (CentOS、RedHat、AlmaLinux、RockyLinux)、Debian 9/10/11/12、Ubuntu 16/18/20/22
  • 服务伪装:非正确密码访问返回 503 状态码,伪装成过载的 Web 服务
  • 密码管理:支持多密码创建、删除、流量查询等管理功能

技术栈

  • Shell 脚本:核心部署逻辑
  • Caddy:Web 服务器与 HTTPS 证书自动管理
  • Trojan:代理协议实现
  • nip.io:免费域名解析服务

安装指南

前置要求

  • 必须使用 root 用户部署
  • 服务器需开放 TCP 80 和 443 端口
  • 支持的操作系统:RHEL/CentOS/Debian/Ubuntu 系列

首次安装

执行以下命令,将 password 替换为你自己的密码:

bash
curl https://raw.githubusercontent.com/eastmaple/easytrojan/main/easytrojan.sh -o easytrojan.sh && chmod +x easytrojan.sh && bash easytrojan.sh password

安装成功后会返回 Trojan 的连接参数。

防火墙配置

RHEL 7/8/9 系列:

bash
firewall-cmd --permanent --add-port=80/tcp --add-port=443/tcp && firewall-cmd --reload && iptables -F

Debian/Ubuntu 系列:

bash
sudo ufw allow proto tcp from any to any port 80,443 && sudo iptables -F

验证端口放行

通过浏览器访问脚本提供的免费域名(如 1.3.5.7.nip.io),如果自动跳转至 HTTPS 并显示 "Service Unavailable",说明端口已正确放行。

密码管理

下载密码管理脚本:

bash
curl https://raw.githubusercontent.com/eastmaple/easytrojan/main/mytrojan.sh -o mytrojan.sh && chmod +x mytrojan.sh

常用命令:

bash
# 创建密码
bash mytrojan.sh add password

# 创建多个密码
bash mytrojan.sh add password1 password2

# 删除密码
bash mytrojan.sh del password

# 查询流量
bash mytrojan.sh status password1

# 流量归零
bash mytrojan.sh rotate

# 查看密码列表
bash mytrojan.sh list

使用示例

连接参数示例

假设服务器 IP 为 1.3.5.7,密码为 123456

参数
地址1.3.5.7.nip.io
端口443
密码123456
ALPNh2/http1.1

客户端配置

Windows - V2rayN:

macOS - V2rayU:

Android - V2rayNG:

iOS - Shadowrocket:

  • App Store 下载(需海外账号)

Xray 配置示例

json
{
  "outbounds": [
    {
      "protocol": "trojan",
      "settings": {
        "servers": [
          {
            "address": "1.3.5.7",
            "port": 443,
            "password": "123456"
          }
        ]
      },
      "streamSettings": {
        "network": "tcp",
        "security": "tls",
        "tlsSettings": {
          "allowInsecure": false,
          "serverName": "1.3.5.7.nip.io",
          "fingerprint": "chrome",
          "alpn": "h2,http/1.1"
        }
      }
    }
  ]
}

高级配置

指定自定义域名

如果免费域名被阻断,可以指定自己的域名:

bash
systemctl stop caddy.service && curl https://raw.githubusercontent.com/eastmaple/easytrojan/main/easytrojan.sh -o easytrojan.sh && chmod +x easytrojan.sh && bash easytrojan.sh password yourdomain.com

更换端口

当 443 端口被阻断时,可临时更换端口(如 8443):

bash
sed -i "s/443/8443/g" /etc/caddy/Caddyfile && systemctl restart caddy.service

注意:更换端口后需要开启对应端口的防火墙规则。

重新安装

bash
systemctl stop caddy.service && curl https://raw.githubusercontent.com/eastmaple/easytrojan/main/easytrojan.sh -o easytrojan.sh && chmod +x easytrojan.sh && bash easytrojan.sh password

完全卸载

bash
systemctl stop caddy.service && systemctl disable caddy.service && rm -rf /etc/caddy /usr/local/bin/caddy /etc/systemd/system/caddy.service

注意事项

  1. 必须使用 root 用户部署
  2. 请勿修改配置文件参数,以免导致服务异常
  3. 免费域名通过 nip.io 提供,格式为 ServerIP.nip.io
  4. 证书申请失败时,尝试关闭防火墙后重新安装
  5. 客户端 TLS 指纹是端口被封的重要原因,建议使用支持 uTLS 的客户端

项目链接

免责声明

该项目仅限研究用途,用户应根据所在管辖区的当地法律评估自己的法规遵从义务。技术原理不做解释,初衷只为解决个人用户与主机商家被阻断连接的问题。

分享: