Skip to content
项目

iamxvbaba/gramsrv has 144 GitHub stars and 70 forks. GitHot measured 0 stars in 24 hours and +4 in 7 days. Last checked 2026-11-10 01:11 UTC. Last push 2026-11-01.

这些数字如何统计

Open-source Telegram server implementation / MTProto server in Go for Telegram Desktop, Android, Web, bots, calls, media, and self-hosted chat experiments.

实测星标增长

24小时
0
7天
+4
15天
更新延迟
1个月
更新延迟

各周期内的星标净变化,周期相互重叠,并非每日新增。缺失的测量保持空白。星标代表关注度,不代表软件质量。

README.zh-CN.md

原文

gramsrv

掌控服务器,使用 MTProto,连接真正的 Telegram 客户端。

gramsrv 是一个用 Go 编写的开源 Telegram 兼容服务器和 MTProto 后端, 面向自主部署网络、协议研究,以及需要真实客户端兼容能力的社区聊天系统—— 它不只是一个相似的聊天界面。

English README · 官网 · OwpenGram 客户端 · 讨论群 · 频道

telesrv-flutter:我们自己的客户端

从服务端,到我们自己的客户端。

我们正在用 Flutter 重新实现客户端。会话列表、聊天界面、消息与媒体、群资料面板, 已经落到实际运行的产品中。

telesrv-flutter Windows 实际运行界面:文件夹导航、会话列表、聊天区域和群资料面板

Windows 实际运行界面。telesrv-flutter 暂未开放下载。

  • **自己的会话组织:**文件夹导航、归档、未读标记与会话搜索。
  • **自己的聊天体验:**消息气泡、引用回复、置顶消息与媒体展示。
  • **自己的桌面工作区:**会话、消息与群资料并排呈现,大屏布局、主题与窗口体验可以持续演进。

Flutter 构建产品界面与交互,自有 TDLib fork 承接协议与本地状态,telesrv 提供服务端能力。 我们有能力从头构建客户端,也有能力与服务端一起演进,围绕业务场景定制整套 IM 产品。

查看客户端介绍 · 咨询客户端与 IM 定制

Telegram Desktop 与 Android 兼容客户端截图

Telegram Desktop 正在连接 gramsrv Android 客户端正在连接 gramsrv

Docker 一键体验

main 和 v2 现在都提供同一个一行启动入口: main 启动单体服务器和 Admin,v2 启动拆分后的 Edge/Core/Egress/File/SFU 拓扑。先安装 Git 和 Docker Desktop,把 Docker Desktop 切换到 Linux containers 并启动,然后在 PowerShell 5.1 或更高版本中执行:

git clone --branch main --single-branch https://github.com/iamxvbaba/gramsrv.git
Set-Location gramsrv
.\scripts\start-docker.ps1

本机首次体验只需要这些命令。脚本会自动生成部署环境,无需登录即可从 GHCR 拉取当前 分支的现成镜像,按照依赖顺序启动全部服务并等待就绪。用户不需要安装 Go、PostgreSQL 或 Redis,也不需要本地构建镜像或执行 docker login。需要微服务部署时,把上面命令 中的 main 改为 v2。

  • 开发环境登录验证码固定为 12345。
  • 零参数启动默认只监听 127.0.0.1,供同一台电脑上的客户端体验。
  • 两个分支都提供客户端使用的匹配公开测试公钥。
  • 账号、数据库、媒体、Redis 状态和 RSA 身份保存在 Docker named volumes 中,重建容器 或正常执行 Compose 停止后仍会保留。
  • 不带 -Build 会直接使用发布镜像;-Build 仅用于验证本地源码修改。重启本地构建的 镜像时加 -NoPull(start-docker.sh 为 --no-pull),避免被发布镜像覆盖。

如果 Windows 提示禁止运行 PowerShell 脚本,只为当前 PowerShell 窗口临时放行后重试:

Set-ExecutionPolicy -Scope Process Bypass
.\scripts\start-docker.ps1

局域网临时体验时,把示例地址替换为 Windows 宿主机的局域网地址:

.\scripts\start-docker.ps1 `
  -AdvertiseIP 192.168.1.20 `
  -PublicBaseURL http://192.168.1.20:2401 `
  -PublicWebBaseURL http://192.168.1.20:2401 `
  -AllowInsecureDevelopmentAuth

局域网明文 HTTP 地址下,服务会记录一条警告并关闭 Star 礼物提现链接(提现 URL 是 bearer 链接,loopback 之外只允许 HTTPS),其余功能照常可用;需要提现时改用 HTTPS 的 public base URL。

官方 Telegram 客户端需要修改服务器 endpoint 和 RSA key 才能连接;请从 项目官网获取兼容客户端。main 默认让包含 SFU/TURN 的单体服务 使用宿主网络;宿主不支持时传入 -BridgeNetwork。拆分拓扑、端口与防火墙、备份、升级 和远程访问说明见 v2 Docker 部署手册。

为什么选择 gramsrv

大多数 Telegram clone 复刻的是界面;gramsrv 实现的是服务器协议,让兼容 客户端能够通过你掌控的基础设施进行通信。

  • 完整的 MTProto transport、认证、加密 session、RPC 调度、updates 和多端同步。
  • 覆盖聊天、频道、媒体、reactions、gifts、bots、通话和管理功能的实用能力集。
  • 从协议接入、业务服务到存储和实时媒体,服务器代码全部开放。
  • 面向兼容性研究、实验和长期社区协作的 Go 代码库。

协议栈基于已发布的 github.com/iamxvbaba/td module, 并持续跟进 Telegram Desktop 的真实 wire 行为。

选择适合的架构

分支 架构 适用场景
main 单体 单进程运行,适合开发、体验和较小规模的部署。
v2 微服务 独立服务边界,面向扩展性、可靠性和生产化运行。

v2 架构一览

%%{init: {"theme":"neutral","flowchart":{"curve":"basis","nodeSpacing":32,"rankSpacing":48}}}%%
flowchart LR
  Clients["Telegram 客户端<br/>Desktop · Android · iOS · Web"]
  Edge["Edge<br/>MTProto · sessions"]
  Core["Core<br/>业务 RPC"]
  Egress["Egress<br/>可靠投递"]
  FileData["FileData<br/>媒体字节"]
  SFU["SFU<br/>实时媒体"]
  Postgres[("PostgreSQL<br/>业务状态 · outbox")]
  Redis[("Redis<br/>位置 · 推送 · 控制")]
  Blob[("Blob 存储")]

  Clients <-->|MTProto| Edge
  Edge -->|"CoreExec gRPC<br/>TL bytes"| Core
  Core -->|"业务状态 + 持久事件"| Postgres
  Egress -->|"领取 · 投影 · ACK"| Postgres
  Egress -->|"有界投递"| Redis
  Redis -->|"推送 / 控制"| Edge
  Edge -->|"客户端 ACK gRPC"| Egress
  Core -->|协调| Redis
  Edge -->|FileData gRPC| FileData
  Core -->|FileData gRPC| FileData
  FileData --> Blob
  Core -->|SFU 控制| SFU
  SFU -->|"注册 / 所有权"| Redis
  Clients <-->|"语音 · 视频"| SFU

长连接留在 Edge,业务执行留在 Core,可靠更新则通过 Egress 持久化投递。

当前能力

  • 账号、联系人、用户资料、隐私、在线状态和多会话。
  • 私聊、群组、超级群、频道、话题、邀请链接和公开链接。
  • Durable updates、dialogs、已读状态、草稿、reactions、离线恢复和多端同步。
  • 照片、文档、stickers、GIF、语音消息、网页预览、上传和下载。
  • Gifts、Stars、Premium、bots、mini apps、翻译和 AI 输入辅助。
  • 私聊通话信令、群通话、RTMP 直播和独立 SFU 媒体面。

Telegram Desktop 是第一兼容目标,Android、iOS 和 Web 路径也在持续覆盖。 部分高级功能仍以兼容性验证或实验为主,但对应实现都开放在本仓库中。与官方 Telegram 有意不同的行为列在 docs/telegram-differences.md(英文)。

客户端

官方 Telegram 客户端信任 Telegram 生产环境的 DC 列表和 RSA keys,因此不能 直接连接私有服务器。你可以使用项目官网提供的兼容客户端, 也可以自行构建只修改 endpoint 和 key 的客户端。

OwpenGram 是一个支持多服务器的 Telegram 风格客户端, 内置 gramsrv 支持,可以在官方网络、私有部署和社区节点之间切换。它只需 host:port 即可添加服务器:MTProto 端口提供 /owpengram/server-info,包含公开 RSA 公钥、DC 以及 在管理面板设置的 Server identity。

一起建设

欢迎提交兼容性报告、聚焦的修复、测试和性能优化。最有价值的问题报告应包含 客户端版本、可复现步骤,以及受影响的 RPC 或功能路径。

贡献者:ajarshia — Android Persian (fa) 语言包。

授权与独立性

gramsrv 使用 Apache License 2.0 发布。本项目是独立的非官方项目, 与 Telegram 官方及其团队没有关联,也未获得其背书或赞助。

探索相关项目