Skip to content

opengram-server/opengram

Repository files navigation

Opengram

Читать на других языках: 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 и Docker Compose.

  1. Перейдите в каталог с compose-файлом:

    cd docker/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. Запустите сервисы:

    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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors