
Harmony 推出类 Discord 聊天平台,支持联邦式跨服务器互通
来源标题:Harmony: Chat like Discord. Federated like email
Harmony 上线了一个功能类似 Discord 的聊天平台,提供服务器、语音、线程和机器人,但任何人都能自建服务器,且各服务器通过 fediverse 彼此互通。该平台可在 har.mony.lol 免费使用,也能用一条命令自行部署。它还支持跨实例发送邀请、从 Mastodon 转发内容,以及空间音频。
以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
像 Discord 那样聊天,像 email 那样互联
服务器、语音、线程和机器人,Discord 有的它都有。区别在于:任何人都能自己搭一台服务器,而且所有服务器之间都能互通,跨越整个 fediverse。 在 har.mony.lol 免费使用 · 或者用一条命令自建
fcar+ frontier collective ⌄
文本
general
playtest
└ patch notes 12
art-drop
语音 war-room
mmira tTheo yyou@har.mony.lol
#playtest v0.9 版本,反馈请发这里
mmira 21:04 新地图已推到测试服,来看看
从我自己搭的实例加入的,谁能把 #playtest 的邀请发一下?
发了。跨实例也能用,这就是重点
把我 mastodon 上的更新日志转过来了,有人在问
← 拖动标题栏。试试那个绿色地球
服务器内有文本频道和语音频道,支持线程、回复、表情回应、投票、带代码高亮的 markdown、GIF、贴纸、语音消息和私信。用起来就是你熟悉的那套。
↱ mira 1.7.9 发布了。接下来修什么?
- 缩放:125% 时保存按钮掉出屏幕
- 缩放:125% 时保存按钮不动了 🎉 4 🐻 2
kkei@harbor.city 21:15 投了。另外新地图里有个隐藏房间
聆听 居中
m 152px mira t 233px theo k 162px kei@harbor.city 你
空间音频,拖动即可。离得越近越响。
3 语音
直接进语音频道,不用给任何人打电话,一直挂着玩游戏。打开空间音频,每个人在地板上都有一个位置:离你近的人声音大,房间另一头的人声音小,两拨对话可以同时进行。
Harmony 使用 ActivityPub——Mastodon、Misskey 和 Pixelfed 背后的协议。你的资料和帖子能到达这些平台,上面的人也能关注你,不同 Harmony 实例的服务器之间共享成员,不需要任何人再注册一个账号。
har.mony.lol harbor.city mastodon.social misskey.io pixelfed.social chat.mycrew.net
地址
Discord 桥接会把频道、线程、回复和表情回应双向同步,这样社区可以试用 Harmony 而不必一分为二。等所有人都搬过来之后再关掉,或者永远不关。
$ curl -fsSL https://raw.githubusercontent.com/y4my4my4m/harmony/master/self-host/install.sh | bash ✓ docker,swap,端口 80/443 ? 域名 › chat.mycrew.net ✓ DNS 已指向这里 ✓ 证书 ✓ 数据库,迁移 ? 管理员邮箱 › me@mycrew.net ✓ Harmony 已在 https://chat.mycrew.net 上线 $ harmony doctor [ OK ] compose [ OK ] database [ OK ] webfinger [ OK ] memory [ OK ] migrations [ OK ] bot-gateway [WARN] 还没有备份 → harmony backup
复制
6 自建
安装脚本会检查你的机器,问几个问题,配置证书并创建管理员账号。重复运行也是安全的。之后用 harmony 命令保持它健康运行。
每个实例都可以运行一个机器人网关,提供 REST API,在合适的地方沿用 Discord 的接口形态,所以 Discord 机器人的逻辑只要换掉连接代码就能搬过来。Webhook 直接接受 Discord 的请求体,桥接 API 也对其他网络开放。
1const token = process.env.BOT_TOKEN
2const api = 'https://har.mony.lol/bot-gateway/api/v1'
3const ws = new WebSocket('wss://har.mony.lol/bot-gateway/gateway')
4const send = (op, d) => ws.send(JSON.stringify({ op, d }))
5let seq = null
6
7ws.onopen = () => send(2, { token })
8ws.onmessage = ({ data }) => {
9 const { t, d, s } = JSON.parse(data)
10 seq = s ?? seq
11 if (t === 'READY') setInterval(() => send(1, seq), d.heartbeat_interval)
12 if (t === 'MESSAGE_CREATE' && d.content === '!ping')
13 fetch(${api}/channels/${d.channel_id}/messages, {
14 method: 'POST',
15 headers: { Authorization: Bot ${token}, 'Content-Type': 'application/json' },
16 body: JSON.stringify({ content: 'Pong!', reply_to: d.id }),
17 })
18}
PROMISES.md ~/harmony
8 承诺
没有人靠出卖你的注意力赚钱,也没有人要求不惜一切代价增长。旗舰实例靠捐赠运行。
导出你的数据,把账号迁移到另一台服务器或你自己的机器,你的关注者也会跟着你过去。
AGPL-3.0 意味着任何人都能运行、fork 并把它延续下去。没有任何东西被扣押在某家公司的服务器上。
服务器可以开启端到端加密,这样连运行服务器的人都读不了消息。
[隐私和加密如何工作] [阅读代码]
Harmony 是一个独立项目。没有公司,没有风投,没有增长团队。只是一群想要一个更好的地方待着的人,把它建在所有人都能看见、能提 bug、能发补丁的地方。
官方服务器是大家提问、分享作品、告诉我们哪里坏了的地方。带上你的朋友,或者带上你的整个社区。
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。