Databag: A Fast, Lightweight, and Self-Hosted Federated Messenger

Summary
Databag is a fast and lightweight self-hosted messenger designed for efficiency and privacy. It offers decentralized and federated communication with end-to-end encryption, supporting audio/video calls and running on minimal resources like a Raspberry Pi Zero. This project provides a robust solution for self-sovereign messaging.
Repository Info
Tags
Click on any tag to explore related repositories
Introduction
Databag is a fast, lightweight, and self-hosted messenger designed for private and efficient communication. It champions decentralization and federation, allowing accounts on different nodes to communicate seamlessly. With a strong focus on privacy, Databag implements public-private key based identity and end-to-end encryption, ensuring that even hosting administrators cannot view sealed topics.
Key features include audio and video calls, topic-based threads for organized conversations, and support for unlimited participants. Databag is remarkably lightweight, capable of running on minimal resources like a Raspberry Pi Zero v1.3, and uses websockets for low-latency push events. It also supports unlimited accounts per node, mobile alerts, and multi-factor authentication.
You can find Databag available on F-Droid, the Apple App Store, and the Google Play Store. A demo server is available for testing, though it is regularly wiped, so avoid posting important information: Try Databag Here.
Installation
To deploy Databag, you'll need a DNS name pointing to your node with a valid SSL certificate. While manual deployment is possible, using container services is highly recommended for ease of setup. Docker containers for arm64 and amd64 architectures are available on Docker Hub.
Docker Compose
YouYou can launch Databag using Docker Compose.
Standard Launch:
# From the net/container sub directory:
docker-compose -f compose.yaml -p databag up
Launch with Certbot HTTPS Certificate:
# 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
Example with Portainer and Nginx Proxy Manager
For a guided setup with Portainer and Nginx Proxy Manager, follow these steps:
-
Portainer:
- Create a new volume.
- Add a new container using
balzack/databag:latest. - Publish port 7000 (host and container).
- Set environment variable
ADMINwith your desired admin password. - Map
/var/lib/databagto your created volume. - Deploy the container.
-
Nginx Proxy Manager:
- Add a new host.
- Specify your hostname, Portainer IP address, and port '7000'.
- Request a new SSL certificate.
-
Browser Configuration:
- Access your server via its hostname.
- Enter your admin password, set the Federated Host, and save.
- Generate a new account link to create your first account.
Other Installation Options
Databag offers flexible deployment options beyond containers:
- Install without a container on a Raspberry Pi Zero.
- Install without a container in AWS.
- Integrate Databag into an OpenWrt firmware.
- 1-click installs are available for platforms like CapRover, CasaOS, Unraid, Runtipi, Kubero, and Umbrel.
For audio and video calls, Databag relies on a STUN/TURN relay server for NAT traversal. You can set up your own (e.g., coturn) or use a service like Cloudflare TURN.
Examples
You can easily test Databag without setting up your own server by using the official demo instance. Please note that this server is regularly wiped, so it's not suitable for important communications.
- Try Databag Live: https://databag.coredb.org/#/create
Additionally, the detailed installation guides for Docker Compose, Portainer, Raspberry Pi Zero, and other platforms serve as practical examples for deploying your own Databag node.
Why Use Databag?
Databag stands out as an excellent choice for secure and private communication due to several compelling reasons:
- Uncompromised Privacy and Security: With end-to-end encryption and public-private key based identity, your communications remain private and are not tied to any central authority or hosting domain.
- True Decentralization and Federation: Databag allows direct communication between app and server nodes, and enables accounts on different nodes to communicate, fostering a truly distributed network.
- Exceptional Efficiency: Designed to be lightweight, Databag consumes minimal hosting resources, making it ideal for running on low-power devices like a Raspberry Pi Zero.
- Full Control Over Your Data: By self-hosting, you retain complete ownership and control over your messenger data, free from third-party interference.
- Rich Communication Features: Beyond basic messaging, Databag supports audio and video calls, topic-based threads, and multi-factor authentication, providing a comprehensive communication platform.
Links
- GitHub Repository: https://github.com/balzack/databag
- Official Website / Demo: https://databag.coredb.org/#/create
- F-Droid: https://f-droid.org/en/packages/com.databag/
- Apple App Store: https://apps.apple.com/us/app/databag/id6443741428
- Google Play Store: https://play.google.com/store/apps/details?id=com.databag
- Design Guidelines: https://github.com/balzack/databag/blob/main/.design/DESIGN.md
- Figma File: https://www.figma.com/design/eVFi8bYlybn5KeyEePEaey/Databag---Github?node-id=1-6&t=Is2AiTfwktFO5aY0-1