ITADN
balzack/databag
balzack/databag · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

contribute.design

Databag

一个用于自托管的联邦消息传递工具

-> 设计概览 <-


  

Mobile and Browser App Screens


Databag 专为高效设计,消耗极少的托管资源。主要特性包括:

  • 去中心化(应用与服务器节点之间直接通信)
  • 联邦化(不同节点上的账户可以相互通信)
  • 基于公钥-私钥的身份(不绑定任何区块链或托管域名)
  • 端到端加密(如果已密封,托管管理员无法查看主题)
  • 音频和视频通话(NAT 穿透需要单独的中继服务器)
  • 基于主题的线程(消息按主题而非联系人组织)
  • 无限制参与者(群组线程成员数量无限制)
  • 轻量级(服务器可运行在 raspberry pi zero v1.3 上)
  • 低延迟(使用 websockets 进行推送事件以避免轮询)
  • 每节点无限制账户(可为您的整个家庭托管)
  • 新联系人、消息和通话的移动提醒(支持 UnifiedPush、FCM、APN)
  • 多因素身份验证(与 TOTP 应用集成)

该应用也可在 fdroid 以及 google 和 apple 商店上获取。你可以在 这里 测试该项目,但请勿发布任何重要内容,因为该服务器会定期清除。

设计

阅读 设计指南。链接至 Figma 文件。您可以随意复制 Figma 文件进行编辑。非常欢迎对 UI/UX、bug 或功能提出反馈。

安装

要使用 databag,您需要一个指向您节点并带有证书的 DNS 名称。您可以手动部署节点,但使用容器服务会轻松得多。arm64 和 amd64 的容器可在 这里 获取。

Docker Compose

使用 docker compose 通过 dockerhub 容器启动:

标准启动

# From the net/container sub directory:
docker-compose -f compose.yaml -p databag up

使用 certbot https 证书启动

# FIRST: create a DNS entry in your DNS to point your desired subdomain to your host
# SECOND: edit the net/container/docker-compose-swag.yml to include your domain name
# THIRD: From the root of the project directory:
mkdir -p ~/appdata
docker-compose -f net/container/docker-compose-swag.yml -p databag up

使用 Portainer 和 Nginx Proxy Manager 的示例

从 Portainer:

  • 在卷视图中,点击添加卷:
    • 输入名称,然后点击“创建卷”
  • 在容器视图中,点击添加容器:
    • 在“镜像”字段中输入“balzack/databag:latest”
    • 点击“发布新的网络端口”,并为宿主和容器都选择端口 7000
    • 在“高级容器设置”下,选择“环境变量”,然后点击“添加环境变量”
      • 将“名称”输入为“ADMIN”,并将您的管理员密码 [password]
    • 在“高级容器设置”下,选择“卷”,然后选择“映射附加卷”
      • 为“容器”输入“/var/lib/databag”,为“卷”输入已创建的卷
    • 点击“部署容器”

From Nginx Proxy Manager:

  • 添加一个主机并指定:
    • 主机名 [hostname.domain]
    • Portainer IP 地址 [address]
    • 端口 '7000'
    • 请求新的 SSL 证书
Nginx Proxy 配置 ➡️ 点击展开 ⬅️
server {
server_name your.site.tld;

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://127.0.0.1:7000;
  client_max_body_size 0;
  proxy_max_temp_file_size 0;

}

  listen 443 ssl http2;
  ssl_certificate /etc/letsencrypt/live/your.site.tld/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/your.site.tld/privkey.pem;
  include /etc/letsencrypt/options-ssl-nginx.conf;
  ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
  add_header Strict-Transport-Security "max-age=0";

}

server {
  if ($host = your.site.tld) {
      return 301 https://$host$request_uri;
  }
listen 80;
server_name your.site.tld;
  return 404;
}

从您的浏览器:

  • 在地址栏中输入您的服务器地址 [hostname.domain]
    • 点击右上角的齿轮图标
    • 输入您的管理员密码:[password]
    • 点击仪表板中的齿轮图标
      • 将 Federated Host 设置为 [hostname.domain]
      • 点击“保存”
    • 点击用户图标以生成新的账户链接
      • 按照链接创建账户

使用 nginx-proxy 的示例

如果您使用 nginx-proxy 进行自动证书续期, 请参阅 /examples/docker-nginx-proxy/ 目录中提供的示例。

其他安装选项

在 Raspberry Pi Zero 上无容器安装,请参见 此处

在 AWS 上无容器安装,请参见 此处

在 OpenWrt 固件中集成 Databag,请参见 此处

一键安装支持 CapRoverCasaOSUnraidRuntipiKuberoUmbrel

音频和视频通话

Databag 提供音频和视频通话功能,并依赖 STUN/TURN 中继服务器进行 NAT 穿透。测试已在 coturncloudflare 上进行,并且应该适用于任何实现。安装 coturn 服务器的说明请参见 此处

如果您想启用音频和视频通话,您应该设置自己的中继服务器或使用 cloudflare turn 服务。出于测试目的,您可以使用演示中继服务器配置。在管理配置模态框中,设置:

  • 启用 WebRTC 通话:-开启-
  • WebRTC 服务器 URL:turn:34.210.172.114:3478?transport=udp
  • WebRTC 用户名:user
  • WebRTC 密码:pass

路线图

请添加任何缺失的功能;此处 是当前待办事项列表。功能将根据社区的兴趣进行优先级排序。