Docker + Trojan + Caddy 部署 ( 转贴)

SourceURL:https://muguang.me/it/2757.html

Docker + Trojan + Caddy 部署

关于 Trojan,不要多问,问就是代理工具。它先进的地方在于,数据传输使用 TLS 协议,伪装成 HTTPS 请求。Trojan 服务端监听 443 端口,对于普通来路的请求,会交由 Web 服务器处理,返回 Web 网站;而对于 Trojan 客户端来的请求,则由 Trojan 服务端进行代理。这跟 某2ray + Websocket + TLS 原理是一样的,都是通过伪装流量,避免被提取特征或是被检测。

这篇文章里,我将使用 Ubuntu 18.04 操作系统,使用 Caddy 作为 Web 服务器,将 Trojan 服务端和 Caddy 部署到 Docker 中。

0、准备

  • 域名 x1
  • 国外服务器 x1

部署前先给域名设置一条 A 记录,并指向你的服务器 IP。

1、安装 Docker & Docker-Compose

  • 添加 Docker 软件源
    sudo apt-get update
    sudo apt-get install apt-transport-https ca-certificates  curl software-properties-common
    curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
    sudo add-apt-repository "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
    
    Shell
  • 安装 Docker CE(社区版)
    sudo apt-get update -y
    sudo apt-get install docker-ce -y
    Shell
  • 安装 Docker-compose 容器编排工具
    sudo curl -L https://github.com/docker/compose/releases/download/1.18.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose
    docker-compose --version
    Shell

2、构建 Trojan + Caddy 镜像

我已经写好了 Docker compose 的构建脚本,直接克隆下来用即可。

  • 下载 Trojan + Caddy 构建配置,见 GitHub
    git clone git@github.com:FaithPatrick/trojan-caddy-docker-compose.git trojan-caddy-docker-compose && cd trojan-caddy-docker-compose
    Shell
  • 编辑 ./caddy/Caddyfile
    www.yourdomain.com:80 {
        root /usr/src/trojan
        log /usr/src/caddy.log
        index index.html
    }
    
    www.yourdomain.com:443 {
        root /usr/src/trojan
        log /usr/src/caddy.log
        index index.html
    }
    Caddyfile

    www.yourdomain.com 替换成事先准备的域名。

  • 编辑 ./trojan/config/config.json
    config:json:8 位置,将 your_password 替换成要设置的密码,这是客户端需要用到的密码,妥善保管。

    config:json:12-13 位置将 your_domain_name 替换成自己的域名, 这个路径是 Caddy 自动调用 Let’s encrypt 生成的证书路径。

    • 执行 docker-compose build 构建镜像,如果没什么报错就代表成功了。

3、运行 Trojan + Caddy 容器

执行 docker-compose up 命令启动容器,正常启动的日志应该看起来是这样的:

➜ docker-compose up

Starting test_caddy_1 ... done
Attaching to test_caddy_1
caddy_1  | Activating privacy features...
caddy_1  |
caddy_1  | Your sites will be served over HTTPS automatically using Let's Encrypt.
caddy_1  | By continuing, you agree to the Let's Encrypt Subscriber Agreement at:
caddy_1  |   https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf
caddy_1  | Please enter your email address to signify agreement and to be notified
caddy_1  | in case of issues. You can leave it blank, but we don't recommend it.
caddy_1  |   Email address: 2020/01/10 13:54:58 [INFO] acme: Registering account for
caddy_1  | 2020/01/10 13:54:58 [INFO][xx.xx.xx] acme: Obtaining bundled SAN certificate
caddy_1  | 2020/01/10 13:54:58 [INFO][xx.xx.xx] AuthURL: https://acme-v02.api.letsencrypt.org/acme/authz-v3/xxxxxx
caddy_1  | 2020/01/10 13:54:58 [INFO][xx.xx.xx] acme: Trying to solve HTTP-01
caddy_1  | 2020/01/10 13:54:58 [INFO][xx.xx.xx] Served key authentication
caddy_1  | 2020/01/10 13:54:58 [INFO][xx.xx.xx] Served key authentication
caddy_1  | 2020/01/10 13:55:03 [INFO][xx.xx.xx] The server validated our request
caddy_1  | 2020/01/10 13:55:03 [INFO][xx.xx.xx] acme: Validations succeeded; requesting certificates
caddy_1  | 2020/01/10 13:55:04 [INFO][xx.xx.xx] Server responded with a certificate.
caddy_1  | 2020/01/10 13:55:04 [INFO][xx.xx.xx] Certificate written to disk: /root/.caddy/acme/acme-v02.api.letsencrypt.org/sites/xx.xx.xx/xx.xx.xx.crt
caddy_1  | done.

Starting test_trojan_1 ... done
Attaching to test_caddy_1, test_trojan_1
trojan_1  | ssl certs is empty - checking...
trojan_1  | ssl certs is empty - checking...
trojan_1  | Welcome to trojan 1.14.0
trojan_1  | [2020-01-10 15:40:58] [WARN] trojan service (server) started at 0.0.0.0:443
Shell

如果想常驻进程,启动容器时执行 docker-compose up -d

用浏览器访问 https://域名 看一下返回,我的构建脚本默认会返回 Bootstrap 的起始页面:

20200111012712.png

网站存放在 ./wwwroot/trojan/ 目录下面 ,可以随便放点什么,尽可能像一个正常网站就好。

至此,Docker + Trojan + Caddy 服务端部署完成。

4、Trojan 客户端

不多提了,Windows 和 macOS 客户端官方仓库都有:https://url.cn/5r6mb9J
当然,你也可以去寻找更易用的支持 Trojan 的第三方客户端或路由器固件。

Leave a Reply

  

  

  

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>