Skip to content

plvskiy/mtproto-deploy

Repository files navigation

mtproto-deploy

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

Настройка inventory

Каждый хост содержит список 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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages