Tinode – 又一个即时聊天平台

Tinode 是与 mumble – 自托管语音/文字聊天室 和 部署私人通讯软件DuckChat 类似的可以自托管的即时通讯平台,在 Android、iOS 和 Web 端提供即时聊天服务

如果有开放注册的使用需求,需要搭建机器开启了 SMTP 端口并且有 SMTP 服务器,或者使用其他 SMTP 服务,确保能够正常发送邮件

提交注册信息后需要立即验证邮箱,如果不验证邮箱,账户则不会激活,但是注册信息在提交表单后就写入了数据库,如果再用相同信息注册会提示注册信息重复

以下搭建过程使用预编译文件,不需要 SMTP 服务,同时 Tinode 也无法开放注册

下文将展示如何在 Debian 10 下无域名搭建 Tinode 服务端

环境

  • Debian 10

参考

步骤

Tinode 提供三种数据库支持:RethinkDB、MySQL 和 MongoDB,这里选择 MySQL

以下指令均在 root 用户下执行,其他用户酌情添加 sudo

安装环境

MySQL

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

执行指令安装

wget https://dev.mysql.com/get/mysql-apt-config_0.8.18-1_all.deb
dpkg -i mysql-apt-config_0.8.18-1_all.deb
apt udpate
apt install mysql-server

安装时选择 MySQL 5.7 版本(而不是8.0),记录数据库密码

配置数据库并运行 Tinode

获取并解压预编译包

在 Tinode – Release 获取最新版本链接

mkdir tinode
cd tinode
wget https://github.com/tinode/chat/releases/download/v0.17.6/tinode-mysql.linux-amd64.tar.gz
tar zxvf tinode-mysql.linux-amd64.tar.gz

配置数据库密码

默认情况下 Tinode 以 root 用户和空密码(不使用密码)连接 MySQL,如果安装 MySQL 时配置了密码,则需要在配置文件中手动添加

编辑项目根目录下的 tinode.conf,进入 DataBase Configuration 部分下的 “store_config” – “adapters” – “mysql”,在 “User” 键值对下添加 “Passwd” 键值对

//...
"User": "root",
"Passwd": "[your mysql password]", // 添加此行
"Net": "tcp",
//...

数据库初始化

在项目根目录下执行

./init-db

这里没有选择导入 Tinode 自带的 data.json,如果选择导入 data.json,则可以跳过后续的 新建用户配置用户权限 步骤,直接使用已导入的账户登录

运行 Tinode

在项目根目录下执行

./tinode

Tinode 默认监听 6060 端口(可以在 tinode.conf 中更改端口),浏览器访问 IP:6060 即可开始使用

可以使用 Nginx 等 Web 服务器反代到 80 端口,这里不赘述

新建用户

如果机器没有 SMTP 服务器,或者机器 SMTP 服务端口没有开放,是无法成功注册 Tinode 的(可以在 tinode.conf 配置文件内填写 SMTP 服务器)

Tinode 本身也没有提供管理员账户,所有管理员操作(例如:增删改用户/消息)都需要使用 tn-cli 完成

tn-cli 是 Tinode 官方编写的 python 管理脚本,需要 python 2.7 和 3.4+,以及 PiP 9.0.1+

获取并解压 tn-cli

执行

cd tinode
wget https://github.com/tinode/chat/releases/download/v0.17.6/tn-cli.tar.gz
tar zxvf tn-cli.tar.gz

安装 python 依赖

在解压目录执行

pip3 install -r requirements.txt

添加新用户

执行

python3 tn-cli.py # 进入 tn-cli
# 以下指令在 tn-cli 中执行
acc --uname [your username] --password [your password] --fn [your friendly name] --cred enamil:[your email]

配置用户权限

使用以上指令新建的用户也需要邮箱验证,在没有 SMTP 的情况下可以直接操作数据库来跳过邮箱验证

此操作相当于将对应用户指定为 Tinode 的 root 用户

进入 MySQL

执行

mysql -u root -p
# 输入密码

更新数据库

在 MySQL 控制台执行

UPDATE auth SET authlvl=30 WHERE uname='basic:[username]';

可以对多个用户使用

效果

Tinode 登录界面

登录后界面

发送消息

接收消息

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据