Trojan-Docker搭建教程
准备工作
1.你需要拥有一个自己的域名,并已经将域名解析至你的服务器
搭建环境
Debian 9/10 && Ubuntu 16/18/20
开始部署
-
安装基本工具
apt update && apt -y install socat wget vim cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
-
安装脚本
wget -qO- get.acme.sh | bash source ~/.bashrc
-
申请证书 (请将 yourdomain.com 改为你的域名)
acme.sh --issue --standalone -d your_domain.com -k ec-256 mkdir /etc/trojan-go acme.sh --installcert -d your_domain.com --fullchain-file /etc/trojan-go/server.crt --key-file /etc/trojan-go/server.key --ecc
-
(可选)证书位置自动安装
使用 cron 命令来安装 (安装后需要重启 trojan-go)
apt update && apt install -y cron
cron -e
如果第一次使用,选1用nano编辑器即可。复制以下内容(your_domain.com 改为你的域名)
* * */61 * * acme.sh --installcert -d your_domain.com --fullchain-file /etc/trojan-go/server.crt --key-file /etc/trojan-go/server.key --ecc
1 * */61 * * docker restart trojan-go
然后执行 /etc/init.d/cron restart 这样每61天会自动安装证书并重启 trojan-go
- 安装 Docker && Nginx && Trojan
wget -qO- get.docker.com | bash docker pull nginx docker pull teddysun/trojan-go docker pull containrrr/watchtower
- 修改 Trojan 配置
vim /etc/trojan-go/config.json
配置1 :不使用CDN
{
"run_type": "server",
"local_addr": "0.0.0.0",
"local_port": 443,
"remote_addr": "127.0.0.1",
"remote_port": 80,
"password": [
"password0" #修改为你设定的密码
],
"ssl": {
"verify": true,
"verify_hostname": true,
"cert": "/etc/trojan-go/server.crt",
"key": "/etc/trojan-go/server.key",
"sni": "your_domain.com", #修改为你的域名
"fallback_port": 3000
}
}
配置2 :使用CDN,且你信任你的CDN提供商
{
"run_type": "server",
"local_addr": "0.0.0.0",
"local_port": 443,
"remote_addr": "127.0.0.1",
"remote_port": 80,
"password": [
"password0" #修改为你设定的密码
],
"ssl": {
"verify": true,
"verify_hostname": true,
"cert": "/etc/trojan-go/server.crt",
"key": "/etc/trojan-go/server.key",
"sni": "your_domain.com", #修改为你的域名
"fallback_port": 3000
},
"websocket": {
"enabled": true,
"path": "/your_path", #修改为你设定的路径
"host": "your_domain.com" #修改为你的域名
}
}
配置3 :使用CDN,但你不信任你的CDN提供商(例如国内厂商的CDN)
{
"run_type": "server",
"local_addr": "0.0.0.0",
"local_port": 443,
"remote_addr": "127.0.0.1",
"remote_port": 80,
"password": [
"password0" #修改为你设定的密码
],
"ssl": {
"verify": true,
"verify_hostname": true,
"cert": "/etc/trojan-go/server.crt",
"key": "/etc/trojan-go/server.key",
"sni": "your_domain.com", #修改为你的域名
"fallback_port": 3000
},
"websocket": {
"enabled": true,
"path": "/your_path", #修改为你设定的路径
"host": "your_domain.com" #修改为你的域名
},
"shadowsocks": {
"enabled": true,
"method": "AES-128-GCM",
"password": "password1" #修改为另一个密码,请勿与上方密码一致
}
}
-
修改 Nginx 配置
mkdir /etc/nginx && mkdir /etc/nginx/conf.d
vim /etc/nginx/conf.d/default.conf -
将以下内容粘贴
server {
listen 127.0.0.1:80 default_server;
server_name your_domain.com; #修改为你的域名
location / {
proxy_pass https://your_proxy.com; #修改为你想伪装的网站域名,例如 https://unsplash.com/
proxy_redirect off;
proxy_buffer_size 64k;
proxy_buffers 32 32k;
proxy_busy_buffers_size 128k;
}
}
server {
listen 127.0.0.1:80;
server_name ip.ip.ip.ip; #修改为你服务器的 IP地址
return 301 https://your_domain.com$request_uri; #修改为你的域名
}
server {
listen 0.0.0.0:80;
listen [::]:80;
servername ;
return 301 https://$host$request_uri;
}
server {
listen 127.0.0.1:3000;
servername ;
return 400;
} -
启动服务
docker run --network host --name nginx -v /etc/nginx/conf.d:/etc/nginx/conf.d --restart=always -d nginx
docker run --network host --name trojan-go -v /etc/trojan-go:/etc/trojan-go --restart=always -d teddysun/trojan-go
docker run --name watchtower -v /var/run/docker.sock:/var/run/docker.sock --restart unless-stopped -d containrrr/watchtower --cleanup -
启动BBR加速
sudo bash -c 'echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf'
sudo bash -c 'echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf'
sudo sysctl -p
更新软件
使用这种配置方式后,watchtower 会自动监测并更新软件,你无需手动更新
意外可以手动更新
-
-
更新 Trojan
docker stop trojan
docker rm trojan
docker rmi teddysun/trojan
docker pull teddysun/trojan
docker run --network host --name trojan -v /etc/trojan:/etc/trojan --restart always -d teddysun/trojan
-
-
-
更新 Nginx
docker stop nginx
docker rm nginx
docker rmi nginx
docker pull nginx
docker run --network host --name nginx -v /etc/nginx/conf.d:/etc/nginx/conf.d --restart=always -d nginx
-
客户端
安卓系统 :
配置如下: 地址填你的域名,端口填 443 ,密码填你刚才设置的密码,其他选项无需更改
Windows系统 :
项目地址 & 使用说明 :https://github.com/TheWanderingCoel/Trojan-Qt5