Files
telegram-web-proxy/README.md
T

106 lines
6.5 KiB
Markdown

# 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-провайдера включать не нужно.
## Установка одной командой
```bash
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.
После установки адрес панели, логин, пароль, основной secret и готовая Telegram-ссылка сохраняются на VPS:
```text
/root/telegram-web-proxy-access.txt
```
Файл доступен только `root`.
## Пользователи и ссылки
Один secret технически можно использовать на нескольких устройствах и раздать нескольким людям. Практичнее создавать в панели отдельный профиль каждому человеку: тогда доступ можно отозвать точечно, не меняя ссылки остальных.
Панель формирует ссылки вида:
```text
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 без предварительного удаления секретов.
## Проверка
```bash
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 автоматически восстанавливается.
## Происхождение компонентов
- [Telegram Desktop tproxy-server](https://github.com/telegramdesktop/tproxy-server)
- [WEB PANEL PROXY](https://github.com/POLESNIESOVETI12/web-panel-proxy)
Соблюдайте условия лицензий upstream-проектов и применимое законодательство вашего региона.