欢迎来到威聚,大家如果有需要哪个项目编译好的软件但无法自己下载可以进入项目推荐页面告诉我,我上传到网盘供大家下载使用!
威扬盘搜

Stoat(原 Revolt)

网络工具 JavaScript AGPL-3.0 JavaScript 人工编写 推荐 ★4 中等

更新于 2026-09-19 20:37:08

先更正一件事:Revolt 已改名 Stoat

网上大量教程还在写「Revolt」,但那个名字已经不用了:

  • 项目现名 Stoat,官网 https://stoat.chat,短链 stt.gg
  • 代码仓库整体搬到 github.com/stoatchat 组织;老的 revoltchat/* 仓库保留但不推进(老的 desktop 客户端最后提交在 2024-10,语音服务 vortex 停在 2024-03)
  • 2025-10-05 起,Docker Compose 项目名从 revolt 改成 stoat——这是破坏性变更,老实例升级必须按 README 的 Notices 操作

所以你要部署的是这一套:stoatchat/self-hosted(部署编排)+ stoatchat/stoatchat(Rust 后端,3.3k★)+ stoatchat/for-web(Web 客户端)。

它是什么

「开源版 Discord」这个定位是准确的:服务器 → 频道(文字/语音)→ 身份组(Roles)→ 频道级权限覆盖 的模型和 Discord 几乎一一对应,界面照搬,用户几乎零迁移成本。后端是 Rust + MongoDB + Redis(KeyDB),Web 客户端 AGPL-3.0。

语音部分值得单独说:Stoat 的 RTC 直接跑在 LiveKit 上(README 明确要求开放 7881/tcp 与 50000-50100/udp,并说明这些端口由 LiveKit 使用、Caddy 无法代理)。也就是说延迟和音质取决于 LiveKit 这套 SFU,而不是自研的 mesh——这是它比"浏览器开房"类方案更耐用的地方。

部署:确实是一个 docker compose

官方推荐配置不高:2 vCPU + 2GB 内存起步(他们自己的自建测试环境就是 KVM 2 档)。

# 1. 防火墙(语音端口别忘)
ufw allow 80,443/tcp
ufw allow 7881/tcp
ufw allow 50000:50100/udp

# 2. 拉部署仓库 + 生成配置
git clone https://github.com/stoatchat/self-hosted stoat && cd stoat
chmod +x ./generate_config.sh
./generate_config.sh your.domain      # 生成 secrets.env

# 3. 起服务
docker compose up -d

编排里包含:backend、Web 前端、文件服务器(原 Autumn,现已迁移到 silo)、元数据/图片代理(January)、MongoDB、KeyDB/Redis、RabbitMQ、pushd(推送守护)。配置项支持邮箱验证、Captcha、自定义 S3、iOS/Android 推送(需要 Apple/Google 开发者账号)。

🔴 最容易致命的一步:generate_config.sh 生成的 secrets.env 一定要备份。官方原话是——密钥被覆盖,你会失去对实例上所有文件的访问权(文件是用这些密钥加密存的)。

必须知道的坑

  1. 大部分官方客户端不支持自建实例。README 明说:目前 Web 客户端体验良好,装成 PWA 后接近原生;但桌面/移动官方客户端基本连不上你自己的实例。想要"全平台原生体验"的预期要下调。
  2. 破坏性变更非常频繁,升级前必须读 Notices:
    • 2024-09-29:Autumn 大重构,需手动跑 Node 迁移脚本
    • 2024-11-28:配置项改名 + 新增 RabbitMQ/pushd
    • 2025-10-05:compose 项目名 revolt → stoat
    • 2026-02-28:密钥迁移进 secrets.env
    • 2026-09-17:minio → silo,媒体目录需备份后自动迁移
  3. 无联邦。官方 FAQ 明确:目前没有任何 federation,也不在路线图上(未来可能自研协议/polyproto/XMPP,明确说 Matrix「不太可能,晦涩且不稳定」)。它是"单实例社区",不是 Matrix 那种互联网络。
  4. 品牌使用受限。代码是 AGPLv3 可以随便改,但品牌不是:不得使用 Stoat 品牌/素材宣传你的第三方实例,修改后对外提供服务必须公开源码(AGPLv3 的常规要求)。想做成商业产品要提前和项目方沟通。
  5. 视频推流有已知 bug:用户推的视频分辨率超过 Revolt.toml 里的上限时,会被直接踢出(官方承认是实现不完整)。可以调 [features.limits.*].video_resolution 放宽。
  6. 踩过安全公告:backend、for-web 都发过安全通告,自建务必跟住最新 tag(撰写时 remediated 版本是 backend 0.15.0 / for-web 0.14.1)。
  7. 老架构债务:配置文件名至今还叫 Revolt.toml,环境变量前缀也保留 revolt——说明这是"改名牌"而不是"重写",历史包袱会跟着你。

管理体验(对应「管理方便」这一点)

这部分它确实是同类里最像 Discord 的:

  • 身份组(Roles):一个组打包一组权限,频道里再单独覆盖——和 Discord 的心智模型完全一致
  • 频道级权限:谁能进哪个语音频道、谁被禁言、谁能管消息,全在图形界面点选
  • 服务器设置面板:管理员点几下就能配好,不用改配置文件
  • 对比 Mumble:Mumble 的 ACL 是树形权限位编辑,要理解 inherit/inject 才能用;Stoat 是"勾选框 + 角色继承",运维门槛低一个数量级

二开与集成建议

  1. 反代方案:generate_config.sh 里选择走其他反代,Caddy 会暴露在 8880;但语音的 7881/tcp 和 50000-50100/udp 必须直通,别指望反代解决。
  2. 内网/小规模首选:想要一个"自己家的 Discord"给 20~100 人用,这是最省心的组合;规模再大就该考虑 Matrix + LiveKit 或 LiveKit 自研前端。
  3. 文件存储换成 S3:默认 minio/silo 吃本地盘,媒体多的话尽早切对象存储。
  4. 升级当成发布日:每次 git pull 前先看 Notices,按顺序执行迁移;把 MongoDB 和媒体目录纳入每日备份。
  5. 推送要用起来:手机端的可用性几乎全看 pushd + Apple/Google 凭证,没有推送的实例用户会抱怨"收不到消息"。

一句话总结

Stoat 就是「开源版 Discord」目前最像的那一个:Rust 后端、Docker Compose 一条命令起全家桶、角色与频道权限完全图形化,语音还直接架在 LiveKit 上所以你不用担心音质和延迟;代价是没有联邦、官方客户端连不上自建实例、破坏性变更频繁、品牌有使用限制——它适合"我要一个自己的 Discord",不适合"我要一个开放互联的 IM 网络"。

按更新时间依次阅读