开源即时通讯平台Tinode
什么是 Tinode ?
Tinode是一个免费、无限制且灵活的开源消息传递平台,以移动端为主。采用纯Go后端(授权 GPL 3.0),客户端采用Java、Javascript和Swift;gRPC客户端支持C++、C#、Go、Java、Node、PHP、Python、Ruby、Objective-C等(授权Apache 2.0)。
安装
准备
在
docker文件夹中,创建一个新文件夹,并将其命名为tinode,在tinode中建 3 个子目录,分别是data,uploads,logs这一步是可选项,只有当你想启用外部设置的时候才需要下载
tinode.conf文件,地址:https://raw.githubusercontent.com/tinode/chat/master/server/tinode.conf,将其放入到tinode目录,在修改前做好备份,修改时一定要记得用UTF-8编码格式,记得去掉注释

本质上 tinode.conf 文件是个 json 文件,你可以基于官方的 tinode.conf 修改出一个适合自己的,但是很容易搞出错误,所以没有把握的话建议先不启用外部配置
网络
在 Docker 管理器的 网络 中创建一个新的桥接网络

在没有容器连接的情况下,网络是灰的

数据库
tinode 支持三种数据库:RethinkDB、MySQL 和 MongoDB,老苏选了 MySQL ,但这次没有用群晖自带的 MariaDB,而是用 Docker 新安装
Tinode要求MySQL版本必须在 5.7 以上

名称
容器名称 改为 mysql,进入高级设置
如果不用
mysql做容器名称,记得要修改tinode的环境变量MYSQL_DSN

高级设置
勾选 启用自动重新启动

卷
| 文件夹 | 装载路径 | 说明 |
|---|---|---|
docker/tinode/date |
/var/lib/mysql |
持久化存放数据 |

网络
点 + 号,在下拉框中找到前面添加的网络 tinode-net

选中 bridge 之后点 - 号,只留下 tinode-net

环境
| 可变 | 值 |
|---|---|
MYSQL_ALLOW_EMPTY_PASSWORD |
设置为 yes |

端口设置、链接 采用默认,全部设置完后,应用 即可

如果容器运行正常,就可以进行下一步了
Tinode
在注册表中搜索 tinode ,选择第三个 tinode/tinode-mysql,版本选择 latest。
当然也可以下载第四个
tinode/tinode,这个版本同时包含了三种数据库适配器,需要通过STORE_USE_ADAPTER = mysql环境变量来指定数据库适配器。

卷
| 文件夹 | 装载路径 | 说明 |
|---|---|---|
docker/tinode/tinode.conf |
/opt/tinode/tinode.conf |
配置文件 |
docker/tinode/logs |
/var/log |
存放日志 |
docker/tinode/uploads |
/opt/tinode/uploads |
上传目录 |
- 其中第一项为文件,第二、三项为文件夹;

如果你不启用外部设置,可以只映射文件夹

网络
点 + 号,在下拉框中找到前面添加的网络 tinode-net

选中 bridge 之后点 - 号,只留下 tinode-net

端口
除了 6060 端口 ,其他端口直接用了默认的 自动
| 本地端口 | 容器端口 |
|---|---|
| 6060 | 6060 |

环境
| 可变 | 值 |
|---|---|
EXT_CONFIG |
按官方文档需设置为 /opt/tinode/tinode.conf |
如果前面启用了外部配置,这里就需要设置 EXT_CONFIG,否则不需要设置,保持默认即可

如果你的 tinode.conf 配置有问题,日志会一直显示错误,比如下面👇这样:
1 | Database adapter: mysql , version: 111 |
需要修改正确,容器才能正常启动
1 | Database adapter: mysql , version: 111 |
应用之后,如果不出意外的话容器应该也能正常运转

运行
在浏览器中输入 http://群晖IP:6060,就看到登录界面

设置服务器地址:
显示不全,端口是默认的
6060,而不是看到的606

系统内置了一些测试账号
| 账号 | 密码 |
|---|---|
alice |
alice123 |
bob |
bob123 |
carol |
carol123 |
dave |
dave123 |
frank |
frank123 |
用 alice 登录网页

虽然显示的聊天内容都是英文,其实界面是中文的

看之前的一些文档,要注册新用户需要设置 SMTP 服务器,实际上现在已经不需要

直接搜索 alice

发测试消息

对端收到的消息

Android客户端
适用于 Android 的 Tinode 又名 Tindroid,可以在这里下载 Released 的版本
https://github.com/tinode/tindroid/releases
iOS客户端
适用于 iOS 的 Tinode 又名 Tinodios, 应该可以在 App Store 中下载
小结
以上设置(包括数据库没有设置密码等等)都是非生产环境的设置,仅用于快速实现功能的体验
更多关于 docker 方式的安装和参数设置,还请查阅官方文档:https://github.com/tinode/chat/blob/master/docker/README.md
一些常见问题:https://github.com/tinode/chat/blob/master/docs/faq.md
PS:老苏设置过 SMTP 服务器,想用于新用户注册和密码找回,用 88 邮箱做了测试,但没有成功,日志中没有任何错误信息,但是也没有收到邮件,可以确认的是发送和接收邮箱都正常,也没有屏蔽,原因待查!
参考文档
Tinode instant messenger
地址:https://tinode.co/tinode/chat: Instant messaging platform. Backend in Go. Clients: Swift iOS, Java Android, JS webapp, scriptable command line; chatbots
地址:https://github.com/tinode/chatchat/README.md at master · tinode/chat
地址:https://github.com/tinode/chat/blob/master/docker/README.mdTinode chat server and Apache reverse proxy on NixOS
地址:https://jiaxiaodong.com/blog/computing/server/nix/5/tinode部署,使用_cumt_TTR的专栏-CSDN博客_tinode
地址:https://blog.csdn.net/cumt_TTR/article/details/104300501