GitHub - opengram-server/opengram (original) (raw)

Читать на других языках: English

Opengram — это самостоятельный сервер Telegram, написанный на C# (.NET 9). Проект является форком mytelegram и реализует серверную часть API Telegram (MTProto), которую можно развернуть на собственной инфраструктуре. Наш телеграм канал: https://t.me/opengrame

Возможности

Архитектура

Сервер состоит из набора микросервисов, которые запускаются через 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 (объектное хранилище файлов).

Дополнительные компоненты репозитория:

Быстрый старт (Docker)

Потребуются Docker и Docker Compose.

  1. Перейдите в каталог с compose-файлом:
  2. Откройте файл .env и задайте свои значения вместо плейсхолдеров CHANGE_ME(пароли MongoDB, Redis, RabbitMQ, MinIO, ключ Admin API), а также укажите внешний IP-адрес сервера в параметрах App__WebRtcConnections и App__DcOptions.
  3. Сгенерируйте RSA-ключи MTProto и положите их в docker/compose/secrets/mtproto/(см. secrets/mtproto/README.md).
  4. Запустите сервисы:
    Часть сервисов (в том числе 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.