Читать на других языках: English
Opengram — это самостоятельный сервер Telegram, написанный на C# (.NET 9). Проект является форком mytelegram и реализует серверную часть API Telegram (MTProto), которую можно развернуть на собственной инфраструктуре. Наш телеграм канал: https://t.me/opengrame
- MTProto-транспорты (Abridged, Intermediate), layer 216;
- личные чаты, группы, супергруппы и каналы;
- секретные (end-to-end) чаты;
- голосовые и видеозвонки (через TURN/STUN и SFU mediasoup);
- боты и Bot API;
- настройки приватности и двухфакторная аутентификация;
- стикеры, реакции, кастомные эмодзи;
- звёзды (Stars) и подарки (Star Gifts), включая перепродажу и апгрейд;
- истории (Stories), темы оформления и обои;
- запланированные и самоудаляющиеся сообщения.
Сервер состоит из набора микросервисов, которые запускаются через Docker Compose:
| Сервис | Назначение |
|---|---|
gateway-server |
Точка входа для MTProto-подключений клиентов |
auth-server |
Авторизация и обмен ключами |
session-server |
Хранение сессий и маршрутизация обновлений |
messenger-command-server |
Обработка команд (запись, CQRS) |
messenger-query-server |
Обработка запросов (чтение, CQRS) |
bot-api-server |
HTTP Bot API |
admin-api |
Служебный API администрирования |
file-server / file-merge-proxy |
Хранение и раздача файлов |
turn-server |
TURN/STUN для звонков |
sms-sender |
Отправка кодов подтверждения |
data-seeder |
Первичное наполнение базы данных |
Инфраструктура: MongoDB (хранилище и event store), Redis (кеш), RabbitMQ (шина событий), MinIO (объектное хранилище файлов).
Дополнительные компоненты репозитория:
mediasoup-server/— SFU для групповых видеозвонков (Node.js);stargift-admin/— веб-панель управления подарками (backend на Node.js, frontend на React);scripts/— вспомогательные скрипты запуска и тестовые боты.
Потребуются Docker и Docker Compose.
-
Перейдите в каталог с compose-файлом:
cd docker/compose -
Откройте файл
.envи задайте свои значения вместо плейсхолдеровCHANGE_ME(пароли MongoDB, Redis, RabbitMQ, MinIO, ключ Admin API), а также укажите внешний IP-адрес сервера в параметрахApp__WebRtcConnectionsиApp__DcOptions. -
Сгенерируйте RSA-ключи MTProto и положите их в
docker/compose/secrets/mtproto/(см.secrets/mtproto/README.md). -
Запустите сервисы:
docker compose up -d
Часть сервисов (в том числе
messenger-query-server) собирается локально из исходников, а не скачивается из реестра, поэтомуdocker loginне требуется. При первом запуске образы соберутся автоматически. Чтобы пересобрать их вручную:docker compose build docker compose up -d
После старта подключите клиент Telegram, прописав адрес вашего дата-центра.
Для сборки нужен .NET 9 SDK.
cd source
dotnet build MyTelegram.sln -c ReleaseСкрипты сборки Docker-образов лежат в каталоге build/.
Все настройки задаются через переменные окружения (файл .env) либо через
appsettings.json отдельных сервисов. В репозитории все значения паролей и ключей
заменены на плейсхолдеры CHANGE_ME — перед запуском замените их на свои.
Не храните реальные пароли и приватные ключи в репозитории.
Проект основан на mytelegram. Все права на оригинальный код принадлежат его авторам; уважайте условия лицензии исходного проекта и товарные знаки Telegram.