支持多服务器一键部署 Trojan(多用户)和 Snell(单用户)代理服务的 Ansible 配置。
.
├── ansible.cfg # Ansible 配置
├── site.yml # 主 playbook
├── inventory/
│ └── hosts.yml.example # 主机清单模板
├── group_vars/
│ └── all.yml # 全局变量
├── roles/
│ ├── base/ # 基础安全配置
│ ├── snell/ # Snell 代理服务
│ └── trojan/ # Trojan 代理服务(多用户)
├── credentials/ # 自动生成的凭据(gitignored)
├── users.yml # Trojan 用户配置(gitignored)
└── output/ # 输出目录(gitignored)
cp inventory/hosts.yml.example inventory/hosts.yml
编辑 inventory/hosts.yml,填入你的服务器信息:
all:
children:
servers:
hosts:
server1:
ansible_host: 1.2.3.4
ansible_user: ubuntu
ssh_port: 22
snell:
children:
servers:
trojan:
children:
servers:
cp users.yml.example users.yml
编辑 users.yml:
trojan_users:
- name: alice
password: "your-secure-password-1"
- name: bob
password: "your-secure-password-2"
密码留空会自动生成 32 位随机密码并保存到
credentials/目录。
在 group_vars/all.yml 或命令行中设置:
trojan_domain: "proxy.example.com"
certbot_email: "admin@example.com"
# 部署全部服务
ansible-playbook site.yml
# 仅部署基础配置
ansible-playbook site.yml --tags base
# 仅部署 Snell
ansible-playbook site.yml --limit snell
# 仅部署 Trojan
ansible-playbook site.yml --limit trojan
roles/snell/defaults/main.yml)| 变量 | 默认值 | 说明 |
|---|---|---|
snell_version |
v5.0.1 |
Snell 版本 |
snell_port |
61080 |
监听端口 |
snell_psk |
自动生成 | 预共享密钥 |
snell_ipv6 |
false |
是否启用 IPv6 |
roles/trojan/defaults/main.yml)| 变量 | 默认值 | 说明 |
|---|---|---|
trojan_version |
0.10.6 |
trojan-go 版本 |
trojan_port |
443 |
监听端口 |
trojan_fallback_port |
8080 |
nginx fallback 端口 |
trojan_domain |
"" |
TLS 证书域名(必填) |
certbot_email |
"" |
Let's Encrypt 邮箱(必填) |
inventory/hosts.yml、users.yml 和 credentials/ 已被 .gitignore 排除,请勿手动提交