diff --git a/README.en.md b/README.en.md new file mode 100644 index 0000000..207f444 --- /dev/null +++ b/README.en.md @@ -0,0 +1,104 @@ +# Opengram + +*Read this in other languages: [Русский](README.md)* + +Opengram is a standalone Telegram server written in C# (.NET 9). The project is a fork of [mytelegram](https://github.com/loyldg/mytelegram) and implements the server side of the Telegram API (MTProto), which you can deploy on your own infrastructure. +Our Telegram channel: https://t.me/opengrame + +## Features + +- MTProto transports (Abridged, Intermediate); +- private chats, groups, supergroups and channels; +- secret (end-to-end) chats; +- voice and video calls (via TURN/STUN and the mediasoup SFU); +- bots and the Bot API; +- privacy settings and two-factor authentication; +- stickers, reactions, custom emoji; +- Stars and Star Gifts, including resale and upgrade; +- Stories, themes and wallpapers; +- scheduled and self-destructing messages. + +## Architecture + +The server consists of a set of microservices that run via Docker Compose: + +| Service | Purpose | +| --- | --- | +| `gateway-server` | Entry point for client MTProto connections | +| `auth-server` | Authorization and key exchange | +| `session-server` | Session storage and update routing | +| `messenger-command-server` | Command handling (write side, CQRS) | +| `messenger-query-server` | Query handling (read side, CQRS) | +| `bot-api-server` | HTTP Bot API | +| `admin-api` | Administration service API | +| `file-server` / `file-merge-proxy` | File storage and delivery | +| `turn-server` | TURN/STUN for calls | +| `sms-sender` | Sending verification codes | +| `data-seeder` | Initial database seeding | + +Infrastructure: MongoDB (storage and event store), Redis (cache), RabbitMQ (event bus), MinIO (object storage for files). + +Additional repository components: + +- `mediasoup-server/` — SFU for group video calls (Node.js); +- `stargift-admin/` — web panel for managing gifts (Node.js backend, React frontend); +- `scripts/` — helper startup scripts and test bots. + +## Quick start (Docker) + +You need Docker and Docker Compose. + +1. Go to the directory with the compose file: + + ```bash + cd docker/compose + ``` + +2. Open the `.env` file and set your own values in place of the `CHANGE_ME` placeholders + (MongoDB, Redis, RabbitMQ, MinIO passwords, Admin API key), and specify the server's + external IP address in the `App__WebRtcConnections` and `App__DcOptions` parameters. + +3. Generate the MTProto RSA keys and place them in `docker/compose/secrets/mtproto/` + (see `secrets/mtproto/README.md`). + +4. Start the services: + + ```bash + docker compose up -d + ``` + + Some services (including `messenger-query-server`) are built locally from source rather + than pulled from a registry, so no `docker login` is required. The first run builds the + images automatically. To rebuild them explicitly, run: + + ```bash + docker compose build + docker compose up -d + ``` + +After startup, connect a Telegram client by pointing it to your data center address. + +## Building from source + +You need the .NET 9 SDK to build. + +```bash +cd source +dotnet build MyTelegram.sln -c Release +``` + +The Docker image build scripts are located in the `build/` directory. + +## Configuration + +All settings are configured via environment variables (the `.env` file) or via each +service's `appsettings.json`. In the repository all password and key values are replaced +with `CHANGE_ME` placeholders — replace them with your own before starting. + +Do not store real passwords or private keys in the repository. + +## License and origin + +The project is based on [mytelegram](https://github.com/loyldg/mytelegram). All rights to +the original code belong to its authors; respect the terms of the original project's license +and Telegram's trademarks. diff --git a/README.md b/README.md index a5e796c..a0cd36b 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # Opengram +*Читать на других языках: [English](README.en.md)* + Opengram — это самостоятельный сервер Telegram, написанный на C# (.NET 9). Проект является форком [mytelegram](https://github.com/loyldg/mytelegram) и реализует серверную часть API Telegram (MTProto), которую можно развернуть на собственной инфраструктуре. Наш телеграм канал: https://t.me/opengrame @@ -65,6 +67,15 @@ Opengram — это самостоятельный сервер Telegram, нап docker compose up -d ``` + Часть сервисов (в том числе `messenger-query-server`) собирается локально из исходников, + а не скачивается из реестра, поэтому `docker login` не требуется. При первом запуске + образы соберутся автоматически. Чтобы пересобрать их вручную: + + ```bash + docker compose build + docker compose up -d + ``` + После старта подключите клиент Telegram, прописав адрес вашего дата-центра. ## Сборка из исходников