# goTelegram Pro — руководство пользователя **Версия:** 2.5.0 **Репозиторий:** `anten-ka/gotelegram_pro` **Для кого:** владельцы VPS, которым нужен надёжный MTProxy для Telegram с маскировкой под обычный HTTPS-сайт. Если ты впервые видишь проект: установщик сам скачивает нужные файлы, ставит ядро прокси, создаёт меню `gotelegram`, умеет выпустить SSL-сертификат, поднять сайт-маскировку, Telegram-бота, локальную web-админку и бэкапы. Для обычной работы не нужно вручную редактировать `/etc/telemt/config.toml`. --- ## 1. Что это такое goTelegram Pro — это готовый менеджер прокси-сервера MTProxy для Telegram. Он делает три вещи, которые иначе пришлось бы собирать вручную: 1. Ставит и настраивает ядро **telemt** (это современный Rust-порт mtproto-proxy с fake-TLS маскировкой). 2. Запускает рядом обычный HTTPS-сайт на настоящем домене, так что провайдеру со стороны всё выглядит как посещение безобидного лендинга — а на самом деле в том же соединении ходит Telegram-трафик. Это называется «stealth» или «Pro-режим». 3. Даёт Telegram-бота, через которого можно управлять прокси со смартфона: ссылка, статус, перезапуск, бекап, смена маскировочного домена, выбор шаблона сайта. Всё управляется одним меню `gotelegram` в терминале. Внутри есть 5 понятных разделов: прокси, статистика, управление, Telegram-бот и информация о проекте. ### Простая модель в голове - **telemt** — само ядро MTProxy, принимает Telegram-клиентов. - **nginx** — показывает обычный сайт, когда на домен заходит браузер. - **config.json** — память goTelegram Pro: режим, домен, язык, шаблон, настройки. - **Telegram-бот** — мобильное управление без SSH. - **Web-админка** — красивая локальная панель через SSH-туннель. - **Бэкап** — архив с ключами, сайтом, ботом, сертификатами, настройками и статистикой. --- ## 2. Быстрый старт На чистом Ubuntu/Debian VPS под root: ```bash export GOTELEGRAM_PAT="YOUR_PAT"; bash <(curl -sL -H "Authorization: token $GOTELEGRAM_PAT" "https://raw.githubusercontent.com/anten-ka/gotelegram_pro/main/bootstrap.sh") ``` Если нужно поставить строго зафиксированный релиз или тег, укажи ветку/тег явно: ```bash export GOTELEGRAM_PAT="YOUR_PAT" GOTELEGRAM_BRANCH="v2.5.0"; bash <(curl -sL -H "Authorization: token $GOTELEGRAM_PAT" "https://raw.githubusercontent.com/anten-ka/gotelegram_pro/v2.5.0/bootstrap.sh") ``` `bootstrap.sh` скачает все файлы из приватного репозитория, создаст симлинк `/usr/local/bin/gotelegram` и запустит главное меню. Через минуту команда `gotelegram` уже будет работать откуда угодно. Дальше в меню: - **1) Прокси → 1) Установить / обновить** — ставит прокси, спрашивает режим Lite/Pro, домен и шаблон. - **1) Прокси → 2) Подробный статус** — показывает, жив ли telemt, IP, порт, режим и домен. - **1) Прокси → 3) Ссылка** — показывает `tg://proxy?...` и QR-код. Дальше можно открыть Telegram → Настройки → Данные и память → Прокси → добавить по ссылке. Готово. --- ## 3. Lite vs Pro — что выбрать ### Lite (быстрый, без домена) - Работает сразу без какого-либо домена. - Ссылка выглядит как IP-адрес: `tg://proxy?server=95.163.176.222&port=443&secret=ee...` - Провайдеру видно: кто-то сходил на IP:443, TLS с SNI=google.com (или другой популярный домен, который ты выберешь из списка). - Минус: IP-адрес виден, и если провайдер блокирует по списку known-bad-IP, ключ перестанет работать. - Подходит, если домена пока нет, а пользоваться нужно уже сейчас. ### Pro (стелс, со своим доменом) - Нужен настоящий домен, который указывает A-записью на IP VPS. - Провайдеру видно: HTTPS-трафик к `твой-домен.com:443` — выглядит как обычный сайт. - По этому же домену снаружи открывается реальный HTML-сайт (любой из 1800+ шаблонов в каталоге). - Внутри: telemt слушает 443, nginx слушает 127.0.0.1:8443, маскировочный трафик telemt проксирует на nginx через `dns_overrides`, так что сайт реально открывается в браузере. SSL — настоящий Let's Encrypt. - Ссылка: `tg://proxy?server=твой-домен.com&port=443&secret=ee...` - Плюс: выглядит идентично обычному сайту, провайдер не может отличить. - Минус: нужен домен и корректно настроенный DNS (плюс несколько минут ожидания сертификата). **Короткое правило:** есть домен — ставь Pro. Нет — начни с Lite и потом переключишься через пункт меню «Сменить режим». --- ## 4. Меню целиком ``` Главный экран 1) Прокси 2) Статистика 3) Управление 4) Telegram-бот 5) О программе 0) Выход Раздел 1) Прокси 1) Установить / обновить — первый запуск или повторная установка 2) Подробный статус — IP, порт, режим, домен, состояние telemt 3) Ссылка — tg://proxy?... и QR 4) Поделиться — готовое сообщение для пользователя 5) Перезапуск — restart telemt 6) Логи — последние строки journalctl -u telemt 7) Сменить режим — Lite/Pro, домен, шаблон 0) Назад Раздел 2) Статистика 1) Включить/выключить сбор — переключает stats_enabled 2) Сборщик статистики — установка/перезапуск gotelegram-stats 0) Назад Раздел 3) Управление 1) Бэкап — создать архив состояния 2) Восстановить — восстановить из архива 3) Обновить telemt — обновить только бинарник ядра 4) Сайт / SSL — операции с сайтом и сертификатом 5) Удалить — удалить прокси, бота или всё целиком 6) Язык — русский / английский 0) Назад Раздел 4) Telegram-бот Установка, токен BotFather, admin ID, статус, логи, перезапуск. Раздел 5) О программе Версия, стек, промо-раздел. 0) Выход ``` --- ## 5. Telegram-бот Раздел **4) Telegram-бот** разворачивает отдельный Python-сервис (`python-telegram-bot` v21+), который: - Показывает статус прокси, ссылку и QR. - Умеет перезапускать telemt прямо из чата. - Делает бекап и восстанавливает. - Переключает режим (Lite ↔ Pro). - Меняет маскировочный домен. - Меняет сайт-шаблон из каталога на 1800+ готовых HTML-шаблонов (4 источника: html5up, startbootstrap, ThemeWagon, dawidolko). - Поддерживает **2 языка**: русский и английский. Каждый пользователь выбирает свой, настройка сохраняется. Чтобы запустить бота, нужны только два параметра — токен от `@BotFather` и твой Telegram ID (чтобы никто кроме тебя бота не использовал). Меню подсказывает где что ввести. При обновлении goTelegram Pro установленный бот обновляется автоматически: новые `bot.py`, `i18n.py`, языковые файлы и `requirements.txt` копируются в `/opt/gotelegram-bot/`, зависимости проверяются, сервис `gotelegram-bot` перезапускается. Файл `/opt/gotelegram-bot/.env` с токеном и администраторами сохраняется. --- ## 6. Язык интерфейса CLI и бот переведены на русский и английский. Выбор языка идёт: - В CLI — при первом запуске спрашивает один раз и запоминает в `config.json`. - В боте — отдельная кнопка «🇬🇧/🇷🇺», переключение на лету, сохранение per-user. Вся логика интерфейса, ошибок, подсказок, меню — переведена. --- ## 7. Бекап и восстановление Раздел **3) Управление → 1) Бэкап** делает один файл `.tar.gz` со всем, что нужно: `/etc/telemt/config.toml`, `/opt/gotelegram/config.json`, `/opt/gotelegram/disabled_users.json`, данные nginx-сайта, сертификаты Let's Encrypt (`live/archive/renewal`), пользовательские шаблоны, каталог шаблонов, историю трафика, состояние Telegram-бота и локальной web-админки. По умолчанию архивы лежат в `/opt/gotelegram/backups/`. Раздел **3) Управление → 2) Восстановить** принимает такой архив и восстанавливает всё обратно (конфиг, сервис, ссылка — всё то же, что было). Перед восстановлением из админки или Telegram-бота автоматически создаётся свежий safety-бекап текущего состояния. В web-админке и Telegram-боте есть сценарии автобэкапов: выключено, каждый день, каждую неделю или каждый месяц. Это systemd timer `gotelegram-backup.timer`; автоматическая чистка оставляет последние 30 архивов, чтобы каталог не рос бесконечно. Старые простые архивы `backup_*.tar.gz`, которые создавал ранний Telegram-бот только из двух конфигов, тоже распознаются при восстановлении как legacy-формат. --- ## 8. Локальная web-админка Начиная с **2.5.0** вместе с ботом ставится локальная web-админка: - systemd service: `gotelegram-admin`; - слушает только `127.0.0.1:1984`; - наружу не публикуется и рассчитана на доступ через SSH tunnel; - после туннеля открывается обычным URL `http://127.0.0.1:1984/`; - язык берётся из `config.json.language` / `/opt/gotelegram/.language`, как в CLI и Telegram-боте; в верхней панели можно переключить RU/EN, выбор сохраняется в общий конфиг; - есть светлая/тёмная тема, вкладки и адаптивная вёрстка под desktop/mobile; - Telegram-бот показывает инструкцию для Termius и обычную команду `ssh -L 1984:127.0.0.1:1984 root@SERVER`. Как открыть через Termius: 1. Открой нужный Host или создай новый. 2. Укажи `Address` = IP сервера, `Username` = `root`, пароль или ключ SSH. 3. Открой настройки Host → `Port Forwarding` / `Tunnels`. 4. Добавь tunnel типа `Local`. 5. `Local host`: `localhost`. 6. `Local port`: `1984`. 7. `Destination host`: `127.0.0.1`. 8. `Destination port`: `1984`. 9. Подключись к серверу через этот Host. 10. Открой в браузере `http://localhost:1984`. В админке есть dashboard, проверка сайта `https://домен/` на HTTP 200, статус сервисов, полезный блок «кто слушает порт 443» по данным `ss`, управление ключами `[access.users]` с добавлением, удалением и быстрым отключением через switch, лимит одновременных уникальных IP на ключ через `[access.user_max_unique_ips]` (`0` — безлимит), генерация ссылок и QR-кодов для импорта в Telegram, traffic history по периодам 15 минут / 1 час / 24 часа / месяц с переключателем график/строки, такая же статистика по каждому ключу, кнопка разового обновления статистики, кнопка перезапуска сборщика, список/создание/восстановление бекапов, расписание автобэкапов и просмотр логов с количеством строк и статусом `journalctl`. История трафика хранится максимум 1 год. Чтобы файлы не разрастались, последние 31 день пишутся поминутно, а более старая история автоматически уплотняется до одной точки в час. Для обычного просмотра 15 минут / 1 час / 24 часа / месяц детализация остаётся полной. ## 8.1 3x-ui / VLESS на том же 443 Один порт `443` не могут одновременно слушать `telemt` и Xray напрямую. Для совместной работы используется схема shared-443: публичный `443` занимает nginx stream-диспетчер, goTelegram `telemt` переносится на `127.0.0.1:7443`, сайт остаётся на `127.0.0.1:8443`, а inbound 3x-ui/Xray нужно в панели перенести на внутренний адрес, например `127.0.0.1:9443`. После переноса Xray-входа можно включить маршрут: ```bash source /opt/gotelegram/lib/shared443.sh shared443_enable my-domain.com xray-domain.com 127.0.0.1:9443 ``` goTelegram Pro не переписывает базу 3x-ui автоматически, потому что панель может перегенерировать Xray-конфиг. Админка показывает карту `443`: публичный edge, telemt, сайт и Xray-маршруты. Отключённые ключи убираются из активного telemt-конфига и сохраняются в `/opt/gotelegram/disabled_users.json`, поэтому их можно включить обратно без потери secret. Основной ключ `main` защищён от удаления и отключения. Лимит IP хранится в `/etc/telemt/config.toml` в секции `[access.user_max_unique_ips]`. Значение `0` в UI означает отсутствие строки в этой секции и безлимит. Значение `1`, `2` и выше ограничивает количество одновременно активных уникальных IP для выбранного ключа; если лимит уже занят, новый IP не проходит, пока один из старых не отключится. --- ## 9. Обновление Два типа обновлений: - **Обновление ядра telemt** (пункт 10) — тянет свежий бинарник с GitHub Releases `telemt/telemt`, сохраняет старый в `.bak`, перезапускает сервис. Конфиг остаётся как был. - **Обновление самого goTelegram Pro** (повторный запуск bootstrap или пункт 1 после скачивания новых файлов) — переустанавливает скрипты и `lib/`, обновляет локальную web-админку и уже установленный Telegram-бот. `config.json`, ключи, домен и `/opt/gotelegram-bot/.env` не трогаются. Bootstrap.sh умеет сам обновлять всё, если запустить его повторно. Начиная с **2.5.0** первый запуск новой версии делает автоматическую миграцию старого состояния: создаёт pre-upgrade архив в `/opt/gotelegram/backups/`, вытаскивает все ключи из `[access.users]`, сохраняет домен, порт, режим, язык, историю статистики и фактически развёрнутый сайт. Если старый `template_id` был неправильным или отсутствовал, сайт помечается как `deployed_site`, чтобы Telegram-бот не показывал первый установленный шаблон вместо текущего. --- ## 10. Удаление Пункт **13) Удалить всё** даёт выбор: - Удалить только прокси (оставить бота). - Удалить только бота. - Удалить всё целиком, включая `/opt/gotelegram`, `/etc/telemt`, symlink `gotelegram`, systemd юниты, nginx-конфиг, бекапы и сайт из `/var/www/gotelegram-site`. После «удалить всё» VPS возвращается к состоянию до установки (кроме скачанных пакетов типа `jq`, `nginx`, `certbot` — они остаются). --- ## 11. Требования к VPS - **ОС:** Ubuntu 20.04+ или Debian 11+ (протестировано на Ubuntu 22.04). - **RAM:** 512 МБ минимум, 1 ГБ комфортно (telemt сам по себе ест мало, но рядом nginx + бот). - **Диск:** 2 ГБ (в основном под каталог шаблонов и бекапы). - **Права:** root или sudo. - **Порты:** в обычной схеме 443 должен быть свободен. Для совместной работы с 3x-ui/Xray используйте shared-443 и переносите Xray inbound на внутренний порт, например `127.0.0.1:9443`. - **Для Pro-режима:** домен с настроенным A-record на IP VPS. DNS должен отвечать ДО установки, иначе Let's Encrypt не выдаст сертификат. --- ## 12. Частые вопросы **Q: Ключ перестал работать, telemt живой.** A: 95% случаев — это когда после переустановки telemt не перечитал свежий конфиг (было исправлено в 2.4.1, см. changelog). Перезапусти вручную: `systemctl restart telemt`. Если не помогло — смотри логи (пункт 6 меню) и проверь `/etc/telemt/config.toml` на предмет правильного `tls_domain`. **Q: Pro-режим не получил сертификат.** A: Проверь, что домен резолвится в правильный IP: `dig +short твой-домен.com`. Должен быть IP VPS. Если DNS правильный — проверь, что 80 и 443 никем не заняты кроме telemt (certbot на момент выдачи сертификата временно занимает 80). Попробуй пункт 11 (ручная перегенерация SSL). **Q: Как сменить домен маскировки в Lite-режиме?** A: Пункт 7 → сменить режим/шаблон. Можно также просто переустановить (пункт 1) — текущий конфиг сохранится в бекапе. **Q: Бот не реагирует.** A: Посмотри логи бота в пункте 12 → «Логи бота». Чаще всего — неверный токен или неверный admin ID в `.env`. **Q: Могу ли я поставить несколько прокси на одном VPS?** A: Да, через shared-443: nginx stream слушает публичный `443`, goTelegram `telemt` работает на `127.0.0.1:7443`, а Xray/3x-ui — на внутреннем порту вроде `127.0.0.1:9443`. Напрямую два процесса на `0.0.0.0:443` работать не будут. **Q: Это легально?** A: Сам MTProxy — да, это публичная технология из исходников Telegram. Запуск прокси, чтобы твои друзья могли пользоваться Telegram там, где он заблокирован — в большинстве юрисдикций легально. Проверь локальные законы. --- ## 12. Где что лежит | Что | Где | | --- | --- | | Скрипты (`install.sh`, `lib/`) | `/opt/gotelegram/` | | Симлинк запуска | `/usr/local/bin/gotelegram` | | Конфиг telemt | `/etc/telemt/config.toml` | | Конфиг goTelegram Pro (JSON) | `/opt/gotelegram/config.json` | | Бинарник telemt | `/usr/local/bin/telemt` | | Systemd юнит | `/etc/systemd/system/telemt.service` | | Бот | `/opt/gotelegram-bot/` | | Systemd юнит бота | `/etc/systemd/system/gotelegram-bot.service` | | Сайт (Pro-режим) | `/var/www/gotelegram-site/` | | nginx site | `/etc/nginx/sites-available/gotelegram` | | Бекапы | `/opt/gotelegram/backups/` | | Лог goTelegram Pro | `/var/log/gotelegram.log` | | Логи telemt | `journalctl -u telemt` | | Логи бота | `journalctl -u gotelegram-bot` | --- ## 13. Контакты и развитие - Баги и пожелания — issues в репозитории `anten-ka/gotelegram_pro`. - Владелец: Vitalii (`anten-ka`). - Ветки: `main` — основная стабильная установка; `beta` — следующая публичная сборка для проверки; `alpha` — ранние личные эксперименты владельца. --- ## Changelog (коротко) - **2.5.0** — единая версия по коду и документации; удалён дефолтный PAT из `bootstrap.sh`; исправлена статистика в боте (CSV header больше не ломает чтение истории, бот сам обновляет snapshot); установленный Telegram-бот теперь автоматически обновляется при повторном bootstrap/update без потери `.env`; CLI-смена шаблона теперь обновляет `config.json.template_id`, поэтому бот показывает текущий шаблон; telemt TOML включает локальный API `127.0.0.1:9091` и metrics на `127.0.0.1:9090`; добавлено меню Telegram-бота для отдельных ключей пользователей (`[access.users]`): список, добавление, отключение/включение, удаление, ссылка, QR-код, текущий runtime, лимит уникальных IP через `[access.user_max_unique_ips]` и история трафика по ключу; добавлена локальная web-админка goTelegram Pro на `127.0.0.1:1984` под SSH tunnel без отдельного токена, с вкладками, иконками, promo-разделом раз в 24 часа, i18n от языка установки, ручным переключателем RU/EN, проверкой сайта на HTTP 200, тёмной темой, адаптивом, быстрыми switch-переключателями ключей, настройкой IP-лимита, QR-кодами, блоком реальных TCP/UDP-слушателей 443, подсказками к техническим терминам, traffic history по периодам 15 минут / 1 час / 24 часа / месяц и per-user traffic history; backup/restore сохраняет bot `.env`, языки бота, отключённые ключи, web-admin server/static, custom templates, stats history, user stats history, shared-443 config и структуру Let's Encrypt для переезда на новый VPS; добавлены ручные/ежедневные/еженедельные/ежемесячные бэкапы, восстановление из админки/бота с safety-бекапом и legacy-restore для старых `backup_*.tar.gz`; добавлен безопасный детект 3x-ui/Xray на 443 и управляемый nginx stream shared-443 dispatcher. - **2.4.6** — ожидание apt/dpkg lock на свежих Ubuntu/Debian, чтобы установка nginx/certbot/Python не падала во время unattended-upgrades. - **2.4.3** — фикс гонки в `bot_action_dispatch`: параллельные вызовы `change-lite-domain`/`change-template` (например, два пользователя бота одновременно) могли получить ошибку «no secret in config», если один процесс читал `config.json` в момент, когда другой его перезаписывал через `jq`. Теперь диспетчер оборачивается в `flock(1)` с таймаутом 30 с; `util-linux` (содержит `flock`) добавлен в критические зависимости. - **2.4.2** — смена шаблона и домена маскировки **прямо из Telegram-бота** без SSH. Раньше эти пункты меню показывали сообщение «сделай через CLI», теперь бот вызывает `install.sh --action=change-template --json` / `--action=change-lite-domain --json` и разбирает ответ. Плюс: безопасный `safe_edit_message` принимает `disable_web_page_preview`; поле статуса шаблона наконец-то отображается (раньше читалось не из того ключа JSON); полный аудит и автоустановка системных зависимостей при первом запуске (`curl jq openssl git xxd tar dig flock` + опциональные `qrencode bc`); `asyncio.Lock` в боте сериализует параллельные callback'и; валидация tpl\_id (`[A-Za-z0-9_-]{1,64}`) и домена до subprocess. - **2.4.1** — фикс: `start_telemt` теперь делает `restart` если сервис уже запущен. Раньше переустановка Lite поверх Pro оставляла в памяти старый конфиг, и клиенты получали «Unknown TLS SNI drop». Плюс полная документация проекта (этот файл и `DOCS_AI.md`). - **2.4.0** — i18n EN/RU для CLI (328 ключей) и бота (99 ключей JSON с per-user persistence). Возможность загрузить свой шаблон сайта из произвольного git-репо (с валидацией URL, таймаутами, лимитом размера клона). - **2.3.x** — каталог шаблонов расширен до 1801, 4 источника, 18 категорий. Поддержка StartBootstrap `dist/` структуры. - **2.2.1** — критические фиксы `$()` capture (все UI-вывод через `>&2`), StartBootstrap dist-структура, symlink SCRIPT_DIR через `readlink -f`, XSS в HTML-превью бота, OS-release injection. - **2.2** — переход с mtg на telemt v3, новый TOML-формат конфига, stealth-архитектура. Полный changelog — в commit-истории `anten-ka/gotelegram_pro`.