Unofficial open source mtproto server written in golang with compatible telegram client.
go get github.com/teamgram/teamgram-serverTeamgram Server
中文 | English
Unofficial open-source MTProto server implementation in Go. Compatible with Telegram clients; supports self-hosted deployment.
Features
- MTProto 2.0
- Abridged
- Intermediate
- Padded intermediate
- Full
- API Layer: 227
- Core features
- private chat
- basic group
- contacts
- web
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
Requires Go 1.21+. You must install and configure dependencies (MySQL, Redis, etcd, Kafka, MinIO, FFmpeg), initialize the database and MinIO, then build and run.
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
See specs/roadmap.md for community vs. enterprise scope.
License
Give a Star! ⭐
If this project helps you, consider giving it a star.