vault backup: 2026-03-08 17:16:34
This commit is contained in:
184
articles/2026/Installer un service ntfy dans votre domaine.md
Normal file
184
articles/2026/Installer un service ntfy dans votre domaine.md
Normal file
@@ -0,0 +1,184 @@
|
||||
---
|
||||
title: Installer un service ntfy dans votre domaine
|
||||
description:
|
||||
tags: []
|
||||
date: 2026-03-08 16:47
|
||||
lastmod: 2026-03-08 17:16
|
||||
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. Téléchargez le template **Debian 12 (Bookworm)** dans votre stockage Proxmox (CT Templates).
|
||||
|
||||
2. 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.
|
||||
|
||||
3. Démarrez le conteneur et connectez-vous en SSH ou via la console.
|
||||
|
||||
|
||||
---
|
||||
|
||||
## 2. Installation de ntfy
|
||||
|
||||
Nous allons utiliser le dépôt officiel pour faciliter les mises à jour.
|
||||
|
||||
```Bash
|
||||
# Mise à jour du système
|
||||
apt update && apt upgrade -y
|
||||
|
||||
# Installation des dépendances
|
||||
apt install -y curl debian-archive-keyring
|
||||
|
||||
# Ajout du dépôt ntfy
|
||||
curl -sSL https://archive.heckel.io/apt/pubkey.gpg | gpg --dearmor -o /usr/share/keyrings/archive.heckel.io.gpg
|
||||
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/archive.heckel.io.gpg] https://archive.heckel.io/apt debian main" > /etc/apt/sources.list.d/ntfy.list
|
||||
|
||||
# Installation de ntfy
|
||||
apt update
|
||||
apt install ntfy -y
|
||||
|
||||
# Activation du service au démarrage
|
||||
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.
|
||||
|
||||
### 1. 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` :
|
||||
|
||||
```
|
||||
mkdir -p /var/lib/ntfy
|
||||
chown ntfy:ntfy /var/lib/ntfy
|
||||
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 !
|
||||
|
||||
Reference in New Issue
Block a user