From e7bd1de2519a772ce3118e1a0be6b9f401b4f828 Mon Sep 17 00:00:00 2001 From: DuN0z Date: Wed, 8 Oct 2025 22:47:32 +0200 Subject: [PATCH] Add: installation de Goaccess sur NixOs --- .../posts/installation-goaccess-nixos.en.md | 84 +++++++++++++++++++ .../posts/installation-goaccess-nixos.fr.md | 82 ++++++++++++++++++ 2 files changed, 166 insertions(+) create mode 100644 content/posts/installation-goaccess-nixos.en.md create mode 100644 content/posts/installation-goaccess-nixos.fr.md diff --git a/content/posts/installation-goaccess-nixos.en.md b/content/posts/installation-goaccess-nixos.en.md new file mode 100644 index 0000000..ee1b849 --- /dev/null +++ b/content/posts/installation-goaccess-nixos.en.md @@ -0,0 +1,84 @@ ++++ +date = '2025-10-06T01:00:51+02:00' +title = 'Goaccess install on NixOs' +tags = [ "nixos","statistics" ] ++++ + +When you self-host, there comes a moment when curiosity takes over. +Who visits my site? At what time? Which pages actually get attention? + +And, sooner or later, the big question: +Is anyone, anywhere, really reading what I write? + +You could go for Google Analytics or Matomo — but that comes with its own baggage: +- Questionable privacy practices, +- Third-party scripts injected into your site, +- Extra weight on every page, +- And a dependency on services I don’t want. + +GoAccess, on the other hand, takes the minimalist route. +No scripts, no tracking, no cookie banner — it reads directly from the web server logs (in my case, Caddy) and generates a clear, efficient report. + +That’s the kind of philosophy I like: +- Privacy-friendly — nothing leaves my server, no profiling. +- Simple — I don’t touch my site, I just process the logs. +- Fast — one command and I instantly see who visited and how. +- Self-hosting friendly — no database, no bloated setup. + +In short, GoAccess fits perfectly with what I look for in my homelab: + +→ Getting visibility into my services without turning it into a Rube Goldberg machine. + +⸻ + +Minimal setup on NixOS + +GoAccess is available directly from the official repository. +I just added the package and a small systemd service to generate a static report every hour: + +``` +{pkgs, ...}: { + environment.systemPackages = with pkgs; [ + goaccess + ]; + + # Service for generation the GoAccess static report + systemd.services.goaccess-report = { + description = "Generate GoAccess HTML report"; + serviceConfig = { + ExecStart = "${pkgs.goaccess}/bin/goaccess /var/log/caddy/access-levr.porzh.me.log --log-format=CADDY -o /var/www/goaccess/index.html"; + }; + }; + + # Timer to regénérate the report every hour + systemd.timers.goaccess-report = { + description = "Hourly GoAccess report generation"; + wantedBy = ["timers.target"]; + timerConfig = { + OnCalendar = "hourly"; + Persistent = true; + }; + }; + services.caddy = { + virtualHosts = { + "koum.porzh.me" = { + extraConfig = '' + root * /var/www/goaccess + file_server browse + try_files {path} {path}/ /index.html + + ''; + }; + }; + }; +} +``` + +What’s next? + +In the second part, I’ll go a bit further: +- filtering out local network IPs, +- generating daily, weekly, and monthly reports, +- and explaining why I chose not to use the “live” mode. + +Because yes — even analytics deserve a bit of restraint. diff --git a/content/posts/installation-goaccess-nixos.fr.md b/content/posts/installation-goaccess-nixos.fr.md new file mode 100644 index 0000000..a1c13d8 --- /dev/null +++ b/content/posts/installation-goaccess-nixos.fr.md @@ -0,0 +1,82 @@ ++++ +date = '2025-10-06T01:00:51+02:00' +title = 'Installation de goaccess sur NixOs' +tags = [ "nixos","statistiques" ] ++++ + +Quand on auto-héberge, il y a un moment où la curiosité prend le dessus. +Qui visite mon site ? À quelle heure ? Quelles pages intéressent vraiment ? +Et la question qu’on se pose tôt ou tard : est-ce que quelqu’un, quelque part, lit vraiment ce que j’écris ? + +On peut se tourner vers Google Analytics ou Matomo, mais ça vient avec son lot de complications : +- Respect de la vie privée discutable, +- Scripts tiers à injecter dans le site, +- Poids supplémentaire sur chaque page, +- Et une dépendance à des services dont je ne veux pas. + +GoAccess, lui, c’est un peu la voie minimaliste. +Pas de scripts, pas de traçage, pas de cookie banner : il lit **directement les logs du serveur web** (dans mon cas, Caddy) et me génère un rapport clair et efficace. + +C’est la philosophie qui me plaît : +- **Respectueux de la vie privée** : rien ne sort de mon serveur, aucun profilage. +- **Simple** : je ne change rien à mon site, je traite juste mes journaux de logs. +- **Rapide** : une commande, et j’ai une vue immédiate sur qui est passé et comment. +- **Self-hosting friendly** : pas besoin d’une base de données ni d’un monstre à maintenir. + +En gros, GoAccess répond parfaitement à ce que je cherche dans mon homelab : + +→ Avoir de la visibilité sur mes services **sans transformer ça en usine à gaz**. + +## Mise en place minimale sous NixOS + +GoAccess est disponible directement via le dépôt officiel. +J’ai ajouté le paquet et un petit service systemd pour générer un rapport statique toutes les heures : + +``` +{pkgs, ...}: { + environment.systemPackages = with pkgs; [ + goaccess + ]; + + # Service pour générer le rapport statique GoAccess + systemd.services.goaccess-report = { + description = "Generate GoAccess HTML report"; + serviceConfig = { + ExecStart = "${pkgs.goaccess}/bin/goaccess /var/log/caddy/access-levr.porzh.me.log --log-format=CADDY -o /var/www/goaccess/index.html"; + }; + }; + + # Timer pour régénérer le rapport toutes les heures + systemd.timers.goaccess-report = { + description = "Hourly GoAccess report generation"; + wantedBy = ["timers.target"]; + timerConfig = { + OnCalendar = "hourly"; + Persistent = true; + }; + }; + services.caddy = { + virtualHosts = { + "koum.porzh.me" = { + extraConfig = '' + root * /var/www/goaccess + file_server browse + try_files {path} {path}/ /index.html + + ''; + }; + }; + }; +} +``` + + +## Et la suite ? + + + +Dans la deuxième partie, je montrerai comment aller plus loin : +- filtrer les IP du réseau local, +- générer des rapports **quotidiens, hebdomadaires et mensuels**, +- et pourquoi j’ai décidé de **ne pas** utiliser le mode “live”. +Parce que oui, même les stats méritent un peu de sobriété.