Files
rag-pipeline-docker/references/mtproto-alexbers-caddy.md
2026-09-06 13:51:06 +00:00

71 lines
3.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# MTProto Proxy via alexbers/mtprotoproxy + Caddy TLS
## Отличие от seriyps/mtproto-proxy
Существующий скилл `mtproto-proxy` описывает образ `seriyps/mtproto-proxy` с Fake TLS и переменными `MTP_*`. Это **другой** образ. `alexbers/mtprotoproxy` использует:
- **Python-конфиг** (`config.py`) вместо переменных окружения
- **Реальные TLS-сертификаты** (через nginx/Caddy reverse proxy) вместо Fake TLS
- `network_mode: host` вместо bridge
## Docker Compose (с Caddy)
```yaml
services:
mtproto:
image: alexbers/mtprotoproxy
restart: always
network_mode: host
volumes:
# Сертификаты от Caddy (LetsEncrypt)
- /opt/caddy/caddy_data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/domain.ru:/certs:ro
# Конфиг
- ./mtproto:/config
command: python3 mtprotoproxy.py /config/config.py
```
## config.py
```python
# MTProto proxy config
PORT = 443 # or whatever port Caddy forwards TLS to
USERS = {
"tg": "ee" + "32-hex-chars-secret"
}
# Optional: stats reporting
# SECRET = 123456 # for stats (unsafe, optional)
```
## TLS via Caddy
Caddy reverse proxy ставится перед MTProto:
```yaml
labels:
caddy: domain.ru
caddy.reverse_proxy: / "{{upstreams 443}}"
caddy.reverse_proxy.transport: http
caddy.reverse_proxy.transport.tls: "insecure_skip_verify"
```
Caddy получает LetsEncrypt сертификаты и пробрасывает HTTPS-трафик на MTProto (который внутри слушает без TLS).
## Ссылка для подключения
```
https://t.me/proxy?server=domain.ru&port=443&secret=eexxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
```
Секрет с префиксом `ee` — Telegram на клиенте сам определяет что это Fake TLS / реальный TLS.
## Медленное подключение (3+ минуты) — возможные причины
1. **DNS resolver на сервере** — MTProto прокси использует DNS для проверки Telegram API. Если DNS медленный или блокируется, задержка большая. Лечение: проверить `/etc/resolv.conf`, поставить `1.1.1.1` / `8.8.8.8`.
2. **Caddy появляется раньше MTProto** — если Caddy стартует быстрее, он выдаёт ошибку вместо прокси. Telegram клиент пытается переподключаться, что добавляет задержку. Лечение: настроить `depends_on` или restart политику.
3. **TCP keepalive** — MTProto держит соединения. Если между клиентом и сервером есть NAT с таймаутом меньше 3 минут, соединение разрывается и восстанавливается. Это может выглядеть как "3 минуты подключается".
4. **Медленная загрузка сертификатов** — если сертификаты лежат на WebDAV/Yandex Disk, mount может тормозить. Проверить `mount` и права доступа.
5. **Проверка:** внутри контейнера `docker exec mtproto cat /config/config.py`, снаружи `ss -tlnp | grep mtproto`.