Files
mtproto-docker-haproxy/README.md
2026-03-20 05:56:16 +00:00

120 lines
4.8 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-docker-haproxy
# Гайд как сбалансировать нагрузку на mtproto (гайд c faketls и без него)
## 0. Если нету докера ставим скриптом на все ноды
```bash
curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh
```
---
## 1. Поднимаем в докере MTProto
### 1.1 Генерация единого секрета, по которому будут подключатся клиенты
```bash
# на всякий случай ставим xxd не везде он есть
apt install xxd
head -c 16 /dev/urandom | xxd -ps
```
### 1.2 Запуск MTProto ноды (без faketls)
```bash
docker run -d --name mtproto-proxy --restart always \
-p 443:443 -p 8888:8888 \
-e SECRET=ТВОЙ_СЕКРЕТЗАГА_1.1 \
-e AES_PWD=$(openssl rand -hex 16) \
telegrammessenger/proxy:latest
```
### 1.3 Запуск MTProto ноды c faketls
Описание как это работает:
Секрет для Fake-TLS состоит из трех частей:
* Префикс ee (включает режим Fake-TLS).
* Твой текущий секрет: ТВОЙ_СЕКРЕТЗАГА_1.3.1.
#### 1.3.1 Как сделать свой домен для Fake-TLS
Используем python (для примера взял `music.yandex.ru`)
```bash
docker run --rm nineseconds/mtg:2 generate-secret --hex music.yandex.ru
```
#### 1.3.2 Поднимаем MTProto
```bash
docker run -d \
--name mtproto-proxy \
--restart unless-stopped \
-p 443:443 \
nineseconds/mtg:2 \
simple-run -n 1.1.1.1 -i prefer-ipv4 0.0.0.0:443 секрет_из_пункта_1.3.1
```
P.S: `-p 443:443` порт, на который будет стучатся балансировщик. -p 8888:8888: Внутренний порт статистики (опционально).
---
## 2. Установка и настройка HAProxy.
### 2.1 Установка
```bash
sudo apt update && sudo apt install haproxy -y
```
### 2.2 Базовая Настройка конфига c rounrobin (Советую использовать настройку в пункте 2.3)
* В конец файла `/etc/haproxy/haproxy.cfg ` добавляем то что написано снизу, конечно же меняя ip нод на свои
то что нужно добавить в конец файла `/etc/haproxy/haproxy.cfg`:
```haproxy
frontend mtproto_in
bind *:443
mode tcp
option tcplog
default_backend mtproto_nodes
backend mtproto_nodes
mode tcp
balance roundrobin
# Проверка доступности порта (check)
server node1 1.1.1.1:443 check
server node2 2.2.2.2:443 check
server node3 3.3.3.3:443 check
```
### 2.3 Немного хитрая настройка rounrobin (советую испоьзовать ее)
```haproxy
frontend mtproto_in
bind *:443
mode tcp
option tcplog
default_backend mtproto_nodes
backend mtproto_nodes
mode tcp
balance roundrobin
# Проверка доступности каждые 2 секунды (inter 2s)
# Если 2 проверки успешны — нода UP (rise 2)
# Если 3 проверки провалены — нода DOWN (fall 3)
server node1 1.1.1.1:443 check inter 2s rise 2 fall 3
server node2 2.2.2.2:443 check inter 2s rise 2 fall 3
server node3 3.3.3.3:443 check inter 2s rise 2 fall 3
```
#### 2.3.1 Если у вас есть основные и бекап ноды и хотите сбалансировать нагрузку, то исользуйте данный конфиг
```haproxy
frontend mtproto_in
bind *:443
mode tcp
option tcplog
default_backend mtproto_nodes
backend mtproto_nodes
mode tcp
balance roundrobin
server node1 1.1.1.1:443 check weight 100 inter 2s rise 2 fall 3
server node2 2.2.2.2:443 check weight 100 inter 2s rise 2 fall 3
#Резервная нода, начнет работать когда упадут 1 и 2.
server node3 3.3.3.3:443 check backup inter 2s rise 2 fall 3
```
p.s-2. bind *:443 тут вы указываете порт который буде открываться как раз с сервера на котором haproxy
### 2.4 Перезапускаете HAProxy
```bash
systemctl restart haproxy
```
---
### 3. Подключаемся
https://t.me/proxy?server=ip-server&port=443&secret=Секрет_который_вы_сгенерировали_ранее
хиттрое создание прокси для домена nextcloud.lord-mikrotik.ru
docker run -d --name mtproto-proxy --restart unless-stopped -p 10443:443 nineseconds/mtg:2 simple-run -n 1.1.1.1 -i prefer-ipv4 0.0.0.0:443 ee89188e830faaf1e96d640163b51193946d757369632e79616e6465782e7275