开源即时通讯平台Tinode

什么是 Tinode ?

Tinode 是一个免费、无限制且灵活的开源消息传递平台,以移动端为主。采用纯 Go 后端(授权 GPL 3.0),客户端采用 JavaJavascriptSwiftgRPC 客户端支持C++C#GoJavaNodePHPPythonRubyObjective-C 等(授权Apache 2.0)。

安装

准备

  1. docker 文件夹中,创建一个新文件夹,并将其命名为 tinode,在 tinode 中建 3 个子目录,分别是 datauploadslogs

  2. 这一步是可选项,只有当你想启用外部设置的时候才需要下载 tinode.conf 文件,地址:https://raw.githubusercontent.com/tinode/chat/master/server/tinode.conf,将其放入到 tinode 目录,在修改前做好备份,修改时一定要记得用 UTF-8 编码格式,记得去掉注释

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

网络

Docker 管理器的 网络 中创建一个新的桥接网络

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

数据库

tinode 支持三种数据库:RethinkDBMySQLMongoDB,老苏选了 MySQL ,但这次没有用群晖自带的 MariaDB,而是用 Docker 新安装

Tinode 要求 MySQL 版本必须在 5.7 以上

名称

容器名称 改为 mysql,进入高级设置

如果不用 mysql 做容器名称,记得要修改 tinode 的环境变量 MYSQL_DSN

mysql

高级设置

勾选 启用自动重新启动

文件夹 装载路径 说明
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
2
3
Database adapter: mysql , version: 111
Failed to init DB adapter: dial tcp 127.0.0.1:3306: connect: connection refused
./init-db failed. Quitting.

需要修改正确,容器才能正常启动

1
2
Database adapter: mysql , version: 111
Database exists, DB version is correct. All done.

应用之后,如果不出意外的话容器应该也能正常运转

运行

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

设置服务器地址:

显示不全,端口是默认的 6060,而不是看到的 606

系统内置了一些测试账号

账号 密码
alice alice123
bob bob123
carol carol123
dave dave123
frank frank123

alice 登录网页

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

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

直接搜索 alice

发测试消息

对端收到的消息

Android客户端

适用于 AndroidTinode 又名 Tindroid,可以在这里下载 Released 的版本

https://github.com/tinode/tindroid/releases

iOS客户端

适用于 iOSTinode 又名 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/chat

chat/README.md at master · tinode/chat
地址:https://github.com/tinode/chat/blob/master/docker/README.md

Tinode 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