1
dangyuluo 2021-12-22 05:12:19 +08:00
下一步就是怎么让亲朋好友注册账号了
|
2
YamatoRyou OP @dangyuluo
服务有 2 个主要目的: 解决我没有微信之后 IM 需求. 实行计划分配制, 不开放注册. 总使用人数最多也就 5 个左右. 就算开放注册, 没有我的指导他们也是寸步难行. 除了消息同步, 还能作为多个设备的云剪贴板. |
3
loading 2021-12-22 08:35:30 +08:00
有点谍战片的感觉了,自建 im 一般是是企业级应用,亲朋好友可能要友尽。
|
4
matolv 2021-12-22 09:53:54 +08:00 via iPhone
synapse 建在墙内没法启用 federation ,matrix 被 gfw 屏蔽了,会导致 ios 和 play store 的 element 都收不到消息。
这东西我用了好几年了,现在版本比起当初了 0.x 已经算是可以用了,之前吃内存那是一个快,bug 又多,界面又不人性化。 不建议 docker 安装,python3 虚拟环境是他最佳用法,然后 nginx 反代。另外视频 /语音通话需要 turn server ,原理是 webrtc 。 如果你服务器端玩了比较生疏建议用 tg ,大陆 ios 是搜不到 element 的 |
5
YamatoRyou OP @matolv
我不打算联邦式, 虽说这是它的特色. Docker 对我来说也许是最佳选择, 直接绕过群晖的 webui 给系统加料可能会把系统给搞死, 尤其是我不熟悉的情况下. 我在 2018 到今年年初换用 Delta Chat 之前用的是 TG, 它哪都好, 唯二的致命伤就是中文搜索和代理. 因为我长期独居, 代理一旦挂掉了就相当于失联, 我总不能动不动就跑回去给他们换代理吧. iOS 的话, 我在试用 Android 版 Element 的一瞬间就已经预感到它在 iOS 上推送也是个大问题. 鉴于周围亲属什么的用 iPhone 的非常少, 我还是暂时不考虑了吧. |
6
YamatoRyou OP @loading 因为我早在几年前就强行弃用了微信, 友尽这种结果早就经历过, 不在乎再来一次.
|
7
qeqv 2021-12-22 12:10:17 +08:00
@YamatoRyou OP 是肉翻了吗,国内现在不用微信哪里都去不了,健康码强制让你用微信。另外怎么和父母沟通
|
8
YamatoRyou OP @sevefev
并没有, 而且我对 "健康码" 的需求极小 (属于能不用尽量不用). 如果在外要用, 通常是纸质健康码. 因为还没交接完成, 当下与家里人沟通用的仍然是 Delta Chat. |
9
zololiu 2021-12-23 14:05:16 +08:00
比较好奇为什么不直接使用群晖自带的 Chat 套件呢
|
10
YamatoRyou OP @zololiu
因为我用的是黑群晖, 即使是 Android 也无法接收推送, 我不能接受. 我要和家里人用, 但它的界面专注办公场合, 易用性不足. 不能发语音消息. 我已经放弃它大概两年多了吧, 不知道现在有没有改善. 我猜不会. |
11
YamatoRyou OP @zololiu 关于没有推送, 可以想象一下这个问题在微信上会是什么结果:
对方想要急切地联系你, 给你发无论文字或语音, 此时微信在后台, 手机却毫无动静. 过了许久, 你打开微信, 这才知道对方早就已经连续发了好长一串, 而对方却心如死灰... 同样地也适用于来电. 我曾经遇到过一台山寨手机, 对方给它打电话有接通的声音, 但这台手机毫无反应 (无论是听觉; 触觉还是视觉层面). 那么机主自然不会知道他有电话要接. |
12
des 2021-12-29 17:58:10 +08:00
我打算试试 Rocket.Chat
推送可以转发到网关,然后推到 bark 上,然后 url 跳转 Android 可能你得自己想办法了,应该也有对应的 App 不过需要写少量的代码 |
13
des 2021-12-30 14:15:28 +08:00
@YamatoRyou 发现了另外一个好用的,叫 mattermost 。
支持推送,不过是推到他们的测试环境,然后走 APN/GCM |
14
YamatoRyou OP @des
我最近收了一个 旧 iPhone 专门测试 Element. Bark 也是我一开始考虑的选择, 但我发现它无法和 Synapse 联动 (比如监控如何触发一个推送通知, 以及这个通知是一般消息还是呼叫?). 由于我一直没解决这个问题, 遂放弃 Bark. 后来我才知道只要用的是官方发布的 Element 就不用担心推送渠道问题. 只是 matrix.org 已经被墙, 可以用代理让容器连接到 matrix.org. 自建的 Synapse 在 iOS 上的推送流向是这样的: Synapse 服务器 -> matrix.org -> APNS -> iOS 设备 也就是说服务器管理员只需解决自建的 Synapse 与 matrix.org 的连接问题即可, 更关键的是: 它免费且不限量. |
15
des 2022-02-26 09:47:24 +08:00
@YamatoRyou 应该是有 webhook 之类的东西可以用的,可以参考一下这个是怎么配置的 https://github.com/matrix-org/sygnal
或者直接在这个上面改,把 bark 的 apns key 复制过来,按照 bark 的数据格式,参考一下 bark 的代码。 |
16
des 2022-02-26 09:52:08 +08:00
@YamatoRyou 写几行代码转换一下就好了,不用挂代理。原文是用的 Gotify ,换成 bark 应该也挺容易的
https://blog.southfox.me/2021/11/%E4%B8%BAMatrix%E5%8A%A0%E5%85%A5%E6%8E%A8%E9%80%81%E5%8A%9F%E8%83%BD/ |
17
MAIJIANBANG 2022-05-23 16:58:42 +08:00
@YamatoRyou 一直搞不定提醒问题,能否加一下你的 Element 请教一下提醒的问题?
|
18
MAIJIANBANG 2022-05-23 17:02:09 +08:00
@YamatoRyou 我的 element: @maijianbang:THE ,盼回复
|
19
YamatoRyou OP @MAIJIANBANG 你的客户端收不到推送?
Android 版本请从 F-Droid 下载, 如果应用常驻后台则可以接收推送. 设置 -> 通知的最下面有 "通知故障排除" 用于诊断推送的工作状态. iOS 无需任何设置. 但对于墙内的自建服务器, 应确保服务器能访问 matrix.org. |
20
MAIJIANBANG 2022-05-24 16:50:32 +08:00
@YamatoRyou 从 F-Droid 下载之后确实可以提醒了,谢谢。我是群晖搭建的,有什么办法让服务器能访问 matrix.org ?
|
21
YamatoRyou OP @MAIJIANBANG
既然是群晖, 那我猜你的 Synapse 实例是 Docker 容器的形式. 但悲催的是 Docker 容器似乎只支持 HTTP/HTTPS 协议的代理. 这种可以为容器添加环境变量 `HTTPS_PROXY`, 值填写 `http://ip:端口`. 为了以防万一可以再添加一个变量 `HTTP_PROXY`, 值同上. 我的方案是再起一个 Privoxy 容器, 专供 Synapse, 把上游 Socks5 代理转换为 HTTP 代理. Privoxy 配置文件参考: ` listen-address 0.0.0.0:8081 forward / . forward-socks5 ifconfig.me ip:端口 . forward-socks5 matrix.org ip:端口 . ` 代理搭建完成后测试代理是否生效: 从 Synapse 容器启动终端, 输入命令: ` curl https://ifconfig.me curl https://matrix.org/_matrix/push/v1/notify ` 第 1 个命令用于判断 Privoxy 的代理规则, 正确应返回代理服务器的 IP 地址. 第 2 个命令如果返回 `405 - Method Not Allowed` 则成功, 这个要重复几次. 如果手头有 iOS 设备和外区苹果 ID 建议用它测试 Element, 因为这是确保 iOS 版本能收到推送的唯一方式. |
22
YamatoRyou OP @YamatoRyou 我本来是写了文案打算做成视频教程, 但我的口条水平似乎不允许. 再加上文案还在完善, 就先搁置了.
|
23
MAIJIANBANG 2022-05-25 10:33:17 +08:00
@YamatoRyou 稳定的 https 代理不好找啊,有推荐的吗?我和家里人主要用 IOS ,另外我想利用 webhook 走 bark 通知,但是我打开 webhook 界面,提示“此集成管理器为离线状态或者其不能访问你的主服务器。”,这个怎么解决?
|
24
YamatoRyou OP @MAIJIANBANG
无法解决, 因为我解决通知问题不靠这个. Bark 或 Gotify 这类并不是最佳选择, 语音视频呼叫及端到端加密消息靠这个转发可能会出现障碍. 我认为你还不如选择 V 或 S 之类的节点放在 Docker 上. 至少能让苹果直接给你推送. 这是我目前正在用的方案, 虽然节点有时仍然需要更换, 但有些节点能撑半个多月. 不行了就再换一个. 这番体验下来我认为 Android 才是最适合 Element 的平台. |
25
YamatoRyou OP |
26
YamatoRyou OP |
27
MAIJIANBANG 2022-05-26 11:22:41 +08:00
@YamatoRyou 羡慕啊,我再研究研究,主要是我是技术小白,搭建啥的都是跟网上教程走才会,头疼,期待大佬早日出遍详细点的教程!!!
|
28
YamatoRyou OP @MAIJIANBANG
在这个问题上我犯了个错误, Element 来电画面取决于设备的 IP 地址. 有以下可能: a) 手机所处的网络环境有透明代理的梯子, 或手机正在挂梯子改变了 IP 地址, 导致苹果的推送服务认为该手机来自国外. 这种情况下来电能显示全屏画面; b) 国内 IP 则只能显示通知, 需要手动进入 Element 才能接听. 可能是 CallKit 受政策限制导致的, 我试过更改 iOS 的地区和语言, 亲测无效. |
29
wgsgyes 2022-06-19 00:27:47 +08:00
delta chat 要用好,关键是要挑选合适的邮件服务器。
国内的 163 、QQ 用的 iamp 协议,似乎做了修改,delta chat 无法完美支持。 国外的邮件服务器,有通达及时性缺陷( hotmail 勉强可以)。 自建邮件服务器的话,估计很难解决垃圾邮件的问题。 完美的解决方案是:使用境内世纪互联的 office365 邮箱。 |
30
YamatoRyou OP @wgsgyes
对于自建的邮件服务器, 我当时的策略是这样的: 由于专为 Delta Chat 服务, 所以 SMTP / IMAP 端口都是故意设置了非标准端口 (另一个原因是为了规避政策风险). 这会导致常见的邮件服务无法发送邮件到此服务器, 该服务器也无法发送邮件到这些邮件服务. 也就杜绝了垃圾邮件. 从去年年 2 月到 12 月底服务器存续期间从未收到过任何垃圾邮件 (测试时使用的是 QQ 邮箱和 Outlook). |
31
wgsgyes 2022-06-19 09:43:11 +08:00
@YamatoRyou 垃圾邮件不是问题,收信策略严格就行。
自建的邮件服务器,不管是 VPS 还是在自己家搭建,若发信量较大,哪天服务商把端口封了,工作就白费了。 还不如全家统一公用的邮件服务器,比如 outlook ,Delta Chat 已经对所有信息加密了 |
32
wgsgyes 2022-06-19 09:50:30 +08:00
@YamatoRyou 抱歉,前面可能没表达清楚:自建邮件服务器,在发信量较大时,vps 或你的网络服务商,可能会误判你发垃圾邮件,造成服务不可用
|
33
YamatoRyou OP @wgsgyes 看你这么说有点后怕, 不过还好我早就停了.
|
34
kernelt4sk 2022-06-28 17:46:05 +08:00
大佬有相关教程了吗。 一直尝试在群晖中搭建 一直未果 基本情况与大佬相同 稳定的就黑群一台 Linux 。
|
35
YamatoRyou OP @kernelt4sk
已有一份比较完善的纯文字版 (无配图), 有做成视频的想法. 如果你急用可以先发给你参考. https://1drv.ms/t/s!AqJDCzhI3LndjmU7ZgBweNIhJiWN?e=GpO41G 内容还在修改中, 不视为最终成品. |
36
YamatoRyou OP @YamatoRyou
在线预览如果乱码请下载到本地并更换编辑器再查看. |
37
kernelt4sk 2022-06-29 09:39:07 +08:00
@YamatoRyou 感谢大佬 成功跑起来了,还有些小问题 就是安卓无法解密消息 很奇怪。音视频巨卡甚至无法链接 估计 coturn 的问题。 再调试下
|
38
YamatoRyou OP @kernelt4sk
这个问题通常发生在第 2 个及以上登录的设备, 可能是该设备没有交叉验证. 验证未通过的设备不会同步密钥到该设备导致消息无法在该设备上解密. coTURN 有公网 IPv4 时效果比较好, 我猜你配置的 coTURN 根本没有生效. 可以观察 coturn 容器的日志. SSH 执行命令: docker logs -t -f --tail 100 [容器名称] 用你的设备开始呼叫, 观察日志的变化. |
39
kernelt4sk 2022-06-29 17:11:50 +08:00
@YamatoRyou 确实 看了相关日志 coturn 没生效, 虽然端口开放了 应该是配置文件哪里有问题。 顺便再尝试下整合 id server
|
40
Achophiark 2022-07-01 10:45:15 +08:00
一直想搞一下加密聊天,看了这篇文章又不知道该怎么选择了。
|
41
AllenHua 2022-10-30 21:01:49 +08:00
请问楼主,安卓或 iOS Element 客户端注册时需要翻墙才能注册怎么解?朋友不会……
部署了一个 conduit ,虽然是自己服务器没有没樯,但是让朋友家人注册时普遍反馈是软件进不去,一直加载中,经过我后续的实验发现是 matrix.org 被墙,而他们又不会翻墙…… 按理说只需要注册那会需要访问一下 matrix.org 交换一些信息,之后就只需要使用自己部署的服务器服务了。 |
42
YamatoRyou OP @AllenHua
构造一个链接并转换为二维码: ```https://mobile.element.io/?hs_url=https://example.com:[port]``` ```hs_url=```后面跟上你的服务器地址及端口. 实现通过事先跳转的方式略过了 matrix.org. 用户端: Android 用户使用微信或支付宝的二维码扫描功能扫描上述链接 (但微信 / 支付宝扫描完成后需要手动从浏览器打开以拉起 Element, 还不如让这些用户额外安装第三方扫描应用); iOS 用户使用系统自带的二维码扫描功能扫描上述链接. 相关: https://github.com/vector-im/element-android/issues/5097 就目前的 FTUE 还并不理想, 至少目前的 1.5.4 (Android) 也并没有做到更方便地连接到自定义服务器. 建议提 issue. |
43
AllenHua 2022-10-31 11:08:21 +08:00
@YamatoRyou #42 测试了 iOS 可以,感谢。但是 android 不行,app 是从 F-Droid 下载的,这个不支持 android 吗
|
44
AllenHua 2022-10-31 12:53:38 +08:00
|
45
YamatoRyou OP @AllenHua 还是建议第三方扫描程序. element.io 可能会被拉黑导致阻止跳转.
|
46
AllenHua 2022-10-31 23:31:30 +08:00 via iPhone
@YamatoRyou #45 很奇怪,我用了第三方的扫描程序没能跳转,才登录上微信小号通过微信扫了然后成功跳转的。也许是我的扫描 app 问题吧。不用微信扫是正确的。
|
47
YamatoRyou OP @AllenHua
我推荐几个能凑合用的: 1. https://play.google.com/store/apps/details?id=com.camvision.qrcode.barcode.reader a) 启动较快; b) 有广告但不占版面, 可接受; c) 没有 GMS 的机器可以安装 (apk), 但尝试进入设置会让 app 崩溃; d) 界面只有英文. 2. https://play.google.com/store/apps/details?id=com.srowen.bs.android a) 无广告; b) Android 版本 6.0 以上的机器均可安装 (apk), 但已停更数年, 对比例夸张的屏幕存在适配问题; c) 有时识别比较慢. 以上都是我用过的, 说实话我都不满意, 但我也懒得再尝试别的了. |
48
yangyang2022 2022-11-08 07:12:43 +08:00 via Android
楼主,可以写一下如何使用 docker matrix-commander 发送消息吗?比如发送“pve 服务器重启”到某个房间。
谢谢。 |
49
YamatoRyou OP @yangyang2022
Shell 命令: docker run --rm -v /volume1/docker/matrix-commander-new:/data:z matrixcommander/matrix-commander -m '这里填要发送的内容' 关键参数说明: -v: 必需参数. 将包含 credentials.json 的文件夹映射到容器内的 /data 路径下. credentials.json 的内容: {"homeserver": "http://<Synapse 容器地址及端口>", "device_id": "<设备 ID>", "user_id": "<要发送消息的账号完整 ID>", "room_id": "<承载消息的目标房间完整 ID>", "access_token": "要发送消息的账号的 token"} 如果你不想初始化, 可以直接从已经登录的客户端中照抄一份到上面的 JSON. 宿主机路径请酌情修改. -m: 要发送的消息如果有换行不需要 "\n" 之类的转义, 直接在命令中使用回车键换行. 不推荐用 matrix-commander, 理由: 需要额外配置; 花在启动容器的时间就远远慢于直接用 curl; 除非要发送的内容不止纯文本. ---------- curl 版本 Shell 命令: curl -H "Content-Type: application/json" -H "Authorization: Bearer <这里填账号的 token>" -s -X POST -d '{"msgtype": "m.text", "body": "这里填消息内容"}' "http://<Synapse 容器地址及端口>/_matrix/client/r0/rooms/<要发送消息的目标房间 ID>/send/m.room.message" 以上命令只适合纯文本内容. 要发送的消息如果有换行, 需要使用 "\u000a" 作为换行符. ---------- 以上命令涉及到的容器 IP 地址使用的是内网 IP + 端口, 请酌情修改. |
50
yangyang2022 2022-11-08 09:59:52 +08:00 via Android
@YamatoRyou 好的 实在感谢!
|
51
yy306525121 2023-01-16 09:34:30 +08:00
哈哈,我的 chat 就我和我媳妇两个人用, 这样聊天记录不会丢失, 现在平均每个月存档一次
|
52
troilus 2023-02-27 21:55:06 +08:00
@YamatoRyou 大佬,我使用的 docker ,环境变量启用了 httpsproxy ,iOS 也能正常收到推送,但是没法触发 Callkit ,这是什么原因呢? iOS 设备地区都改过,请问找到解决办法了吗?
|
53
YamatoRyou OP @troilus
在 iOS 上触发 CallKit 需要同时满足以下条件 (测试环境为 iOS 15.6.1, iPhone 7 Plus): 系统区域需要设置为 "美国" (其它国家也可以试试); 手机所在的网络环境需要能翻墙 (或手机上正在使用能翻墙的 VPN). 网络环境很重要, 目的是骗过苹果的 APNS, 使其以为你在国外. 另外关于 iOS 推送, Synapse 容器如果不设置代理, 会导致 iOS 推送延后或丢失. 因为 Element for iOS 使用 matrix.org 作为推送网关, 但 matrix.org 已经被墙, 你即便当下能收到推送也只会时好时坏. |
54
troilus 2023-02-28 08:39:44 +08:00
@YamatoRyou 试了下确实得翻墙收通知才能触发 CallKit
|
55
troilus 2023-03-01 16:52:43 +08:00
@YamatoRyou 试了下 nextcloud ,可以比较完美实现 callkit
|
56
viWww0vvxmolvY5p 2023-03-07 16:24:17 +08:00
@YamatoRyou 请问您使用的是什么代理?我在 nas 安装了没法和其他域名下的用户联系,也没法加入公共房间。
|
57
yangyang2022 2023-03-08 23:36:12 +08:00 via Android
好像新版 element 支持 ntfy 推送了。xmpp 终于可以下课了。
|
58
Gary666666 2023-04-15 22:45:35 +08:00
视频语音呼叫时,被呼叫方看不到呼叫方的画面,一团黑,但能看到自己,视频中的语音正常,呼叫方视频语音一切正常,不知为啥
|
59
YamatoRyou OP @yangyang2022 #57 ntfy 甚至还能让自己的实例作为推送网关, 不用担心未来因为上级服务 (unifiedpush.org) 被墙导致 Android 客户端收不到推送.
|
60
asuraa 275 天前
@YamatoRyou 老哥请问一下你的 coturn 是怎么部署得?
|
61
YamatoRyou OP @asuraa #60 可以参考基于 Docker 的教程, 因为我的实例也基于 Docker.
https://hub.docker.com/r/coturn/coturn 首先要确保整个网络环境具有公网 IPv4, 双栈公网 (公网 IPv4 + 公网 IP v6) 最佳. 如果在 Docker 中运行 coturn, 网络模式不建议使用桥接 (bridge), 因为对于 coturn 这种需要计划映射大量端口的容器, 桥接模式会导致容器启动非常慢, 可选模式为 host. 暴露到公网的操作期间 IP 地址与端口相关: 端口: 对外开放端口 3478 (TCP / UDP) / 5349 (TCP / UDP) / 49152 ~ 65535 (UDP); IPv4: 如果 coturn 实例所处的机器 (或 coturn 的容器) 没有获取到公网 IP 地址, 那么需要上游的路由器或类似设备转发外部的流量到实例所处的机器 (或 coturn 的容器) 的上述端口; IPv6: 确保该机器 (或 coturn 的容器) 能获取到公网 IP 地址 (类似 240* 开头的那种), 确保该机器的防火墙放行上述端口的入站流量. 可以额外为 coturn 实例的 IP 地址分配一个域名方便在各种场合调用. -------- 自用配置文件参考 (配置文件位于 /etc/turnserver.conf): ``` # 冗余的日志输出 verbose # 启用认证 use-auth-secret # 值为认证时使用的密钥 static-auth-secret= # 数据库路径 userdb=/var/db/turndb # 值为你给 coturn 实例分配的域名 (它可以不和你的域名完全一致, 但至少必须有) realm= # 证书公钥 (证书最好是带完整证书链 (fullchain) 的) cert=/etc/cert.pem # 证书私钥 pkey=/etc/pkey.pem # 忽略所有 STUN 入站流量 no-stun no-rfc5780 no-stun-backward-compatibility response-origin-only-with-rfc5780 # 限定 TLS 版本 (以下几行会导致仅启用 TLS 1.3) no-sslv2 no-sslv3 no-tlsv1 no-tlsv1_1 no-tlsv1_2 ``` |
62
h3ll0w0r1d 225 天前
@YamatoRyou ,除了语音与视频功能无法建立通信,其他功能都 OK ,一直调试语音通信,就是不好使,求救!!!
|