https://github.com/balzack/databag Skip to content Toggle navigation Sign up * Product + Actions Automate any workflow + Packages Host and manage packages + Security Find and fix vulnerabilities + Codespaces Instant dev environments + Copilot Write better code with AI + Code review Manage code changes + Issues Plan and track work + Discussions Collaborate outside of code Explore + All features + Documentation + GitHub Skills + Blog * Solutions For + Enterprise + Teams + Startups + Education By Solution + CI/CD & Automation + DevOps + DevSecOps Resources + Customer Stories + White papers, Ebooks, Webinars + Partners * Open Source + GitHub Sponsors Fund open source developers + The ReadME Project GitHub community articles Repositories + Topics + Trending + Collections * Pricing Search or jump to... Search code, repositories, users, issues, pull requests... Search [ ] Clear Search syntax tips Provide feedback We read every piece of feedback, and take your input very seriously. [ ] [ ] Include my email address so I can be contacted Cancel Submit feedback Saved searches Use saved searches to filter your results more quickly Name [ ] Query [ ] To see all available qualifiers, see our documentation. Cancel Create saved search Sign in Sign up You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. {{ message }} balzack / databag Public * Notifications * Fork 21 * Star 317 A tiny self-hosted federated messenger for the decentralized web. License Apache-2.0 license 317 stars 21 forks Activity Star Notifications * Code * Issues 15 * Pull requests 0 * Discussions * Actions * Projects 0 * Security * Insights More * Code * Issues * Pull requests * Discussions * Actions * Projects * Security * Insights balzack/databag This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. main Switch branches/tags [ ] Branches Tags Could not load branches Nothing to show {{ refName }} default View all branches Could not load tags Nothing to show {{ refName }} default View all tags Name already in use A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch? Cancel Create 7 branches 9 tags Code * Local * Codespaces * Clone HTTPS GitHub CLI [https://github.com/b] Use Git or checkout with SVN using the web URL. [gh repo clone balzac] Work fast with our official CLI. Learn more about the CLI. * Open with GitHub Desktop * Download ZIP Sign In Required Please sign in to use Codespaces. Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Launching Xcode If nothing happens, download Xcode and try again. Launching Visual Studio Code Your codespace will open once ready. There was a problem preparing your codespace, please try again. Latest commit @rolandosborne rolandosborne fixing typo on hint ... 9731cc8 Jul 21, 2023 fixing typo on hint 9731cc8 Git stats * 1,559 commits Files Permalink Failed to load latest commit information. Type Name Latest commit message Commit time .design enabling contribute.design December 2, 2022 10:50 .github/workflows Update ci.yml January 27, 2023 21:19 app/mobile fixing typo on hint July 21, 2023 09:29 doc api cleanup for setting open access July 18, 2023 12:05 net avoid scaling gif for sealed topics July 20, 2023 11:54 .gitignore adding http utility functions January 17, 2022 13:27 LICENSE Initial commit December 20, 2021 13:45 README.md Update README.md July 9, 2023 11:29 View code Databag Installation Docker Compose Command Example with Portainer and Nginx Proxy Manager Other installation options Audio and Video Calls README.md contribute.design [icon] Databag Communication for the Decentralized Web [mobile] [browser] [Mobile and Browser App Screens] Databag is a self-hosted messaging service. Notable features include: * Decentralized (direct communication between app and server node) * Federated (accounts on different nodes can communicate) * Public-Private key based identity (not bound to any blockchain or hosting domain) * End-to-End encryption (the hosting admin cannot view sealed topics, default unsealed) * Audio and Video Calls (nat traversal requires separate relay server) * Topic based threads (messages organized by topic not contacts) * Lightweight (server can run on a raspberry pi zero v1.3) * Low latency (use of websockets for push events to avoid polling) * Unlimited accounts per node (host for your whole family) * Mobile alerts for new contacts, messages, and calls (supports UnifiedPush, FCM, APN) [fdroid] [astore] [gplay] The app is available on fdroid as well as the google and apple stores. You can test out the project here, but don't post anything important as this server is regularly wiped. Feedback on the UI/UX, bugs or features is greatly appreciated. Installation To use databag, you will need a DNS name pointing to your node with a certificate. You can deploy a node manually, but you will have a much easier time using a container service. Containers for arm64 and amd64 are available here. Docker Compose Command From the net/container sub directory: * sudo docker-compose -f compose.yaml -p databag up Example with Portainer and Nginx Proxy Manager From Portainer: * In the volume view, click add volume: + Enter a name, then click 'Create the volume' * In the container view, click add container: + In the 'Image' field enter 'balzack/databag:latest' + Click 'publish a new network port', and select port 7000 for both host and container + Under 'Advanced container settings', select 'Env', and click 'Add Environment Variable' o Enter 'Name' as 'ADMIN' and your admin password [password] + Under 'Advanced container settings', select 'Volumes', then 'map additional volume' o Enter '/var/lib/databag' for 'container' and the created volume for 'volume' + Click 'Deploy the Container' From Nginx Proxy Manager: * Add a host and specify: + Hostname [hostname.domain] + Portainer IP address [address] + Port '7000' + Request new SSL certificate From Nginx Proxy config: 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://localhost: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; } From Your Browser: * Enter your server address in the address bar [hostname.domain] + Click the cog icon in the top right + Enter your admin password: [password] + Click the cog icon in the dashboard o Enter Federated Host as [hostname.domain] o Click 'Save' + Click the user icon to generate a new account link o Follow the link to create an account Other installation options Instructions for installing without a container on a Raspberry Pi Zero are here. Instructions for installing without a container in AWS are here. Audio and Video Calls Databag provides audio and video calling and relies on a STUN/TURN relay server for NAT traversal. Testing was done with both coturn and pion and should work with any implementation. Instructions for installing a coturn server are provided here. If you want to enable audio and video calls, you should setup your own relay server. For testing purposes you can however use the demo relay server configuration. In the admin configuration modal, set: * Enable WebRTC Calls: -switch on- * WebRTC Server URL: turn:34.210.172.114:3478?transport=udp * WebRTC Username: user * WebRTC Password: pass About A tiny self-hosted federated messenger for the decentralized web. Topics android chat golang raspberry-pi ios react-native reactjs webrtc messaging decentralized selfhosted fdroid chat-application messenger-platform federated raspberry-pi-zero video-chat dweb messaging-app unifiedpush Resources Readme License Apache-2.0 license Activity Stars 317 stars Watchers 8 watching Forks 21 forks Report repository Releases 9 CheckLicense Latest Jul 19, 2023 + 8 releases Packages 0 No packages published Contributors 5 * @rolandosborne * @balzack * @samuraikid0 * @hughbris * @IMPranshu Languages * JavaScript 69.4% * Go 28.4% * Swift 0.8% * Java 0.5% * Shell 0.2% * Ruby 0.2% * Other 0.5% Footer (c) 2023 GitHub, Inc. Footer navigation * Terms * Privacy * Security * Status * Docs * Contact GitHub * Pricing * API * Training * Blog * About You can't perform that action at this time.