这是indexloc提供的服务,不要输入任何密码
Skip to content

lzylyd/trojan-docker

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

trojan-docker

docker 一键部署 trojan 服务端 :自建 VPS 科学上网


概要

如图所示为 trojan 服务端架构,其中有两个关键组件 trojan 和 nginx 。

因为从零开始部署这个架构对新手不够友好,故本项目将其封装成 docker 以实现一键部署。

另外强调下,本项目使用 certbot 为伪装站点签发 HTTPS 证书。 但由于 certbot 对各个组件的侵入性太强、而且首次安装有交互,所以该组件没有做成 docker 容器,而是将其直接安装到宿主机使用。

本项目主要目的是简化 trojan 服务端的搭建流程,默认你已对 trojan 的原理有一定的熟悉,例如为什么要申请域名、为什么要申请证书等等,所以不会对这些内容做过多解释,若希望了解可参考这篇 教程

环境要求

事前准备

  • 宿主机安装 docker、docker-compose
  • 宿主机安装 python3
  • 已申请可用域名(如 demo_domain.com),并解析到宿主机的公网 IP

部署步骤

1. 安装 certbot

为了可以使用 Let's Encrypt 生成 HTTPS 证书,需要在宿主机上安装 certbot 客户端,安装方法略。

之所以不把 certbot 也做成 docker 容器,是因为它的入侵性太强,做成容器反而不方便

2. 用 certbot 为域名申请免费 HTTPS 证书

/usr/bin/certbot certonly --standalone -d demo_domain.com -d www.demo_domain.com

注:

  • 若找不到 certbot 脚本路径,请自行审查安装位置是不是 /usr/bin/
  • 该命令需要先把 DNS 解析到当前服务器才能成功生成证书(临时域名购买和解析可以到 namesilo
  • 若是第一次执行该命令,需要根据交互步骤先注册邮箱,以后不再需要。
  • 若是更换过域名,需要先删除 /etc/letsencrypt/live/旧域名/etc/letsencrypt/renewal/旧域名.conf,否则无法生成新域名的证书。
  • 生成证书时会使用 80 端口,若有服务占用了 80 端口,需要先关停服务,待证书创建完之后再重启 80 服务。

3. 安装 trojan 服务

# 下载本项目仓库
git clone https://github.com/lyy289065406/trojan-docker /usr/local/trojan-docker
cd /usr/local/trojan-docker

# 构建 docker 镜像
# password 为之后客户端连接 trojan 的密码
# domain 为前面准备好的域名
password=demo_password domain=demo_domain.com docker-compose build

# 刷新证书有效期,并复制宿主机的 HTTPS 证书到 docker 容器
./renew_cert.sh

# 在后台启动 trojan 服务
docker-compose up -d

# 停止 trojan 服务
docker-compose down

4. 自定义伪装站点内容

nginx/html 下的内容替换为你站点的内容。

自动刷新证书

certbot 申请的证书有效期为 90 天,在到期前的 30 天可以重新执行以下命令为更新证书有效期:

/usr/local/bin/certbot renew

该命令会占用 80 端口,执行前要停止相关进程(如 nginx)

但是每次都手动更新会比较麻烦,可以把 renew_cert.sh 脚本设置到 crontab 自动更新证书:

# 编辑定时任务
crontab -e

# 每两个月更新一次证书
0 0 1 */2 0 /bin/sh /usr/local/trojan-docker/renew_cert.sh

各开放端口用途一览

端口 进程 用途 备注
443 trojan trojan 代理服务 -
8443 nginx 伪装 HTTPS 服务 -
80 nginx 伪装 HTTP 服务 -
80 certbot HTTPS 证书申请服务 与 nginx 服务端口冲突,
故申请/续期证书时需要先停止 nginx

About

docker 一键部署 trojan 服务端 :自建 VPS 科学上网

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • CSS 84.7%
  • HTML 9.4%
  • Dockerfile 4.5%
  • Shell 1.4%