Initial vault setup
This commit is contained in:
@@ -0,0 +1,149 @@
|
||||
---
|
||||
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
|
||||
Reference in New Issue
Block a user