Files
wiki/Catalogue-Self-Hosted/apps/app-loggifly.md
T
2026-06-09 18:40:21 +02:00

150 lines
6.1 KiB
Markdown

---
title: LoggiFly
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, docker, logs, monitoring, notifications, python, auto-hebergement]
confidence: high
contested: false
sources: [https://selfh.st/apps/?tag=Docker, https://github.com/clemcer/LoggiFly]
---
# 🐳 LoggiFly
> **Vos logs Docker vous parlent ?** : LoggiFly lit en continu les logs de vos conteneurs, filtre les motifs qui vous intéressent (erreurs, exceptions, mots-clés) et vous envoie une notification. Fini les logs perdus dans `docker logs`.
## 📋 Informations Générales
| Champ | Valeur |
| :--- | :--- |
| **Site web** | (GitHub) |
| **GitHub** | [clemcer/LoggiFly](https://github.com/clemcer/LoggiFly) |
| **License** | MIT |
| **Langage** | Python |
| **Étoiles GitHub** | 1740 ⭐ |
| **Dernière MAJ** | 2026-06-02 |
| **Catégorie** | [[cat-docker\|Docker]] |
## 📝 Description
**LoggiFly** est un **démon léger** qui suit en temps réel (`docker logs -f`) la sortie de tous vos conteneurs, applique des **règles de filtrage** (regex, mots-clés, niveaux), et **déclenche des notifications** (Discord, Slack, Telegram, Ntfy, Gotify, email…) quand un motif correspond.
L'idée est de combler le manque entre `docker logs` (qu'il faut aller lire manuellement) et un ELK / Loki (trop lourd pour un homelab). LoggiFly est dans le juste milieu : GUI web, configuration YAML, notifications modernes.
-**Multi-conteneurs** : suit tous les conteneurs, ou une sélection via labels / noms
-**Règles YAML** : regex, mot-clé, niveau (ERROR/WARN/INFO), exclusion
-**Notifications multi-canaux** : Discord, Slack, Telegram, Ntfy, Gotify, Pushover, email, webhook custom
-**Anti-spam** : regroupement de notifications identiques sur une fenêtre de temps
-**GUI web** : dashboard des dernières alertes, aperçu des logs filtrés
-**Stockage SQLite** : conserve un historique des alertes
-**Mode multi-hôte** : peut se connecter à plusieurs daemons distants
**LoggiFly vs Dozzle** : Dozzle ([[app-dozzle]]) est un *viewer* de logs (lecture humaine), LoggiFly est un *alerter* (notification automatique). LoggiFly vs Loki/Grafana : stack pro pour gros volumes ; LoggiFly pour homelab. LoggiFly vs `grep + cron` : LoggiFly centralise, persiste et notifie — pas de scripts à maintenir.
## 🚀 Installation
### Docker Compose (recommandé)
```yaml
# docker-compose.yml
version: '3.8'
services:
loggifly:
image: ghcr.io/clemcer/loggifly:latest
container_name: loggifly
restart: unless-stopped
ports:
- "8888:8888" # Web UI
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./config:/app/config # config.yaml + rules.yaml
- loggifly-data:/app/data
environment:
- TZ=Europe/Paris
- LG_CONFIG=/app/config/config.yaml
labels:
- "traefik.enable=true"
- "traefik.http.routers.loggifly.rule=Host(`logs.example.com`)"
- "traefik.http.routers.loggifly.entrypoints=websecure"
- "traefik.http.routers.loggifly.tls.certresolver=letsencrypt"
volumes:
loggifly-data:
```
### Exemple de config
```yaml
# config.yaml
general:
check_interval: 5
log_retention_days: 7
containers:
- name: "nextcloud"
patterns: ["Fatal", "Error", "exception", "out of memory"]
- name: "traefik"
patterns: ["level=error"]
notifications:
discord:
webhook: "https://discord.com/api/webhooks/…"
ntfy:
topic: "homelab-alerts"
```
## ⚙️ Configuration Initiale
1. **Monter le socket Docker** (`/var/run/docker.sock:ro`) pour que LoggiFly puisse lister et lire les conteneurs
2. **Préparer le dossier de config** : `./config/config.yaml` (paramètres généraux) et `./config/rules.yaml` (règles)
3. **Définir un premier conteneur à surveiller** : `containers: [{name: "nextcloud", patterns: ["Error", "exception"]}]`
4. **Configurer au moins un canal de notification** : Discord webhook, Ntfy topic, Telegram bot, etc.
5. **Accéder à la GUI** : `http://IP:8888` pour visualiser le dashboard et l'historique des alertes
6. **Ajuster l'anti-spam** : `cooldown` pour éviter qu'une même erreur en boucle spamme vos notifications
## 🔄 Alternatives
### Open Source
- [[app-dozzle|Dozzle]] — viewer web de logs en temps réel
- **Loki + Grafana** — stack pro, beaucoup plus lourde
- [[app-uptime-kuma|Uptime Kuma]] — monitoring d'uptime (pas de log streaming)
- **Vector / Promtail** — agents de collecte de logs
- **Docker events + script cron** — DIY
### Comparaison LoggiFly vs alternatives
| Critère | LoggiFly | Dozzle | Loki+Grafana | Vector |
| :--- | :--- | :--- | :--- | :--- |
| Lecture temps réel | ✅ | ✅ | ✅ | ✅ |
| Alertes/notifs | ✅ | ❌ | ✅ | ⚠️ (via Promtail) |
| Règles regex | ✅ | ❌ (filtre simple) | ✅ (LogQL) | ✅ (VRL) |
| GUI web | ✅ | ✅ | ✅ (Grafana) | ❌ |
| Setup | 5 min | 2 min | 1h+ | 30 min |
| RAM | ~50 Mo | ~30 Mo | ~500 Mo+ | ~50 Mo |
**Verdict** : LoggiFly est **le choix idéal pour un homelab** qui veut des alertes pertinentes sans la lourdeur de Loki. Pour des volumes >10 Go/jour, passez à Loki.
### Propriétaires (ce que LoggiFly remplace)
- **Datadog Log Management** (payant)
- **Loggly** (payant)
- **Sumo Logic** (payant)
- **New Relic Logs** (payant)
## 🔐 Sécurité
- ⚠️ **Socket Docker monté** : même en `ro`, peut lister tous vos conteneurs. Limiter via [[app-docker-socket-proxy-docker|docker-socket-proxy]] ou accès VPN
- **Logs potentiellement sensibles** : les logs Nextcloud/Mailcow/Seafile contiennent des adresses mail, des chemins, des PII. Ne pas exposer la GUI sur Internet sans auth
- **Webhooks** : valider les URLs, ne pas mettre de tokens dans le `docker-compose.yml` public — utiliser un `.env`
## 📚 Ressources
- [GitHub clemcer/LoggiFly](https://github.com/clemcer/LoggiFly)
- [Documentation & exemples](https://github.com/clemcer/LoggiFly/blob/main/docs/configuration.md)
## Pages Liées
- [[cat-docker]] — Catégorie Docker
- [[app-portainer]] / [[app-dockge]] / [[app-yacht]] — GUI Docker
- [[app-traefik]] — Reverse-proxy
- [[recettes-docker-compose]] — Compose files
- [[securisation-home-lab]] — Bonnes pratiques