Ansible-плейбук для развёртывания Telemt MTProto прокси-серверов
- Ansible >= 2.15
Установить Ansible-коллекции:
ansible-galaxy collection install -r requirements.ymlСоздать inventory из примера:
cp inventory.yml.example inventory.ymlОтредактировать inventory.yml - указать хосты, IP-адреса, домены и сгенерировать секреты пользователей:
# Сгенерировать 32-символьный hex-секрет
openssl rand -hex 16Развернуть:
ansible-playbook playbook.ymlКаждый хост содержит список telemt_instances - инстансов прокси. Пример с двумя серверами:
---
all:
hosts:
# Сервер в Хельсинки
hetzner_hel:
ansible_host: 94.73.162.44 # IP сервера
ansible_user: root
public_host: hel.proxy.example.com # Домен для ссылок (опционально, иначе используется ansible_host)
telemt_instances:
- name: main # Имя инстанса (используется в имени контейнера)
port: 443 # Внешний порт прокси
tls_domain: google.com # Домен для TLS-маскировки
use_middle_proxy: false # Подключение через middle proxy Telegram
fast_mode: true # Быстрый режим (меньше задержка)
log_level: "normal" # Уровень логирования: normal, verbose, debug
users: # Пользователи и их секреты (32 hex-символа)
alice: "d4e7a1b09c3f285e6a10d47b83cf92e1"
bob: "7b2c8f04e19a6d53021eaf87c6b5d430"
# Сервер во Франкфурте с двумя инстансами
hetzner_fra:
ansible_host: 178.29.51.137
ansible_user: root
public_host: fra.proxy.example.com
telemt_instances:
- name: main
port: 443
tls_domain: cloudflare.com
use_middle_proxy: false
fast_mode: true
log_level: "normal"
users:
alice: "c93a0f5e8d174b62ea01f7c5b28d63a9"
- name: secondary # Второй инстанс на другом порту
port: 8443
tls_domain: microsoft.com
use_middle_proxy: false
fast_mode: true
log_level: "normal"
ad_tag: "abc123..." # Опционально: тег для монетизации
users:
alice: "51e0b8a24f6c93d7028dfa16e4b7c5a3"Генерация секретов:
# Один секрет
openssl rand -hex 16
# Сразу 5 секретов
for i in {1..5}; do openssl rand -hex 16; doneКаждому пользователю нужен уникальный секрет на каждом инстансе. Секрет - это 32-символьная hex-строка (16 байт).
# Деплой на все хосты
ansible-playbook playbook.yml
# Деплой на конкретный хост
ansible-playbook playbook.yml -l example_host
# Получить ссылки на прокси (все)
ansible-playbook get-links.yml
# Ссылки с фильтром по пользователю и/или хосту
ansible-playbook get-links.yml -e user=alice
ansible-playbook get-links.yml -e user=alice -l example_host
# Проверка синтаксиса
ansible-playbook playbook.yml --syntax-check
# Пробный запуск
ansible-playbook playbook.yml --check --diff
# Линтинг
ansible-lint