--- title: Installer un service ntfy dans votre domaine description: tags: [] date: 2026-03-08 16:47 lastmod: 2026-03-08 18:11 type: - article category: - "[[Guide]]" status: brouillon --- Installer son propre serveur **ntfy** sur Proxmox est une excellente idée pour reprendre le contrôle de ses notifications sans dépendre de services tiers. Voici un tutoriel pas à pas pour configurer cela dans un conteneur **LXC Debian sur ProxMox**. --- ## 1. Création du conteneur LXC sur Proxmox 1. Créez un nouveau conteneur : - **Hostname :** `ntfy` - **Ressources conseillées :** 1 vCPU, 512 Mo de RAM, et 8 Go de disque (ntfy est très léger). - **Réseau :** Attribuez une IP statique ou une réservation DHCP. - **Template :** Debian 13. 2. Démarrez le conteneur et connectez-vous en SSH ou via la console. ![](Pasted%20image%2020260308171916.png) --- ## 2. Installation de ntfy Nous allons utiliser le dépôt officiel pour faciliter les mises à jour. ```Bash # Mise à jour du système sudo apt update && sudo apt upgrade -y # Installation des dépendances sudo apt install -y curl debian-archive-keyring # Créer le dossier pour les clés s'il n'existe pas sudo mkdir -p /etc/apt/keyrings # Télécharger la nouvelle clé sudo curl -L -o /etc/apt/keyrings/ntfy.gpg https://archive.ntfy.sh/apt/keyring.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/ntfy.gpg] https://archive.ntfy.sh/apt stable main" | sudo tee /etc/apt/sources.list.d/ntfy.list sudo apt update sudo apt install ntfy -y # Activation du service au démarrage sudo systemctl enable ntfy ``` --- ## 3. Configurer le reverseProxy avec le nom public ### 1. Publication sur `mon-domaine.fr` Pour que cela fonctionne depuis l'extérieur, vous devez configurer votre **Reverse Proxy** (qui doit se trouver sur une autre machine ou un autre LXC) : 1. **Pointage DNS :** Faites pointer `ntfy.mon-domaine.fr` vers votre IP publique. 2. **NAT/Port Forwarding :** Sur votre box/routeur, redirigez les ports **80** et **443** vers l'IP de votre Reverse Proxy. 3. **Config Proxy :** Redirigez les requêtes arrivant sur `ntfy.mon-domaine.fr` vers l'IP locale de votre LXC ntfy sur le port **8080**. - _Note importante :_ Assurez-vous d'activer le support des **WebSockets** et de passer les headers `Upgrade` et `Connection`, sinon les notifications sur smartphone ne seront pas instantanées. ### 2. Le "piège" du Reverse Proxy (Headers) Comme vous publiez sur `mon-domaine.fr`, votre Reverse Proxy (Nginx, Traefik ou autre) doit impérativement transmettre l'IP réelle du visiteur à ntfy, sinon ntfy croira que toutes les requêtes viennent de votre proxy. Si vous utilisez **Nginx**, votre bloc de configuration devrait ressembler à ceci pour gérer les **WebSockets** (indispensables pour l'app Android/iOS) : ```Nginx location / { proxy_pass http://IP_DU_LXC_NTFY:80; proxy_http_version 1.1; # Ces lignes sont vitales pour les notifications en temps réel proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; proxy_connect_timeout 1h; proxy_send_timeout 1h; proxy_read_timeout 1h; } ``` ## 4. Configuration de ntfy Avant de modifier la configuration, nous devons préparer l'environnement de stockage pour que **ntfy** puisse enregistrer ses utilisateurs et le cache des messages de manière persistante. Exécutez ces commandes pour créer le répertoire de données et attribuer les permissions correctes à l'utilisateur système `ntfy` : ``` sudo mkdir -p /var/lib/ntfy sudo chown ntfy:ntfy /var/lib/ntfy sudo chmod 700 /var/lib/ntfy ``` Le fichier de configuration principal se trouve dans `/etc/ntfy/server.yml`. 1. Ouvrez le fichier : `nano /etc/ntfy/server.yml` 2. Modifiez les lignes suivantes pour correspondre à votre domaine **ntfy.mon-domaine.fr** : ```YAML # L'URL de base est cruciale pour les liens dans les notifications base-url: "https://ntfy.mon-domaine.fr" # Écoute sur le port 80 (derrière un reverse proxy) listen-http: ":8080" # Lien avec votre broker MQTT existant mqtt-helper-url: "tcp://mqtt.workgroup.lan:1883" mqtt-helper-subscriptions: - topic: "ntfy/#" # Recommandé : Activer l'authentification pour éviter les abus sur votre domaine auth-file: "/var/lib/ntfy/user.db" auth-default-access: "deny-all" enable-login: true cache-file: "/var/lib/ntfy/cache.db" auth-file: "/var/lib/ntfy/user.db" ``` 3. Redémarrez le service : `systemctl restart ntfy` **Note :** Si le service refuse de démarrer, vérifiez les logs avec `journalctl -u ntfy -f`. Une erreur de syntaxe dans le fichier `.yml` (comme un espace en trop) est souvent la cause. ### 1. La gestion du cache (Indispensable) Par défaut, si votre téléphone est hors ligne au moment de l'envoi, le message est perdu. Pour éviter cela, assurez-vous que la base de données de cache est activée dans `/etc/ntfy/server.yml` : ```YAML # Permet de conserver les messages si le destinataire est hors ligne cache-file: "/var/lib/ntfy/cache.db" cache-duration: "12h" # Garde les messages 12h par exemple ``` --- ### 2. Gestion des utilisateurs (Sécurité) Puisque vous avez activé `auth-default-access: "deny-all"`, vous devez créer votre premier utilisateur administrateur pour pouvoir envoyer des messages : ```bash # Créer un utilisateur admin ntfy user add --role=admin votre_nom_utilisateur # Redémarrer le service pour appliquer les changements systemctl restart ntfy ``` --- ## 5. Test de fonctionnement Une fois le domaine et le proxy configurés, vous pouvez tester l'envoi d'une notification via un simple `curl` depuis n'importe quel terminal : ```Bash curl -u votre_user:votre_password \ -d "Test de notification sécurisée" \ https://ntfy.mon-domaine.fr/test ``` Si vous allez sur `https://ntfy.mon-domaine.fr/test`, vous devriez voir votre message apparaître. > **Note :** N'oubliez pas d'ouvrir le port 80/443 sur votre box/firewall vers votre Reverse Proxy !