Telegram WEB Proxy for a shared Docker-Caddy VPS
Однокомандная установка экспериментального Telegram WEB Proxy с закрытой минимальной панелью и нейтральным сайтом-заглушкой. Проект рассчитан на сервер, где публичные 80/443 уже обслуживает Caddy в Docker и на тех же портах нельзя запускать второй reverse proxy.
Целевая конфигурация этого репозитория:
- домен WEB Proxy:
gg.chardwork.ru; - существующий Caddy-контейнер:
adguard-caddy; - Caddyfile:
/opt/stacks/adguard-dns/Caddyfile; - существующий DoH:
dns.chardwork.ru; - панель доступна по случайному пути и защищена логином и паролем;
- главная страница выглядит как нейтральный визуальный журнал Gradient Garden.
Что устанавливается
- официальный
telegramdesktop/tproxy-serverиз зафиксированного commit; - локальный MTProxy backend;
WEB PANEL PROXY v2.0.2из архива с проверкой SHA-256;- отдельные secrets и QR-коды для пользователей;
- статический сайт без аналитики, внешних шрифтов и стороннего JavaScript;
- приватные мосты между Docker-Caddy и сервисами на localhost;
- лимиты памяти и CPU для новых служб;
- резервная копия Caddyfile перед изменением.
Установщик не создаёт второй Caddy и не публикует внутренние порты 2398, 8080, 8081 и 8090 в интернет.
Требования
- Ubuntu 22.04+ или Debian 12+
x86_64; - Docker и работающий Caddy-контейнер;
- существующий Caddyfile, смонтированный в контейнер как
/etc/caddy/Caddyfile; - свободные локальные порты
2398,8080,8081,8090,18080,18090; - A-запись домена на IPv4 VPS;
- минимум 1 ГБ RAM, комфортнее 2 ГБ RAM.
Перед запуском DNS-запись gg.chardwork.ru должна указывать на VPS. CDN или проксирование DNS-провайдера включать не нужно.
Проверка выполняется через публичный DNS Cloudflare. Если системный resolver VPS ещё хранит старый NXDOMAIN, установщик временно добавляет точную запись в /etc/hosts и автоматически удаляет её при завершении или ошибке.
Установка одной командой
curl -fsSL https://git.chardb.ru/AlexChard/telegram-web-proxy/raw/branch/main/install-shared-vps.sh -o /tmp/install-telegram-web-proxy.sh && sudo bash /tmp/install-telegram-web-proxy.sh --domain gg.chardwork.ru --email YOUR_EMAIL
Скрипт автоматически создаст длинный случайный пароль панели. Пароль не передаётся в аргументах и не сохраняется в shell history.
Если VPS временно не видит BerlogaGit, сайт можно передать на сервер заранее и запустить установку с SITE_SOURCE_DIR=/путь/к/site. Контрольные суммы проверяются и в этом режиме.
После установки адрес панели, логин, пароль, основной secret и готовая Telegram-ссылка сохраняются на VPS:
/root/telegram-web-proxy-access.txt
Файл доступен только root.
Пользователи и ссылки
Один secret технически можно использовать на нескольких устройствах и раздать нескольким людям. Практичнее создавать в панели отдельный профиль каждому человеку: тогда доступ можно отозвать точечно, не меняя ссылки остальных.
Панель формирует ссылки вида:
tg://webproxy?server=gg.chardwork.ru&port=443&secret=SECRET
WEB Proxy предназначен прежде всего для поддерживаемых версий Telegram Desktop. Это экспериментальная технология, а не VPN для всего устройства.
Где хранятся данные
В Git находятся только исходники, шаблоны и публичный сайт. На VPS, вне репозитория, остаются:
/etc/web-proxy-panel/— настройки установки и основной secret;/var/lib/tproxy-panel/— база панели и пользователи;/etc/tproxy-server/— конфигурация relay и профили;/root/telegram-web-proxy-access.txt— приватная памятка владельца;/opt/backups/telegram-web-proxy/— резервные копии перед установкой.
Не добавляйте эти каталоги и файлы в Git без предварительного удаления секретов.
Проверка
systemctl status mtproxy tproxy-server tproxy-panel --no-pager
systemctl status tproxy-caddy-relay-bridge tproxy-caddy-panel-bridge --no-pager
curl -fsS http://127.0.0.1:8081/healthz
curl -fsS http://127.0.0.1:8081/readyz
curl -I https://gg.chardwork.ru/
curl -o /dev/null -w '%{http_code}\n' 'https://dns.chardwork.ru/dns-query?dns=AAABAAABAAAAAAAAB2V4YW1wbGUDY29tAAABAAE'
Последняя команда должна вернуть 200: это подтверждает, что существующий DoH продолжает работать.
Безопасность
- Панель не публикуется отдельным портом — она доступна только через HTTPS и случайный URL.
- Путь панели не заменяет хороший пароль.
- Secrets создаются на VPS и не входят в репозиторий.
- Загруженный upstream-архив проверяется по SHA-256.
- Статические файлы сайта также проверяются по SHA-256.
- При ошибке до завершения установки предыдущий Caddyfile автоматически восстанавливается.
Происхождение компонентов
Соблюдайте условия лицензий upstream-проектов и применимое законодательство вашего региона.