Installer un serveur de notifications push Gotify

L'envie m'a pris d'installer un serveur de notifications push auto-hébergé pour l'avoir sous la main si j'en ai besoin. Ça peut être pratique d'avoir des notifications push au besoin pour des projets personnels.

J'ai entendu parler du projet Gotify sur le Fediverse (j'ai pas le toot qui va bien :( ). La documentation est suffisamment complète pour démarrer. Je montrerai néanmoins comment je l'ai installé.

Cet article date de 2019 et la méthode d'installation de Gotify peut avoir changé par rapport à ce qui est indiqué ici.

Fonctionnement

Pour faire tourner tout ça, il faut une application cliente sur votre portable / tablette / whatever you want qui se branchera à un serveur WebSocket et qui écoutera les notifications. Le serveur se charge de réceptionner vos notifications et de les envoyer au client via le WebSocket.

Un système de priorité permet de varier entre les différents types de notifications et moyens de vous aviser que quelque chose est arrivé.

Le tout est écrit en Go.

Installation

Grand classique; tout est noté dans la section Installation de la documentation. En résumé, il faut aller sur la page des versions stables puis télécharger le binaire qui correspond à l'architecture de votre processeur.

Ensuite, il faut le décompresser quelque part. J'ai ajouté un nouvel utilisateur pour garder les choses séparées dans la table des processus et dans les permissions ;)

Configuration

C'est pas insurmontable. Le contenu du fichier de configuration se trouve dans la documentation du projet, section "Configuration" ou à la racine du projet.

Le fichier devra s'appeler config.yml et se trouver dans le même dossier que l'exécutable. Tant qu'à faire, je vous invite fortement à changer le login - mot de passe par défaut admin:admin par quelque chose de votre choix et plus costaud. On a largement assez des IoT1 qui se font zombifier.

Nginx

Le ticket n°82 a été d'une grande aide quant à l'élaboration du fichier de configuration. Je vous laisse la mienne ci-dessous: comments_uri = "/2019/01/01/installer-un-server-de-notifications-gotify.html"

map $http_upgrade $connection_upgrade {
    default upgrade;
    ''  close;
}

server {
    # Je ne veux qu'écouter sur le port 443
    listen 443 http2 ssl;
    listen [::]:443 http2 ssl;
    server_name domaine.example.com;

    include ssl.conf; # Votre configuration avec le certificat et les chiffrements ici

    location / { # Les requêtes normales vont ici
        proxy_set_header        Host $host;
        proxy_set_header        X-Real-IP $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header        X-Forwarded-Proto $scheme;
        proxy_pass      http://adresse-du-serveur-ici;
        #proxy_set_header   Upgrade $http_upgrade;
        proxy_connect_timeout   7m;
        proxy_send_timeout  7m;
        proxy_read_timeout  7m;
    }

    # Les demandes de requêtes pour passer sur websocket ici
    # Sans ce bloc, les demandes aboutissent sur un 400 Bad Request
    location /stream {
        proxy_pass      http://adresse-du-serveur-ici;
        proxy_set_header    Host $host;
        proxy_set_header    X-Real-IP $remote_addr;
        proxy_set_header    Upgrade $http_upgrade;
        proxy_set_header    Connection "Upgrade";
        proxy_connect_timeout   7m;
        proxy_send_timeout  7m;
        proxy_read_timeout  7m;

    }
}

Le fichier de configuration du vhost se trouve aussi dans la documentation du projet.

Merci à Xalofar pour les quelques corrections apportées au texte ;)

Modification apportées

22 novembre 2019

  • Modification des URLs faisant référence à la documentation;
  • Modification de la partie "Installation" pour ajouter un lien vers la doc du projet;
  • Ajout d'un lien pointant directement vers le fichier de configuration
  • Ajout d'un lien vers la configuration Nginx par défaut proposée dans la doc

---


  1. Internet of Things; objets connectés. Ces appareils sont régulièrement victimes d'attaques parce que leurs utilisateurs n'ont pas pris le soin de changer le login et mot de passe par défaut. Ils sont également appelés "Internet of Shit" de part leur faible sécurité. ↩︎