|
|
|
@@ -0,0 +1,105 @@
|
|
|
|
|
# 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-проектов и применимое законодательство вашего региона.
|