Installer Databag avec Docker
Databag

Installer Databag avec Docker

Table des matières

C'est lors d'une conversation sur Discord à propos de Awesome-TTRSS qu'Elise a parlé de Databag. Qui veut dire quelque chose comme "sac de données".

J'en avais oublié son existence malgré l'avoir vu plusieurs fois apparaître sur un site ou l'autre. Et ça sera un bon complément au futur tutoriel d'Awesome-TTRSS!


Databag est conçu pour être efficace, consommant un minimum de ressources d'hébergement.

⚡Caractéristiques

  • Décentralisé (communication directe entre l'application et le nœud du serveur)
  • Fédéré (les comptes sur différents nœuds peuvent communiquer)
  • Identité basée sur une clé publique-privée (non liée à une blockchain ou à un domaine d'hébergement)
  • Chiffré de bout en bout (l'administrateur de l'hébergement ne peut pas afficher les sujets s'ils sont scellés)
  • Appels audio et vidéo (la traversée nat nécessite un serveur relais séparé)
  • Fils de discussion thématiques (messages organisés par sujet et non par contacts)
  • Participants illimités (aucune limite sur les membres du fil de discussion du groupe)
  • Léger (le serveur peut fonctionner sur un Raspberry Pi Zero v1.3)
  • Faible latence (utilisation de websockets pour les événements push afin d'éviter les interrogations)
  • Comptes illimités par nœud (hôte pour toute votre famille)
  • Alertes mobiles pour les nouveaux contacts, messages et appels (prend en charge UnifiedPush, FCM, APN)

L'installation

  1. Créez votre docker-compose.yml:
sudo nano docker-compose.yml
  1. Collez ça dedans en prenant soin d'adapter le port et les volumes suivant votre configuration:
services:
 databag:
   container_name: databag
   image: balzack/databag:latest
   ports:
     - "7000:7000"
   volumes:
     - ./databag-data:/var/lib/databag
   environment:
    ADMIN: test

Veillez à changer:

  • ADMIN: test => remplacez test par un mot de passe fort.
  1. On installe l'application:
docker-compose up -d

ou avec docker-compose V2:

docker compose up -d
  1. Rendez-vous sur votre domaine qui est relié à votre instance Databag:
https://votredomaine.com

Fichier Nginx en fin de tutoriel pour ceux qui en ont besoin.


Se connecter en administrateur

Cliquez en haut à droite sur la roue crantée:

Entrez le mot de passe administrateur que vous avez choisi précédemment et cliquez sur Connecter:

Vous arrivez dans la partie administration de votre serveur:


Configurer les paramètre du serveur

Toujours dans la partie administration, cliquez sur la roue cranée:

Dans la fenêtre des Paramètres:

  • Hôte Fédéré => indiquez votre domaine, sans https.
  • Limite de Espace (Go) / Compte => indiquez combien de Go par compte vous octroyez.
  • Type de Clé => RSA 4096. Qui peut plus grand, peut plus petit.
  • Création de Compte Public => Cochez cette option si vous voulez autoriser la création de comptes publics.
  • Activer les Notifications Push => C'est quand même mieux non?
  • Autoriser les Sujets non Sécurisés => Si vous voulez autoriser les Sujets non Sécurisés. Donc, non chiffrés.

Quand vous êtes satisfait de votre configuration cliquez sur Enregistrer.


Création d'un compte

De base vous n'avez que le compte admin. Vous devrez créer votre propre compte et si vous n'avez pas activé la création de compte sur votre instance, il faudra également créer un compte pour inviter ceux que vous désirez.

Toujours dans la partie administration, cliquez sur l'icône + avec le petit bonhomme:

Vous aurez un Lien du Navigateur ainsi que son Code Mobile, autrement dit, son mot de passe. Cliquez sur OK pour terminer.

Rendez-vous sur Lien du Navigateur:

Choisissez un pseudo et dans les deux champs pour le mot de passe, collez celui fourni précédemment, le Code Mobile. Cliquez sur Créer pour terminer. Vous serez redirigé sur le dashboard:

Cliquez sur la flèche ⬇️ et sélectionnez Paramètres:

En bas à droite, cliquez sur Changer Identifiants:

Vous pouvez modifier votre mot de passe et/ou votre nom d'utilisateur:

Si vous voulez pouvoir être "vu" par les autres utilisateurs il faut cocher Visible dans le Registre:

On va maintenant éditer son profil en cliquant sur Mettre à jour son profil:

Cliquez sur le crayon pour éditer votre Nom:

Remplissez à votre guise et terminez en cliquant sur Enregistrer:

Pour éditer la photo de profil, cliquez sur le crayon:

Pour choisir votre image, cliquez sur Sélectionner:

Cliquez sur Enregistrer:

Voilà un profil déjà plus sympa:


Se connecter à un utilisateur déjà créé

Cliquez en haut à droite sur la ⬇️, sur Contacts:

En haut à droite, cliquez sur Ajouter:

Vous pourrez voir tous les contacts présents, vu que je le fais en local, je n'ai vu que l'autre compte que j'ai créé. Cela suffit pour l'exemple:

Quand vous cliquez sur un contact, vous avez deux options. Enregistrer le Contact;

Enregistrer et Demander la Connexion:

Dans notre cas on va Enregistrer et Demander la Connexion. Vous pouvez constater que dans le bas, la demande est bien envoyée:

Pour l'autre utilisateur, il reçoit une alerte et il lui suffira de cliquer sur Connecter:


Créer un sujet sécurisé

Si dans l'administration du serveur vous n'avez pas autorisé la création de Sujets non Sécurisés, cliquez sur Sujets Sécurisés:

Cochez Activer les Sujets Sécurisés, définissez un mot de passe et terminez en cliquant sur Enregistrer:

Vous pouvez maintenant créer un sujet en cliquant sur Nouveau Sujet:

Si vous voulez définir un sujet (optionnel mais conseillé) remplissez le champ et si vous avez des membres sur votre instances, vous pouvez les ajouter. Terminez en cliquant sur Commencer:

Vous pouvez commencer à envoyer vos messages, photos, fichiers audios et vidéos:


Disponibilité

Sur votre navigateur préféré mais aussi sur:

Android

F-Droid

Databag | F-Droid - Free and Open Source Android App Repository
A federated chat client designed for privacy and selfhosting.

Google Play

Databag - Apps on Google Play
Messenger for the Decentralized Web

iOS

‎Databag
‎Databag is a selfhosted 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 encryptio…

Fichier config NGINX

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;
}

BONUS: Appel vocal et/ou vidéo

Vous avez la possibilité de passer un appel vocal et/ou vidéo mais avant il faudra installer un serveur COTURN.

💡
COTURN est une implémentation open source gratuite de TURN et STUN Server. Le serveur TURN est un serveur et une passerelle de traversée NAT de trafic multimédia VoIP.

Il faudra ouvrir le port 3478 en TCP & UDP et les rediriger vers l'IP de votre serveur si vous voulez héberger le serveur COTURN.

Perso j'ai préféré la solution du VPS bon marché parce que ma connexion ne tiendrait pas le coup si je dois assurer des conversations vidéos de plusieurs personnes. Si vous choisissez un VPS passez directement à l'installation et la configuration sans Docker. Inutile d'installer Docker juste pour un serveur COTURN.

Vous pourriez de toute façon l'utiliser pour d'autres choses nécessitant COTURN. Comme par exemple utiliser Talk de Nextcloud.

⚠️ Dalabag fourni un serveur COTURN mais ce n'est pas l'idéal question vie privée de passer par un serveur qui ne vous appartient pas. Mais cela peut s'avérer utile pour tester la fonction appel facilement. Je l'ai fait et ça fonctionne super bien!

  • URL du Serveur WebRTC: turn:34.210.172.114:3478?transport=udp
  • Nom d'Utililsateur WebRTC: user
  • Mot de Passe WebRTC: pass

Avec Docker

  1. Placez-vous à la racine d'où vous installez vos applications et collez cette commande pour cloner le dépôt:
sudo git clone https://github.com/gorgin-dev/coturn.git
  1. Rendez-vous dans le dossier COTURN:
cd coturn
  1. Supprimer le fichier turnserver.conf
sudo rm turnserver.conf
  1. On va en créer un nouveau:
sudo nano turnserver.conf
  1. Collez ça dedans:
listening-port=3478
listening-ip=192.168.1.152
min-port=49152
max-port=65535
user=goldo:rak #changez_moi
#user=username2:password2
syslog

# CLI access password. Default is empty (no password).
# For the security reasons, it is recommended that you use the encrypted
# form of the password (see the -P command in the turnadmin utility).
#
# Secure form for password 'qwerty':
#
cli-password=1d13c95dd84a8abbaf32f57443cc7ad05fb9faf59b3e6f7622f16e1de1cc7b93 # Générer un hachage SHA256

  • listening-ip= indiquez l'IP externe.
  • user=goldo:rak => il va falloir définir un nom d'utilisateur et un mot de passe pour la connexion à COTURN. Remplacez goldo par un nom d'utilisateur et remplacez rak par un password fort.
  • cli-password=1d13c95dd84a8abbaf32f57443cc7ad05fb9faf59b3e6f7622f16e1de1cc7b93 => Générez une clé avec 16 caractères ici et collez-là après cli-password=.
  1. On va déployer le container:
docker compose up -d
  1. Retournez dans la partie d'administration et activez les Appels WebRTC et remplissez les informations demandées:
  • URL du Serveur WebRTC: => doit-être sous cette forme: turn:TURN_IP:TURN_PORT, autrement dit: turn:votre_ip_publique:3478
  • Nom d'Utilisateur WebRTC => celui qu vous avez choisi dans tunrserver.conf.
  • Mot de Passe WebRTC => celui qu vous avez choisi dans tunrserver.conf.

Sans Docker

  1. Mise à jour du dépôt:
sudo apt get update -y
  1. Installer COTURN:
sudo apt-get install coturn
  1. Faire en sorte que Coturn démarre automatiquement au démarrage du serveur:
sudo nano /etc/default/coturn
  1. Décommentez (retirez #) la ligne suivant de façon à celle que cela ressemble à l'exemple ci-dessous, sauvez le fichier une fois terminé.
TURNSERVER_ENABLED=1
  1. Démarrez le service:
sudo systemctl start coturn
  1. Créez le fichier turnserver.conf:
sudo nano /etc/turnserver.conf
  1. Collez ça dedans:
listening-port=3478
listening-ip=192.168.1.152
min-port=49152
max-port=65535
user=goldo:rak #changez_moi
#user=username2:password2
syslog

# CLI access password. Default is empty (no password).
# For the security reasons, it is recommended that you use the encrypted
# form of the password (see the -P command in the turnadmin utility).
#
# Secure form for password 'qwerty':
#
cli-password=1d13c95dd84a8abbaf32f57443cc7ad05fb9faf59b3e6f7622f16e1de1cc7b93 # Générer un hachage SHA256
  • listening-ip= indiquez l'IP externe.
  • user=goldo:rak => il va falloir définir un nom d'utilisateur et un mot de passe pour la connexion à COTURN. Remplacez goldo par un nom d'utilisateur et remplacez rak par un password fort.
  • cli-password=1d13c95dd84a8abbaf32f57443cc7ad05fb9faf59b3e6f7622f16e1de1cc7b93 => Générez une clé avec 16 caractères ici et collez-là après cli-password=.
  1. Terminez en redémarrant le service coturn:
sudo service coturn restart
  1. Retournez dans la partie d'administration et activez les Appels WebRTC et remplissez les informations demandées:
upload in progress, 0
  • URL du Serveur WebRTC: => doit-être sous cette forme: turn:TURN_IP:TURN_PORT, autrement dit: turn:votre_ip_publique:3478
  • Nom d'Utilisateur WebRTC => celui qu vous avez choisi dans tunrserver.conf.
  • Mot de Passe WebRTC => celui qu vous avez choisi dans tunrserver.conf.

zarev

->.<-
🐧 Passionné de self-hosting, je partage ce que je connais et me nourris des connaissances des bonnes âmes qui partagent avec moi. Soutenons l'utilisation des apps open source et leurs développeurs.

Vous pourriez aussi aimer