一、安装脚本文件
以root
用户ssh连接到主机,使用下面命令安装脚本:
以Debian系为例,升级源并安装软件
1
| apt-get update && apt-get install -y wget vim socat
|
安装ACME脚本
1
| wget -qO- get.acme.sh | bash
|
让别名生效,此后无论在哪里直接使用acme.sh,不用输绝对路径
二、配置证书
2.1 获取Cloudflare api key
注册好cloudflare账号,把域名dns的解析权限交给cloudflare处理,这样以后只需要在cloudflare这里配置解析记录。按照图示获取cloudflare api key
。
2.2 申请证书(二选一)
这里假定你的域名是yourdomain.com
,执行下面命令申请证书:
2.2.1 dns方式验证
1 2 3 4
| export CF_Key="slfjksjffjfhfhkjhfksjf" export CF_Email="yourcloudflare@gmail.com"
acme.sh --issue --dns dns_cf -d yourdomain.com -d *.yourdomain.com -k ec-256
|
说明:Cloudflare现已不支持.tk .cf .ml
等免费申请来的域名后缀使用此dns验证方式,付费域名才受支持,免费域名使用下面2.2.2方式。脚本申请到的证书和key都放在~/.acme.sh/yourdomain.com_ecc
目录下。
2.2.2 http方式验证
执行下面命令前请保证你80端口没有被别的程序使用,如果有,kill掉,执行下面命令前需要你先在cloudflare dns那里添加好A记录,可以开启cloudflare cdn(cdn对此http方式验证无影响):
1
| acme.sh --issue --standalone -d yourdomain.com -d *.yourdomain.com -k ec-256
|
说明:跟上面一样,脚本申请到的证书放在~/.acme.sh/yourdomain.com_ecc
目录下
1.3 安装证书到指定位置
1 2 3 4 5
| mkdir /etc/trojan-go
acme.sh --installcert -d yourdomain.com -d *.yourdomain.com --fullchain-file /etc/trojan-go/trojan-go.crt --key-file /etc/trojan-go/trojan-go.key --ecc
|
三、安装配置Caddy
3.1 安装caddy
1 2 3 4 5
| wget -O /usr/bin/caddy https://dl.lamp.sh/files/caddy_linux_amd64
chmod 755 /usr/bin/caddy
|
说明:之前给出的安装caddy的脚本好像已经不能用了,里面caddy1的下载链接404了,这里使用秋水逸冰编译好的caddy1版本,具体使用方法还跟之前一样。
3.2 创建caddy的配置文件
3.2.1 创建caddy目录
创建caddy目录并切换至此
1
| mkdir /root/caddy && cd /root/caddy
|
3.2.2 创建caddy配置文件Caddyfile
1 2 3 4 5 6 7 8 9
| vim Caddyfile
0.0.0.0:80 { gzip log /root/caddy/caddy.log proxy / http://baidu.com }
|
说明:此处用proxy / http://baidu.com
来反代别的网站,你也可以去掉此行,用root /path/to/website
来指定网站根目录。
3.3 注册caddy服务
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| cd /etc/systemd/system && vim caddy.service
[Unit] Description=Caddy Service After=network.target
[Service] ExecStart=/usr/bin/caddy -conf /root/caddy/Caddyfile Restart=on-abort LimitNOFILE=1048576
[Install] WantedBy=multi-user.target
systemctl daemon-reload systemctl start caddy systemctl status caddy systemctl enable caddy
|
四、用docker启动trojan服务
4.1 安装配置docker
以root用户执行下面命令安装docker
1 2 3 4 5 6 7 8 9 10 11
| wget -qO- get.docker.com | bash
systemctl start docker
systemctl status docker
docker -v
systemctl enable docker
|
4.2 拉取trojan-go镜像
1
| docker pull teddysun/trojan-go
|
4.3 创建trojan-go服务端配置文件
4.3.1 切换到trojan-go目录并开始编辑配置文件
1
| cd /etc/trojan-go && vim config.json
|
4.3.2 编辑配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| { "run_type": "server", "local_addr": "0.0.0.0", "local_port": 443, "remote_addr": "127.0.0.1", "remote_port": 80, "password": [ "your_awesome_password" ], "ssl": { "cert": "/etc/trojan-go/trojan-go.crt", "key": "/etc/trojan-go/trojan-go.key", "sni": "www.your-awesome-domain-name.com" } }
|
说明:password可以设置多个,方便多用户使用,关于具体的配置文件,trojan项目给出了详细的解释:点我直达。
4.4 启动docker容器
1
| docker run -d --name trojan-go --restart always --net host -v /etc/trojan-go:/etc/trojan-go teddysun/trojan-go
|
说明:这里使用--net host
指定容器使用宿主机网络,为的是让其访问127.0.0.1
是访问服务端,是转发数据到caddy
。也有另外一种方法,这里不用--net host
,使用-p 443:443
映射443端口,但是在上一步的配置文件里需要修改"remote_addr":"127.0.0.1"
,将其改为"remote_addr":"你的服务器IP"
。