| 05.06.2023 | FR, EN, CZ |

Héberger votre propre serveur SMP

Présentation générale

Un serveur SMP est un serveur relais utilisé pour transmettre les messages sur le réseau SimpleX. Les apps SimpleX Chat ont des serveurs prédéfinis (pour les apps mobiles, smp11, smp12 et smp14.simplex.im), mais vous pouvez facilement modifier la configuration de l'app pour utiliser d'autres serveurs.

Seuls les utilisateurs de SimpleX déterminent quel serveur est utilisé pour recevoir les messages, séparément pour chaque contact (ou pour chaque connexion à un membre d'un groupe), et ces serveurs ne sont que temporaires, car l'adresse de réception peut changer.

Veuillez noter : lorsque vous modifiez les serveurs dans la configuration de l'app, cela n'affecte que les serveurs qui seront utilisés pour les nouveaux contacts. Les contacts existants ne seront pas automatiquement déplacés vers les nouveaux serveurs, mais vous pouvez les déplacer manuellement à l'aide du bouton "Changer d'adresse de réception" sur les fiches d'information de contact/membre – ce sera bientôt automatisé.

Installation

  1. Tout d'abord, installez smp-server:

L'installation manuelle nécessite quelques actions préalables :

  1. Créer un utilisateur et un groupe pour votre smp-server:

    sudo useradd -m smp
    
  2. Créer les répertoires nécessaires et y attribuer les permissions :

    sudo mkdir -p /var/opt/simplex /etc/opt/simplex
    sudo chown smp:smp /var/opt/simplex /etc/opt/simplex
    
  3. Autoriser le port du smp-server dans le pare-feu:

    # Pour Ubuntu
    sudo ufw allow 5223/tcp
    # Pour Fedora
    sudo firewall-cmd --permanent --add-port=5223/tcp && \
    sudo firewall-cmd --reload
    
  4. Optionnel - Si vous utilisez une distribution avec systemd, créez le fichier /etc/systemd/system/smp-server.service avec le contenu suivant :

    [Unit]
    Description=Serveur SMP
    [Service]
    User=smp
    Group=smp
    Type=simple
    ExecStart=smp-server start
    ExecStopPost=/usr/bin/env sh -c '[ -e "/var/opt/simplex/smp-server-store.log" ] && cp "/var/opt/simplex/smp-server-store.log" "/var/opt/simplex/smp-server-store.log.bak"'
    KillSignal=SIGINT
    TimeoutStopSec=infinity
    Restart=always
    RestartSec=10
    LimitNOFILE=65535
    [Install]
    WantedBy=multi-user.target
    

    Et exécutez sudo systemctl daemon-reload.

Configuration

Pour voir les options disponibles, exécutez smp-server sans paramètres :

sudo su smp -c smp-server

...
Available commands:
  init                     Initialize server - creates /etc/opt/simplex and
                           /var/opt/simplex directories and configuration files
  start                    Start server (configuration:
                           /etc/opt/simplex/smp-server.ini)
  delete                   Delete configuration and log files

Vous pouvez obtenir de l'aide supplémentaire en exécutant sudo su smp -c "smp-server <command> -h"

Ensuite, nous devons configurer smp-server:

Interactif

Exécutez la commande suivante :

sudo su smp -c "smp-server init"

Il y a plusieurs options disponibles :

  • Enable store log to restore queues and messages on server restart (Yn):

    Entrez y pour permettre la sauvegarde et la restauration des connexions et des messages lorsque le serveur est redémarré.

    Veuillez noter : il est important d'utiliser SIGINT pour redémarrer le serveur, sinon les messages non distribués ne seront pas restaurés. Les connexions seront restaurées indépendamment de la façon dont le serveur est redémarré, car contrairement aux messages, elles sont ajoutées aux logs (append-only) seulement à chaque changement.

  • Enable logging daily statistics (yN):

    Entrez y pour activer l'enregistrement des statistiques au format CSV, par exemple, elles peuvent être utilisées pour afficher des graphiques d'utilisation globale dans Grafana.

Ces statistiques incluent le nombre quotidien de files d'attente créées, sécurisées et supprimées, de messages envoyés et reçus, ainsi que le nombre quotidien, hebdomadaire et mensuel de files d'attente actives (c'est-à-dire les files d'attente qui ont été utilisées pour des messages). Nous estimons que ces informations ne comportent aucun élément permettant de corréler différentes files d'attente comme appartenant aux mêmes utilisateurs, mais si vous pensez que cela peut être exploité de quelque manière que ce soit, veuillez nous le faire savoir, de manière confidentielle.

  • Require a password to create new messaging queues?

    Entrez r ou votre mot de passe pour protéger votre smp-server, ou n pour désactiver la protection par mot de passe.

  • Enter server FQDN or IP address for certificate (127.0.0.1):

    Entrez votre domaine ou l'adresse IP sur laquelle votre serveur smp fonctionne - elle sera incluse dans les certificats du serveur et également indiquée dans l'adresse du serveur.

Option via ligne de commande

Exécutez la commande suivante :

sudo su smp -c "smp-server init -h"

...
Available options:
  -l,--store-log           Enable store log for persistence
  -s,--daily-stats         Enable logging daily server statistics
  -a,--sign-algorithm ALG  Signature algorithm used for TLS certificates:
                           ED25519, ED448 (default: ED448)
  --ip IP                  Server IP address, used as Common Name for TLS online
                           certificate if FQDN is not supplied
                           (default: "127.0.0.1")
  -n,--fqdn FQDN           Server FQDN used as Common Name for TLS online
                           certificate
  --no-password            Allow creating new queues without password
  --password PASSWORD      Set password to create new messaging queues
  -y,--yes                 Non-interactive initialization using command-line
                           options
  -h,--help                Show this help text

Vous devriez déterminer quels paramètres sont nécessaires pour votre cas d'utilisation et ensuite exécuter smp-server init avec le paramètre -y pour une initialisation non-interactive :

sudo su smp -c "smp-server init -y -<your flag> <your option>"

Par exemple, exécutez :

sudo su smp -c "smp-server init -y -l --ip 192.168.1.5 --password test"

pour initialiser votre smp-server avec comme configuration :

  • restauration des connexions et des messages lors du redémarrage du serveur (paramètre -l),
  • adresse IP 192.168.1.5,
  • protection du smp-server avec comme mot de passe test.

Après cela, votre installation est terminée et vous devriez voir dans votre teminal quelque chose comme ceci :

Certificate request self-signature ok
subject=CN = 127.0.0.1
Server initialized, you can modify configuration in /etc/opt/simplex/smp-server.ini.
Run `smp-server start` to start server.
----------
You should store CA private key securely and delete it from the server.
If server TLS credential is compromised this key can be used to sign a new one, keeping the same server identity and established connections.
CA private key location: /etc/opt/simplex/ca.key
----------
SMP server v3.4.0
Fingerprint: d5fcsc7hhtPpexYUbI2XPxDbyU2d3WsVmROimcL90ss=
Server address: smp://d5fcsc7hhtPpexYUbI2XPxDbyU2d3WsVmROimcL90ss=:V8ONoJ6ICwnrZnTC_QuSHfCEYq53uLaJKQ_oIC6-ve8=@<hostnames>

L'adresse du serveur ci-dessus doit être utilisée dans la configuration de votre client et si vous avez ajouté le mot de passe du serveur, il ne doit être partagé qu'avec les personnes que vous souhaitez autoriser à utiliser votre serveur pour recevoir les messages (tous vos contacts pourront envoyer des messages, car cela ne nécessite pas de mot de passe). Si vous avez fourni une adresse IP ou un nom d'hôte lors de l'initialisation, ils seront indiqués dans l'adresse du serveur, sinon remplacez <hostnames> par les adresses réelles du serveur.

Documentation

Tous les fichiers requis pour smp-server sont situés dans le dossier /etc/opt/simplex/.

Les messages stockés, les connexions, les statistiques et les logs du serveur sont situés dans le dossier /var/opt/simplex/.

Adresse de serveur SMP

Une adresse de serveur SMP a le format suivant :

smp://<fingerprint>[:<password>]@<public_hostname>[,<onion_hostname>]
  • <fingerprint>

    Empreinte du certificat de votre smp-server. Vous pouvez vérifier l'empreinte de votre certificat dans /etc/opt/simplex/fingerprint.

  • optionnel <password>

    Votre mot de passe configuré pour smp-server. Vous pouvez vérifier votre mot de passe configuré dans /etc/opt/simplex/smp-server.ini, sous la section [AUTH] dans le champ create_password:.

  • <public_hostname>, optionnel <onion_hostname>

    Votre(vos) nom(s) d'hôte configuré(s) de smp-server. Vous pouvez vérifier vos hôtes configurés dans /etc/opt/simplex/smp-server.ini, dans la section [AUTH] dans le champ host:.

Systemd commandes

Pour démarrer smp-server au démarrage de l'hôte, exécutez :

sudo systemctl enable smp-server.service

Created symlink /etc/systemd/system/multi-user.target.wants/smp-server.service → /etc/systemd/system/smp-server.service.

Pour démarrer smp-server, exécutez :

sudo systemctl start smp-server.service

Pour vérifier l'état du smp-server, exécutez :

sudo systemctl status smp-server.service

● smp-server.service - SMP server
     Loaded: loaded (/etc/systemd/system/smp-server.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2022-11-23 19:23:21 UTC; 1min 48s ago
   Main PID: 30878 (smp-server)
     CGroup: /docker/5588ab759e80546b4296a7c50ffebbb1fb7b55b8401300e9201313b720989aa8/system.slice/smp-server.service
             └─30878 smp-server start

Nov 23 19:23:21 5588ab759e80 systemd[1]: Started SMP server.
Nov 23 19:23:21 5588ab759e80 smp-server[30878]: SMP server v3.4.0
Nov 23 19:23:21 5588ab759e80 smp-server[30878]: Fingerprint: d5fcsc7hhtPpexYUbI2XPxDbyU2d3WsVmROimcL90ss=
Nov 23 19:23:21 5588ab759e80 smp-server[30878]: Server address: smp://d5fcsc7hhtPpexYUbI2XPxDbyU2d3WsVmROimcL90ss=:V8ONoJ6ICwnrZnTC_QuSHfCEYq53uLaJKQ_oIC6-ve8=@<hostnames>
Nov 23 19:23:21 5588ab759e80 smp-server[30878]: Store log: /var/opt/simplex/smp-server-store.log
Nov 23 19:23:21 5588ab759e80 smp-server[30878]: Listening on port 5223 (TLS)...
Nov 23 19:23:21 5588ab759e80 smp-server[30878]: not expiring inactive clients
Nov 23 19:23:21 5588ab759e80 smp-server[30878]: creating new queues requires password

Pour arrêter smp-server, exécutez :

sudo systemctl stop smp-server.service

Pour vérifier la "tail" de smp-server des logs, exécutez :

sudo journalctl -fu smp-server.service

Nov 23 19:23:21 5588ab759e80 systemd[1]: Started SMP server.
Nov 23 19:23:21 5588ab759e80 smp-server[30878]: SMP server v3.4.0
Nov 23 19:23:21 5588ab759e80 smp-server[30878]: Fingerprint: d5fcsc7hhtPpexYUbI2XPxDbyU2d3WsVmROimcL90ss=
Nov 23 19:23:21 5588ab759e80 smp-server[30878]: Server address: smp://d5fcsc7hhtPpexYUbI2XPxDbyU2d3WsVmROimcL90ss=:V8ONoJ6ICwnrZnTC_QuSHfCEYq53uLaJKQ_oIC6-ve8=@<hostnames>
Nov 23 19:23:21 5588ab759e80 smp-server[30878]: Store log: /var/opt/simplex/smp-server-store.log
Nov 23 19:23:21 5588ab759e80 smp-server[30878]: Listening on port 5223 (TLS)...
Nov 23 19:23:21 5588ab759e80 smp-server[30878]: not expiring inactive clients
Nov 23 19:23:21 5588ab759e80 smp-server[30878]: creating new queues requires password

Suivi de l'activité

Vous pouvez activer les statistiques de smp-server sur le tableau de bord Grafana en mettant la valeur on dans /etc/opt/simplex/smp-server.ini, sous la section [STORE_LOG] dans le champ log_stats:.

Les journaux seront stockés dans un fichier csv dans /var/opt/simplex/smp-server-stats.daily.log. Les champs pour le fichier csv sont :

fromTime,qCreated,qSecured,qDeleted,msgSent,msgRecv,dayMsgQueues,weekMsgQueues,monthMsgQueues
  • fromTime - horodatage; date et heure de l'événement

  • qCreated - int; files d'attente créées

  • qSecured - int; files d'attente établies

  • qDeleted - int; files d'attente supprimées

  • msgSent - int; messages envoyés

  • msgRecv - int; messages reçus

  • dayMsgQueues - int; files d'attente actives en un jour

  • weekMsgQueues - int; files d'attente actives en une semaine

  • monthMsgQueues - int; files d'attente actives en un mois

Pour importer du csv dans Grafana il faut :

  1. Installer le plugin Grafana : Grafana - CSV datasource

  2. Autoriser le mode local en ajoutant ce qui suit :

    [plugin.marcusolsson-csv-datasource]
    allow_local_mode = true
    

    ... to /etc/grafana/grafana.ini

  3. Ajouter une source de données CSV :

    • Dans le menu latéral, cliquez sur l'onglet Configuration (icône en forme de rouage).
    • Cliquez sur Ajouter une source de données dans le coin supérieur droit de l'onglet Sources de données.
    • Entrez "CSV" dans le champ de recherche pour trouver la source de données CSV.
    • Cliquez sur le résultat de la recherche qui indique "CSV".
    • Dans URL, entrez un fichier qui pointe vers le contenu CSV.
  4. C'est fait ! Vous devriez être en mesure de créer votre propre tableau de bord avec des statistiques.

Pour plus de documentation, voir : CSV Data Source pour Grafana - Documentation

Configurer l'app pour utiliser le serveur

Pour configurer l'app afin d'utiliser votre serveur de messagerie, copiez son adresse complète, y compris le mot de passe, et ajoutez-la à l'application. Vous avez la possibilité d'utiliser votre serveur avec les serveurs prédéfinis ou sans eux - vous pouvez les supprimer ou les désactiver.

Il est également possible de partager l'adresse de votre serveur avec vos amis en leur permettant de scanner le code QR dans les paramètres du serveur. Ce code inclura le mot de passe du serveur, ce qui leur permettra aussi de recevoir des messages via votre serveur.

Veuillez noter : vous avez besoin de la version 4.0 du serveur SMP pour avoir le support du mot de passe. Si vous avez déjà déployé un serveur, vous pouvez ajouter le mot de passe en l'ajoutant au fichier INI du serveur.

     

© 2020-2023 SimpleX | Projet Open-Source