支持音视频的消息服务Databag

什么是 Databag ?

Databag 是用于去中心化网络的微型轻量级自托管联合信使。显著的特征包括去中心化(应用程序和服务器节点之间的直接通信)和联合(不同节点上的帐户可以通信)。可实现企业内音视频服务,保护企业通信隐私。

软件特点:

  • 去中心化(应用程序和服务器节点之间直接通信)
  • 联合(不同节点上的账户可以通信)
  • 基于公钥-私钥的身份(不绑定到任何区块链或托管域)
  • 端到端加密(如果密封,托管管理员无法查看主题)
  • 音视频通话(NAT 穿越需要单独的中继服务器)
  • 基于主题的线程(按主题而不是联系人组织的消息)
  • 轻量级(服务器可以在树莓派 zero v1.3 上运行)
  • 低延迟(使用 websocket 进行推送事件以避免轮询)
  • 每个节点无限个帐户(为您的整个家庭提供主机)
  • 新联系人、消息和通话的移动提醒(支持 UnifiedPushFCMAPN

也支持移动端

安装

在群晖上以 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 协议,另一方面也能获取到可公开访问的地址,不了解的可以去看看老苏之前写的文章

文章传送门:免费的Cloudflared实现外网访问群晖(续)

代理主机设置

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.

地址:https://github.com/balzack/databag

相关推荐
阿尔帕兹1 小时前
构建 HTTP 服务端与 Docker 镜像:从开发到测试
网络协议·http·docker
ZHOU西口2 小时前
微服务实战系列之玩转Docker(十八)
分布式·docker·云原生·架构·数据安全·etcd·rbac
川石课堂软件测试8 小时前
性能测试|docker容器下搭建JMeter+Grafana+Influxdb监控可视化平台
运维·javascript·深度学习·jmeter·docker·容器·grafana
追风林15 小时前
mac 本地docker-mysql主从复制部署
mysql·macos·docker
城南vision17 小时前
Docker学习—Docker核心概念总结
java·学习·docker
wclass-zhengge17 小时前
Docker篇(Docker Compose)
运维·docker·容器
梦魇梦狸º21 小时前
腾讯轻量云服务器docker拉取不到镜像的问题:拉取超时
docker·容器·github
鬼才血脉21 小时前
docker+mysql配置
mysql·adb·docker
詹姆斯爱研究Java21 小时前
Docker 的基本概念和优势
docker
南猿北者1 天前
docker镜像仓库常用命令
运维·docker·容器