Compare commits

...

12 Commits
flow ... main

Author SHA1 Message Date
Alexey
9303c7854a Merge pull request #701 from groozchique/main
[FAQ] Updated info + section about Telegram DC interaction
2026-04-14 18:05:47 +03:00
Nick Parfyonov
afc07345f5 [docs] fix typo in FAQ.en.md 2026-04-14 15:07:44 +03:00
Nick Parfyonov
a965b38bd4 [docs] add section about client interaction with Telegram DCs 2026-04-14 14:59:04 +03:00
Nick Parfyonov
f0ebbac338 [docs] update information about TLS fingerprint in FAQ
Updated information about TLS fingerprint issue and notice for users to update their clients
2026-04-14 14:26:12 +03:00
Alexey
286662fc51 Merge pull request #697 from TWRoman/main
[docs] Updated QUICK START GUIDEs and READMEs
2026-04-13 19:39:05 +03:00
TWRoman
c5390baaf1 Merge branch 'main' of github.com:TWRoman/telemt_docs 2026-04-13 11:15:49 +03:00
TWRoman
1cd1e96079 Fixed server.listeners and upstreams description 2026-04-13 11:14:02 +03:00
Roman
2b995c31b0 Update README.md
Fixed the link for README.ru
2026-04-13 10:20:25 +03:00
Roman
442320302d Update QUICK_START_GUIDE.ru.md 2026-04-13 10:14:39 +03:00
Roman
ac0dde567b Update README.ru.md 2026-04-13 10:07:50 +03:00
TWRoman
b2fe9b78d8 [docs] Updated READMEs 2026-04-13 10:05:55 +03:00
TWRoman
f039ce1827 [docs] Updated QUICK START GUIDES 2026-04-13 09:56:44 +03:00
8 changed files with 165 additions and 47 deletions

View File

@@ -2,6 +2,8 @@
![Latest Release](https://img.shields.io/github/v/release/telemt/telemt?color=neon) ![Stars](https://img.shields.io/github/stars/telemt/telemt?style=social) ![Forks](https://img.shields.io/github/forks/telemt/telemt?style=social) [![Telegram](https://img.shields.io/badge/Telegram-Chat-24a1de?logo=telegram&logoColor=24a1de)](https://t.me/telemtrs)
[🇷🇺 README на русском](https://github.com/telemt/telemt/blob/main/README.ru.md)
***Löst Probleme, bevor andere überhaupt wissen, dass sie existieren*** / ***It solves problems before others even realize they exist***
> [!NOTE]

View File

@@ -85,4 +85,25 @@ telemt config.toml
- Безопасность памяти;
- Асинхронная архитектура Tokio.
## Поддержать Telemt
Telemt — это бесплатное программное обеспечение с открытым исходным кодом, разработанное в свободное время.
Если оно оказалось вам полезным, вы можете поддержать дальнейшую разработку.
Принимаемые криптовалюты (BTC, ETH, USDT, 350+ и другие):
<p align="center">
<a href="https://nowpayments.io/donation?api_key=2bf1afd2-abc2-49f9-a012-f1e715b37223" target="_blank" rel="noreferrer noopener">
<img src="https://nowpayments.io/images/embeds/donation-button-white.svg" alt="Cryptocurrency & Bitcoin donation button by NOWPayments" height="80">
</a>
</p>
Monero (XMR) напрямую:
```
8Bk4tZEYPQWSypeD2hrUXG2rKbAKF16GqEN942ZdAP5cFdSqW6h4DwkP5cJMAdszzuPeHeHZPTyjWWFwzeFdjuci3ktfMoB
```
Все пожертвования пойдут на инфраструктуру, разработку и исследования.
![telemt_scheme](docs/assets/telemt.png)

View File

@@ -2106,7 +2106,7 @@ Note: This section also accepts the legacy alias `[server.admin_api]` (same sche
- **Example**:
```toml
[server.listeners]
[[server.listeners]]
ip = "0.0.0.0"
```
## announce
@@ -2115,7 +2115,7 @@ Note: This section also accepts the legacy alias `[server.admin_api]` (same sche
- **Example**:
```toml
[server.listeners]
[[server.listeners]]
ip = "0.0.0.0"
announce = "proxy.example.com"
```
@@ -2125,7 +2125,7 @@ Note: This section also accepts the legacy alias `[server.admin_api]` (same sche
- **Example**:
```toml
[server.listeners]
[[server.listeners]]
ip = "0.0.0.0"
announce_ip = "203.0.113.10"
```
@@ -2138,7 +2138,7 @@ Note: This section also accepts the legacy alias `[server.admin_api]` (same sche
[server]
proxy_protocol = false
[server.listeners]
[[server.listeners]]
ip = "0.0.0.0"
proxy_protocol = true
```
@@ -2149,7 +2149,7 @@ Note: This section also accepts the legacy alias `[server.admin_api]` (same sche
- **Example**:
```toml
[server.listeners]
[[server.listeners]]
ip = "0.0.0.0"
reuse_allow = false
```
@@ -2907,7 +2907,7 @@ If your backend or network is very bandwidth-constrained, reduce cap first. If p
```
# [upstreams]
# [[upstreams]]
| Key | Type | Default |
@@ -2926,18 +2926,18 @@ If your backend or network is very bandwidth-constrained, reduce cap first. If p
## type
- **Constraints / validation**: Required field. Must be one of: `"direct"`, `"socks4"`, `"socks5"`, `"shadowsocks"`.
- **Description**: Selects the upstream transport implementation for this `[upstreams]` entry.
- **Description**: Selects the upstream transport implementation for this `[[upstreams]]` entry.
- **Example**:
```toml
[upstreams]
[[upstreams]]
type = "direct"
[upstreams]
[[upstreams]]
type = "socks5"
address = "127.0.0.1:9050"
[upstreams]
[[upstreams]]
type = "shadowsocks"
url = "ss://2022-blake3-aes-256-gcm:BASE64PASSWORD@127.0.0.1:8388"
```
@@ -2947,7 +2947,7 @@ If your backend or network is very bandwidth-constrained, reduce cap first. If p
- **Example**:
```toml
[upstreams]
[[upstreams]]
type = "direct"
weight = 10
```
@@ -2957,7 +2957,7 @@ If your backend or network is very bandwidth-constrained, reduce cap first. If p
- **Example**:
```toml
[upstreams]
[[upstreams]]
type = "socks5"
address = "127.0.0.1:9050"
enabled = false
@@ -2968,7 +2968,7 @@ If your backend or network is very bandwidth-constrained, reduce cap first. If p
- **Example**:
```toml
[upstreams]
[[upstreams]]
type = "socks4"
address = "10.0.0.10:1080"
scopes = "me, fetch, dc2"
@@ -2982,11 +2982,11 @@ If your backend or network is very bandwidth-constrained, reduce cap first. If p
- **Example**:
```toml
[upstreams]
[[upstreams]]
type = "direct"
interface = "eth0"
[upstreams]
[[upstreams]]
type = "socks5"
address = "203.0.113.10:1080"
interface = "192.0.2.10" # explicit local bind IP
@@ -2999,7 +2999,7 @@ If your backend or network is very bandwidth-constrained, reduce cap first. If p
- **Example**:
```toml
[upstreams]
[[upstreams]]
type = "direct"
bind_addresses = ["192.0.2.10", "192.0.2.11"]
```
@@ -3015,7 +3015,7 @@ If your backend or network is very bandwidth-constrained, reduce cap first. If p
[general]
use_middle_proxy = false
[upstreams]
[[upstreams]]
type = "shadowsocks"
url = "ss://2022-blake3-aes-256-gcm:BASE64PASSWORD@127.0.0.1:8388"
```
@@ -3025,7 +3025,7 @@ If your backend or network is very bandwidth-constrained, reduce cap first. If p
- **Example**:
```toml
[upstreams]
[[upstreams]]
type = "socks5"
address = "127.0.0.1:9050"
```
@@ -3035,7 +3035,7 @@ If your backend or network is very bandwidth-constrained, reduce cap first. If p
- **Example**:
```toml
[upstreams]
[[upstreams]]
type = "socks4"
address = "127.0.0.1:1080"
user_id = "telemt"
@@ -3046,7 +3046,7 @@ If your backend or network is very bandwidth-constrained, reduce cap first. If p
- **Example**:
```toml
[upstreams]
[[upstreams]]
type = "socks5"
address = "127.0.0.1:9050"
username = "alice"
@@ -3057,7 +3057,7 @@ If your backend or network is very bandwidth-constrained, reduce cap first. If p
- **Example**:
```toml
[upstreams]
[[upstreams]]
type = "socks5"
address = "127.0.0.1:9050"
username = "alice"

View File

@@ -2112,7 +2112,7 @@
- **Пример**:
```toml
[server.listeners]
[[server.listeners]]
ip = "0.0.0.0"
```
## announce
@@ -2121,7 +2121,7 @@
- **Пример**:
```toml
[server.listeners]
[[server.listeners]]
ip = "0.0.0.0"
announce = "proxy.example.com"
```
@@ -2131,7 +2131,7 @@
- **Пример**:
```toml
[server.listeners]
[[server.listeners]]
ip = "0.0.0.0"
announce_ip = "203.0.113.10"
```
@@ -2144,7 +2144,7 @@
[server]
proxy_protocol = false
[server.listeners]
[[server.listeners]]
ip = "0.0.0.0"
proxy_protocol = true
```
@@ -2155,7 +2155,7 @@
- **Пример**:
```toml
[server.listeners]
[[server.listeners]]
ip = "0.0.0.0"
reuse_allow = false
```
@@ -2912,7 +2912,7 @@
```
# [upstreams]
# [[upstreams]]
| Ключ | Тип | По умолчанию |
@@ -2931,18 +2931,18 @@
## type
- **Ограничения / валидация**: Обязательный параметр.`"direct"`, `"socks4"`, `"socks5"`, `"shadowsocks"`.
- **Описание**: Выбирает реализацию upstream-транспорта для этой записи в `[upstreams]`.
- **Описание**: Выбирает реализацию upstream-транспорта для этой записи в `[[upstreams]]`.
- **Пример**:
```toml
[upstreams]
[[upstreams]]
type = "direct"
[upstreams]
[[upstreams]]
type = "socks5"
address = "127.0.0.1:9050"
[upstreams]
[[upstreams]]
type = "shadowsocks"
url = "ss://2022-blake3-aes-256-gcm:BASE64PASSWORD@127.0.0.1:8388"
```
@@ -2952,7 +2952,7 @@
- **Пример**:
```toml
[upstreams]
[[upstreams]]
type = "direct"
weight = 10
```
@@ -2962,7 +2962,7 @@
- **Пример**:
```toml
[upstreams]
[[upstreams]]
type = "socks5"
address = "127.0.0.1:9050"
enabled = false
@@ -2973,7 +2973,7 @@
- **Пример**:
```toml
[upstreams]
[[upstreams]]
type = "socks4"
address = "10.0.0.10:1080"
scopes = "me, fetch, dc2"
@@ -2987,11 +2987,11 @@
- **Пример**:
```toml
[upstreams]
[[upstreams]]
type = "direct"
interface = "eth0"
[upstreams]
[[upstreams]]
type = "socks5"
address = "203.0.113.10:1080"
interface = "192.0.2.10" # explicit local bind IP
@@ -3004,7 +3004,7 @@
- **Пример**:
```toml
[upstreams]
[[upstreams]]
type = "direct"
bind_addresses = ["192.0.2.10", "192.0.2.11"]
```
@@ -3020,7 +3020,7 @@
[general]
use_middle_proxy = false
[upstreams]
[[upstreams]]
type = "shadowsocks"
url = "ss://2022-blake3-aes-256-gcm:BASE64PASSWORD@127.0.0.1:8388"
```
@@ -3030,7 +3030,7 @@
- **Пример**:
```toml
[upstreams]
[[upstreams]]
type = "socks5"
address = "127.0.0.1:9050"
```
@@ -3040,7 +3040,7 @@
- **Пример**:
```toml
[upstreams]
[[upstreams]]
type = "socks4"
address = "127.0.0.1:1080"
user_id = "telemt"
@@ -3051,7 +3051,7 @@
- **Пример**:
```toml
[upstreams]
[[upstreams]]
type = "socks5"
address = "127.0.0.1:9050"
username = "alice"
@@ -3062,7 +3062,7 @@
- **Пример**:
```toml
[upstreams]
[[upstreams]]
type = "socks5"
address = "127.0.0.1:9050"
username = "alice"

View File

@@ -36,8 +36,11 @@ hello2 = "ad_tag2"
On April 1, 2026, we became aware of a method for detecting MTProxy Fake-TLS,
based on the ECH extension and the ordering of cipher suites,
as well as an overall unique JA3/JA4 fingerprint
that does not occur in modern browsers:
we have already submitted initial changes to the Telegram Desktop developers and are working on updates for other clients.
that does not occur in modern browsers.
> [!IMPORTANT]
> TLS fingerprint has been fixed in latest version of clients for Desktop / Android / iOS.
> Please update your client for MTProxy Fake-TLS to work correctly.
- We consider this a breakthrough aspect, which has no stable analogues today
- Based on this: if `telemt` configured correctly, **TLS mode is completely identical to real-life handshake + communication** with a specified host
@@ -154,6 +157,24 @@ Keep-Alive: timeout=60
### Why do you need a middle proxy (ME)
https://github.com/telemt/telemt/discussions/167
## How clients interact with Telegram DCs
When you register a Telegram account, it gets permanently bound to one of Telegram's data centers (DCs).
It is deciced beforehand by Telegram based on the phone number's region.
This DC becomes your **home DC**: all content you upload (photos, videos, files, messages) is stored there.
Your client authenticates on it with every connection.
For example, if your account is registered on **DC2**, your client will always connect to DC2 first.
When you open a chat with another user whose home DC is **DC5**, your client opens an additional connection to DC5 to download their media.
Those cross-DC requests are normal and happen constantly.
> [!WARNING]
> Because every session is anchored to your home DC, an outage there causes other DCs to be unavaliable.
> If your home DC is DC2 and DC2 goes down, you **cannot** reach DC5 even though DC5 itself is perfectly healthy.
> The client has no valid session to route the request through.
This is also why an MTProxy only needs to reach Telegram's DC infrastructure as a whole.
The proxy itself doesn't care which DC your account lives on. The client negotiates the correct DC through the proxy after connecting.
### How many people can use one link
By default, an unlimited number of people can use a single link.
However, you can limit the number of unique IP addresses for each user:
@@ -161,7 +182,8 @@ However, you can limit the number of unique IP addresses for each user:
[access.user_max_unique_ips]
hello = 1
```
This parameter sets the maximum number of unique IP addresses from which a single link can be used simultaneously. If the first user disconnects, a second one can connect. At the same time, multiple users can connect from a single IP address simultaneously (for example, devices on the same Wi-Fi network).
This parameter sets the maximum number of unique IP addresses from which a single link can be used simultaneously. If the first user disconnects, a second one can connect.
At the same time, multiple users can connect from a single IP address simultaneously (for example, devices on the same Wi-Fi network).
### How to create multiple different links
1. Generate the required number of secrets using the command: `openssl rand -hex 16`.

View File

@@ -33,9 +33,12 @@ hello = "ad_tag"
hello2 = "ad_tag2"
```
## Распознаваемость для DPI и сканеров
1 апреля 2026 года нам стало известно о методе обнаружения MTProxy Fake-TLS, основанном на расширении ECH и порядке набора шифров,
а также об общем уникальном отпечатке JA3/JA4, который не встречается в современных браузерах.
1 апреля 2026 года нам стало известно о методе обнаружения MTProxy Fake-TLS, основанном на расширении ECH и порядке набора шифров,
а также об общем уникальном отпечатке JA3/JA4, который не встречается в современных браузерах: мы уже отправили первоначальные изменения разработчикам Telegram Desktop и работаем над обновлениями для других клиентов.
> [!IMPORTANT]
> Проблема с TLS отпечатком исправлена в последних версиях клиентов Telegram для Desktop / Android / iOS.
> Обновите свой клиент для корректной работы с MTProxy Fake-TLS!
- Мы считаем это прорывом, которому на сегодняшний день нет стабильных аналогов;
- Исходя из этого: если `telemt` настроен правильно, **режим TLS полностью идентичен реальному «рукопожатию» + обмену данными** с указанным хостом;
@@ -152,6 +155,23 @@ Keep-Alive: timeout=60
## Зачем нужен middle proxy (ME)
https://github.com/telemt/telemt/discussions/167
## Как клиенты взаимодействуют с дата-центрами Telegram
При регистрации аккаунта Telegram он навсегда привязывается к одному из дата-центров (DC).
Telegram заранее определяет к какому DC привязать аккаунт исходя из региона, к которому относиться номер телефона.
Этот DC становится вашим **домашним**: именно там хранится весь контент, который вы загружаете (фото, видео, файлы, сообщения).
И именно на нем клиент авторизуется при каждом подключении.
Например, если ваш аккаунт зарегистрирован на **DC2**, клиент всегда будет подключаться в первую очередь к DC2.
Когда вы открываете переписку с пользователем, чей домашний DC — **DC5**, клиент устанавливает доп. соединение с DC5, чтобы загрузить его контент.
Такие кросс-запросы к DC — это нормальная часть работы Telegram.
> [!WARNING]
> Поскольку аккаунт всегда привязан к домашнему DC, при его падении контент с других DC будет недоступен.
> Если ваш домашний DC — DC2, и DC2 лежит, вы **не сможете** достучаться и до DC5, даже если сам DC5 полностью исправен.
> У клиента просто нет валидной сессии, через которую можно было бы направить запрос.
По той же причине MTProxy достаточно иметь доступ к инфраструктуре Telegram в целом.
Cамому MTProxy всё равно, на каком DC живёт ваш аккаунт. Клиент cам договаривается о нужном DC через прокси уже после подключения.
## Что такое dd и ee в контексте MTProxy?

View File

@@ -1,9 +1,36 @@
# Installation Options
There are three options for installing Telemt:
- [Automated installation using a script](#very-quick-start).
- [Manual installation of Telemt as a service](#telemt-via-systemd).
- [Installation using Docker Compose](#telemt-via-docker-compose).
# Very quick start
### One-command installation / update on re-run
```bash
curl -fsSL https://raw.githubusercontent.com/telemt/telemt/main/install.sh | sh
```
After starting, the script will prompt for:
- Your language (1 - English, 2 - Russian);
- Your TLS domain (press Enter for petrovich.ru).
The script checks if the port (default **443**) is free. If the port is already in use, installation will fail. You need to free up the port or use the **-p** flag with a different port to retry the installation.
To modify the scripts startup parameters, you can use the following flags:
- **-d, --domain** - TLS domain;
- **-p, --port** - server port (165535);
- **-s, --secret** - 32 hex secret;
- **-a, --ad-tag** - ad_tag;
- **-l, --lan**g - language (1/en or 2/ru);
Providing all options skips interactive prompts.
After completion, the script will provide a link for client connections:
```bash
tg://proxy?server=IP&port=PORT&secret=SECRET
```
### Installing a specific version
```bash
curl -fsSL https://raw.githubusercontent.com/telemt/telemt/main/install.sh | sh -s -- 3.3.39

View File

@@ -1,9 +1,35 @@
# Варианты установки
Имеется три варианта установки Telemt:
- [Автоматизированная установка с помощью скрипта](#очень-быстрый-старт).
- [Ручная установка Telemt в качестве службы](#telemt-через-systemd-вручную).
- [Установка через Docker Compose](#telemt-через-docker-compose).
# Очень быстрый старт
### Установка одной командой / обновление при повторном запуске
```bash
curl -fsSL https://raw.githubusercontent.com/telemt/telemt/main/install.sh | sh
```
После запуска скрипт запросит:
- ваш язык (1 - English, 2 - Русский);
- ваш TLS-домен (нажмите Enter для petrovich.ru).
Во время установки скрипт проверяет, свободен ли порт (по умолчанию **443**). Если порт занят другим процессом - установка завершится с ошибкой. Для повторной установки необходимо освободить порт или указать другой через флаг **-p**.
Для изменения параметров запуска скрипта можно использовать следующие флаги:
- **-d, --domain** - TLS-домен;
- **-p, --port** - порт (165535);
- **-s, --secret** - секрет (32 hex символа);
- **-a, --ad-tag** - ad_tag;
- **-l, --lang** - язык (1/en или 2/ru).
Если заданы флаги для языка и домена, интерактивных вопросов не будет.
После завершения установки скрипт выдаст ссылку для подключения клиентов:
```bash
tg://proxy?server=IP&port=PORT&secret=SECRET
```
### Установка нужной версии
```bash
curl -fsSL https://raw.githubusercontent.com/telemt/telemt/main/install.sh | sh -s -- 3.3.39