Unofficial open source mtproto server written in golang with compatible telegram client.
Teamgram Server
中文 | English
Unofficial open-source MTProto server implementation in Go. Compatible with Telegram clients; supports self-hosted deployment.
Features
- MTProto 2.0
- API Layer: 227
- Core features
Architecture

- Architecture Docs -
DeepWikiteamgram/teamgram-server - Architecture (specs) — service topology, data flow, and ports
- Service topology and configuration — ports, infrastructure dependencies, call graph, and Mermaid diagram (中文)
Prerequisites
| Component | Purpose | |-----------|---------| | MySQL 5.7+ / 8.0 | Primary data store | | Redis | Cache, session, deduplication | | etcd | Service discovery & config | | Kafka | Message & event pipeline | | MinIO | Object storage | | FFmpeg | Media transcoding (on server) |
Detailed versions and optional monitoring stack: Dependencies and runtime (specs).
Manual installation
For running the server from source (Go build), follow the step-by-step guides:
- Manual installation (Linux) — CentOS, Fedora, Ubuntu/Debian
- Manual installation (macOS) — Intel and Apple Silicon
Docker installation
For running the full stack with Docker. No manual data initialization: the dependency stack initializes the database (via mounted SQL) and MinIO buckets (via minio-mc) on first start.
1. Clone
git clone https://github.com/teamgram/teamgram-server.git
cd teamgram-server
2. Start dependency stack
This starts MySQL, Redis, etcd, Kafka, MinIO (and optional monitoring). The database and MinIO buckets are initialized automatically.
docker compose -f docker-compose-env.yaml up -d
3. Start application
docker compose up -d
Logging, monitoring & tracing
| Area | Brief | Detailed docs | |------|--------|----------------| | Log | Filebeat → Kafka (teamgram-log) → go-stash → Elasticsearch → Kibana. Config: teamgramd/deploy/filebeat/conf/filebeat.yml, teamgramd/deploy/go-stash/etc/. | Log collection (中文) | | Monitor | Prometheus scrapes metrics; Grafana for dashboards. Enable via Prometheus block in teamgramd/etc2/*.yaml. Config: teamgramd/deploy/prometheus/server/prometheus.yml. | Service monitoring (中文) | | Tracing | go-zero Jaeger / Zipkin support. Set Telemetry in teamgramd/etc2/*.yaml. Jaeger is included in docker-compose-env.yaml. | Link tracking (中文) |
Compatible clients
Default sign-in verification code: 12345 (change for production.)
| Platform | Repository | Patch Link | |----------|------------|------------| | Android | https://github.com/teamgram/teamgram-android | teamgram-android | | iOS | https://github.com/teamgram/teamgram-ios | teamgram-ios | | Desktop (TDesktop) | https://github.com/teamgram/teamgram-tdesktop | teamgram-tdesktop |
Documentation
- Project specs — Architecture, protocol, dependencies, contributing, security, roadmap
- Service topology and configuration — Ports, infrastructure, call graph (中文)
- CONTRIBUTING · SECURITY · CHANGELOG
Community & feedback
- Issues: bugs and feature requests
- Telegram: Teamgram group
Enterprise edition
The following are available in the enterprise edition (contact the author):
- sticker/theme/chat_theme/wallpaper/reactions/secretchat/2fa/sms/push(apns/web/fcm)/web/scheduled/autodelete/...
- channels/megagroups
- audio/video/group/conferenceCall
- bots
- miniapp
License
Give a Star! ⭐
If this project helps you, consider giving it a star.