什么是 Databag ?
Databag
是用于去中心化网络的微型轻量级自托管联合信使。显著的特征包括去中心化(应用程序和服务器节点之间的直接通信)和联合(不同节点上的帐户可以通信)。可实现企业内音视频服务,保护企业通信隐私。
软件特点:
- 去中心化(应用程序和服务器节点之间直接通信)
- 联合(不同节点上的账户可以通信)
- 基于公钥-私钥的身份(不绑定到任何区块链或托管域)
- 端到端加密(如果密封,托管管理员无法查看主题)
- 音视频通话(
NAT
穿越需要单独的中继服务器) - 基于主题的线程(按主题而不是联系人组织的消息)
- 轻量级(服务器可以在树莓派
zero v1.3
上运行) - 低延迟(使用
websocket
进行推送事件以避免轮询) - 每个节点无限个帐户(为您的整个家庭提供主机)
- 新联系人、消息和通话的移动提醒(支持
UnifiedPush
、FCM
、APN
)
也支持移动端
安装
在群晖上以 Docker 方式安装。
在注册表中搜索 databag
,选择第一个 balzack/databag
,版本选择 latest
。
本文写作时,
latest
版本对应为0.1.8
;
卷
在 docker
文件夹中,创建一个新文件夹 databag
,并在其中建一个子文件夹 data
文件夹 | 装载路径 | 说明 |
---|---|---|
docker/databag/data |
/var/lib/databag |
存放数据库和上传文件等 |
端口
本地端口不冲突就行,不确定的话可以用命令查一下
bash
# 查看端口占用
netstat -tunlp | grep 端口号
本地端口 | 容器端口 |
---|---|
8770 |
7000 |
环境
可变 | 值 |
---|---|
ADMIN |
管理员的密码 |
命令行安装
如果你熟悉命令行,可能用 docker cli
更快捷
bash
# 新建文件夹 databag 和 子目录
mkdir -p /volume1/docker/databag/data
# 进入 databag 目录
cd /volume1/docker/databag
# 运行容器
docker run -d \
--restart unless-stopped \
--name databag \
-p 8770:7000 \
-v $(pwd)/data:/var/lib/databag \
-e ADMIN=123456 \
balzack/databag:latest
也可以用 docker-compose
安装,将下面的内容保存为 docker-compose.yml
文件
yaml
version: '3'
services:
databag:
image: balzack/databag:latest
container_name: databag
restart: unless-stopped
ports:
- 8770:7000
volumes:
- ./data:/var/lib/databag
environment:
- ADMIN=123456
然后执行下面的命令
bash
# 新建文件夹 databag 和 子目录
mkdir -p /volume1/docker/databag/data
# 进入 databag 目录
cd /volume1/docker/databag
# 将 docker-compose.yml 放入当前目录
# 一键启动
docker-compose up -d
反向代理
老苏没有公网服务器做内网穿透,但这次需要和第三方的 WebRTC Server
互通,同时网页上使用音视频功能又需要 https
协议,所以本次采用的方案是 Cloudflared + npm
,一方面可以使用 https
协议,另一方面也能获取到可公开访问的地址,不了解的可以去看看老苏之前写的文章
代理主机设置
SSL
不需要设置
Advanced
需要填入下面的内容
nginx
server_name databag.laosu.cf;
add_header Strict-Transport-Security "max-age=0";
location / {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_pass http://192.168.0.197:8770;
client_max_body_size 0;
proxy_max_temp_file_size 0;
}
其中:
server_name
后面的databag.laosu.cf
就是我们设定的域名;proxy_pass
后面的http://192.168.0.197:8770
对应的就是我们局域网访问的地址;
运行
管理后台
在浏览器中输入 http://群晖IP:8770
或者用 https://域名
就能看到登录界面
点右上角的齿轮,切换到 Admin
用户,然后输入环境变量设置的密码
新建账号
登录成功后,点最右侧的小人图标创建新账号 Create Account Link
会弹出创建新账号的链接
如果用域名访问
复制上面的 Browser Link
,在浏览器的新窗口打开,来创建新的账号
登录成功后的用户界面
老苏建了 2
个账号用于测试
【注意】:一定要在
Account
中启用Visible in Registry
,否则别人加好友的时候是搜不到你的;
移动端
Android
客户端可以在 Google Play
或者 F-Droid
下载,iOS
则需要到 App Store
下载
注意选择正确的平台,一般
Android
手机应该是用的arm64-v8a
移动端也是可以注册账号的,但是老苏是先建好的,所以可以直接登录
【注意】:第一行要输入
用户名/服务器地址
登录成功后的主界面
接下来就可以开始聊天了
移动端的界面
音视频呼叫
Databag
支持音频和视频通话功能,但依赖于 STUN/TURN
中继服务器进行 NAT
穿越
如果想启用音频和视频通话,如果自己没搭建,但是又想体验的话,可以在管理端设置
Enable WebRTC calls
:启用;WebRTC Server URL
:设为turn:34.210.172.114:3478?transport=udp
;WebRTC Username
:设为user
;WebRTC Password
:设为pass
如果在移动端发起,打开联系人,点 Call Contact
进入呼叫界面
网页端上会弹出一行按钮
【注意】:网页端必须使用
https
协议
接听后会申请权限
接通后默认是不打开摄像头和麦克风的,需要自己开启
参考文档
balzack/databag: A tiny selfhosted federated messenger for the decentralized web.