Important
PRE-REALEASE BETA , NOT FINISH !
Application de visualisation de logs en temps réel pour Apache, Nginx, NPM, logs système et Fail2ban
# 1. Créer le fichier .env
echo "JWT_SECRET=$(openssl rand -base64 32)" > .env
# 2. Lancer
docker compose up -dDashboard disponible sur http://your-ip:7500
LogviewR — visualisation de logs en temps réel pour Apache, Nginx, NPM, logs système et Fail2ban.
- 🚀 Temps réel via WebSocket
- 🔍 Filtres : niveau, date, IP, méthode HTTP…
- 📊 Statistiques et tableaux de bord par plugin
- 🔐 Auth JWT, gestion des rôles
- 🐳 Docker-ready
🖥️ Host System — logs système Linux/Unix
- Syslog, auth, kernel, daemon, mail, logs personnalisés
- Détection automatique de l'environnement Docker
- Support RFC 3164 / RFC 5424
- Chemin de base configurable (
/var/logou/host/logsen Docker)
🌐 Apache — logs Apache HTTP Server
- Access logs (Combined, Common, VHost) + Error logs
- Extraction IP, timestamp, méthode HTTP, code statut, referer, user-agent
- Regex par défaut modifiables, support
.gz
🚀 Nginx — logs Nginx
- Access logs (Combined, Common, Main, Extended) + Error logs
- Parsing timestamps avec gestion timezones
- Regex compatibles fail2ban et ELK, support
.gz
🔄 Nginx Proxy Manager (NPM) — logs NPM
- 5 formats supportés avec détection automatique
- Champs : cache, upstream status, gzip ratio, sous-domaines
- Support
.gz
🛡️ Fail2ban — surveillance des jails et IPs bannies
Onglets : Jails · Filtres · Actions · Tracker IPs · Carte · Ban Manager · Stats · IPTables · IPSet · NFTables · Config · Audit
Prérequis : Fail2ban installé et actif sur le host.
Setup (une seule fois sur le host) :
sudo bash <(curl -fsSL https://raw.githubusercontent.com/Erreur32/LogviewR/main/scripts/setup-fail2ban-access.sh)Ce script crée le groupe fail2ban, installe le drop-in systemd pour que le socket soit accessible au conteneur, et ajuste les permissions SQLite. Le conteneur détecte ensuite automatiquement le GID au démarrage — aucune variable .env supplémentaire requise.
Pour vérifier l'état : Administration → Plugins → Fail2ban → Diagnostic.
| Variable | Description | Défaut | Requis |
|---|---|---|---|
JWT_SECRET |
Secret pour signer les tokens JWT | — | ✅ Oui |
DASHBOARD_PORT |
Port du dashboard | 7500 |
Non |
HOST_IP |
IP de la machine hôte | Auto-détection | Non |
CONFIG_FILE_PATH |
Chemin du fichier de configuration externe | /app/config/logviewr.conf |
Non |
ADM_GID |
GID du groupe adm sur l'hôte (logs système) |
4 |
Non |
HOST_ROOT_PATH |
Chemin racine hôte monté dans le conteneur | /host |
Non |
services:
logviewr:
image: ghcr.io/erreur32/logviewr:latest
container_name: logviewr
restart: unless-stopped
ports:
- "${DASHBOARD_PORT:-7500}:3000"
environment:
JWT_SECRET: ${JWT_SECRET}
DASHBOARD_PORT: ${DASHBOARD_PORT:-7500}
HOST_IP: ${HOST_IP:-}
group_add:
- "${ADM_GID:-4}" # groupe adm — lecture des logs système
volumes:
- ./data:/app/data
- /var/run/fail2ban/fail2ban.sock:/var/run/fail2ban/fail2ban.sock
- /:/host:ro
- /proc:/host/proc:ro
- /sys:/host/sys:ro
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:3000/api/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40sLe fichier complet avec tous les commentaires est dans
docker-compose.ymlà la racine du projet.
Le plugin Host System nécessite l'accès aux fichiers appartenant à root:adm (permissions 640).
Le conteneur ajoute automatiquement node au groupe adm (GID 4).
Si votre système utilise un GID différent :
getent group adm | cut -d: -f3 # vérifier le GID sur le host
echo "ADM_GID=votre_gid" >> .envFichiers avec permissions restrictives (600)
Certains fichiers (/var/log/php8.0-fpm.log, /var/log/rkhunter.log) appartiennent à root:root 600.
Solution :
sudo chgrp adm /var/log/php8.0-fpm.log* && sudo chmod 640 /var/log/php8.0-fpm.log*npm run dev # démarre backend (port 3004) + frontend Vite (port 5175)- Guides des parsers — formats supportés et regex
- NPM Parser Help — formats NPM
- Nginx Parser Help — formats Nginx
- Audit intégration host-system — scan erreurs/warnings
Les contributions sont les bienvenues !
Ce projet est sous licence MIT. Voir LICENSE.
Fait avec ❤️ pour les administrateurs système et développeurs
Issues | Discussions | Wiki