À propos du projet
Theia – Analytics serveur respectueux de la vie privée
Aperçu
Theia fournit des statistiques de trafic web sans aucun JavaScript côté client. Il surveille les journaux d'accès nginx en temps réel, analyse chaque ligne pour en extraire le chemin, le référent, l'user-agent, l'IP, le code de statut et les octets envoyés, hache les IPs pour la confidentialité, et stocke les résultats dans une base SQLite locale. Tout le traitement s'effectuant sur le serveur, les données sont免疫 aux bloqueurs de publicités et ne reposent pas sur des services tiers.
Installation
Installation rapide : téléchargez le script d'installation avec curl ou wget et exécutez-le avec sudo bash. Le script détecte l'architecture, installe le binaire dans /usr/local/bin/theia, ajoute un format de journal nginx personnalisé pour le suivi multi-domaines (optionnel), crée un service systemd et prépare /var/lib/theia pour le stockage des données. L'installation manuelle est également prise en charge – clonez le dépôt, compilez avec go build, copiez le binaire, créez le répertoire de données et installez l'unité systemd fournie.
Exécution du daemon
Le daemon taille le journal d'accès nginx et écrit les enregistrements analysés dans la base SQLite.
Commandeexemple :
sudo theia daemon --log-path /var/log/nginx/access.log --db-path /var/lib/theia/theia.db
Indicateurs clés : --log-path (défaut /var/log/nginx/access.log) et --db-path (défaut ./theia.db).
Statistiques en ligne de commande
La sous-commande stats lit la base de données et affiche un tableau récapitulatif ou un résultat JSON.
Usage typique :
theia stats --db-path /var/lib/theia/theia.db
Les options permettent de modifier la période de consultation (--days), de filtrer par hôte (--host), de choisir le format de sortie (--format json|table) et d'ajuster le nombre d'entrées principales (--top).
Service API HTTP
La commande serve lance une API HTTP/JSON (ou CSV) protégée par token sur 127.0.0.1:8081. Elle peut être proxyvia nginx pour l'exposer externement. L'authentification peut être fournie via un fichier token, une variable d'environnement ou un indicateur de ligne de commande. Les endpoints incluent :
GET /api/v1/stats – données en série chronologique
GET /api/v1/stats/paths – chemins principaux
GET /api/v1/stats/referrers – référents principaux
GET /api/v1/stats/status-codes – répartition des codes de statut
Paramètres de requête courants : host, from, to, format, group_by, top.
Complétion shell
Exécuter theia completion détecte le shell actuel et propose d'installer les scripts de complétion pour bash, zsh ou fish.
Gestion du service
Theia s'exécute en tant qu'unité systemd. Utilisez les commandes systemctl standard pour démarrer, arrêter, redémarrer, afficher l'état et suivre les logs.
Fonctionnement interne
1. TAILLE du fichier log nginx en temps réel.
2. Analyse de chaque ligne pour les champs pertinents.
3. Hachage IP + user-agent + date pour préserver l'anonymat.
4. Détection automatique des bots et des requêtes d'actifs statiques.
5. Écriture asynchrone des enregistrements dans SQLite (mode WAL) permettant des lecteurs simultanés.
6. Nettoyage périodique supprime les statistiques horaires de plus de 60 jours.
Considérations de sécurité
Le daemon nécessite les privilèges root ou sudo pour lire les logs nginx. Le jeton API doit être stocké dans un fichier plutôt que sur la ligne de commande pour éviter son exposition via la liste des processus. Un rate-limiting et des règles fail2ban pour les scanners bruyants sont recommandés (voir docs/nginx-hardening.md).
Limitations
* Seuls les compteurs de vues de pages sont collectés ; aucun événement côté client.
* Perte de données possible en cas de crash brutal.
* Pas de tableau de bord web intégré – les utilisateurs peuvent consommer la sortie CLI, l'API HTTP, ou interroger SQLite directement.
Licence
Apache License 2.0.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.