From e7bd1de2519a772ce3118e1a0be6b9f401b4f828 Mon Sep 17 00:00:00 2001 From: DuN0z Date: Wed, 8 Oct 2025 22:47:32 +0200 Subject: [PATCH 1/2] 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é. From de4185a19f3176b25a3e3a90450cb35c4cfd7e1b Mon Sep 17 00:00:00 2001 From: DuN0z Date: Wed, 8 Oct 2025 22:48:00 +0200 Subject: [PATCH 2/2] Add: contre la montre --- content/posts/contre-la-montre.en.md | 36 ++++++++++++++++++++ content/posts/contre-la-montre.fr.md | 49 ++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 content/posts/contre-la-montre.en.md create mode 100644 content/posts/contre-la-montre.fr.md diff --git a/content/posts/contre-la-montre.en.md b/content/posts/contre-la-montre.en.md new file mode 100644 index 0000000..0245727 --- /dev/null +++ b/content/posts/contre-la-montre.en.md @@ -0,0 +1,36 @@ ++++ +date = '2025-10-09T00:45:44+02:00' +draft = false +tags = [ "running","watch" ] +title = 'Against the clock' ++++ + +I’m on my fourth run now. +And it feels better each time: I’ve found my easy pace, the one that lets me hold the distance without pain. My heart rate doesn’t spike as much, and I don’t have to stop nearly as often to walk. + +**All good, right?** + +Not for everyone. +There’s one who doesn’t agree: my Polar Pacer Pro. Run after run, it keeps scoring me lower and lower. + +**Why?** + +I honestly don’t know. Maybe it’s reading between the lines. + +Has nothing to do with running itself, but I haven’t been sleeping well lately. Choppy nights, built-up fatigue… Maybe that’s messing with my heart rate. Maybe that’s enough to throw the numbers off and make me look worse than I feel. Could be. + +Or maybe it’s just because I’m running shorter distances. + +**So, who should I trust?** + +The watch? +Or how I feel? + +I’ve chosen to trust my body. +Because at the end of the day, the watch still does one useful thing: it forces me to slow down. No red-zone cardio, no unconscious sprinting. Just a steady rhythm I can hold without suffering. + +If fatigue is skewing the numbers, then fine. That’s life. What matters isn’t impressing a watch. + +What matters is not getting injured, building consistency, and keeping the joy alive. + + diff --git a/content/posts/contre-la-montre.fr.md b/content/posts/contre-la-montre.fr.md new file mode 100644 index 0000000..527f8f5 --- /dev/null +++ b/content/posts/contre-la-montre.fr.md @@ -0,0 +1,49 @@ ++++ +date = '2025-10-09T00:45:44+02:00' +draft = false +tags = [ "running", "montre" ] +title = 'Quand la montre voit ce que je ne vois pas' ++++ + + +Mardi, j’étais persuadé d’avoir fait une bonne séance. +Je courais très lentement, je restais en endurance fondamentale, j’ai même réussi à tenir sans douleur. +Bref, je croyais que c’était une réussite. + +Sauf que… aujourd’hui, en comparant, je me rends compte que je me trompais complètement. + + +**Mardi, la séance trompeuse** + +Sur le moment, je pensais être « bien ». +Mais pour ne pas exploser mon cardio, j’ai dû ralentir à l’extrême : plus de 10 minutes au kilomètre, presque marcher. +Ma Polar m’a mis une note bof, et je me suis dit qu’elle exagérait. + +En réalité, j’étais simplement fatigué. Trop fatigué pour courir normalement. +La montre a mis le doigt dessus avant moi. + +**Aujourd’hui, la différence** + +Deux jours plus tard, j’ai couru dans les mêmes conditions. +Résultat : 1 km de plus en 30 minutes, une récupération après l’effort beaucoup plus rapide, et une sensation de facilité que je n’avais pas mardi. + +Preuve que ce jour-là, je tirais sur la corde sans le savoir. + + +**La vraie leçon** + +Ce que j’ai compris : la montre n’est pas un juge, mais un révélateur. +Elle ne « sanctionne » pas mes séances, elle me montre quand je suis dans le dur, même si je refuse de l’admettre. + +La fatigue ne se voit pas toujours. On croit aller bien, mais les chiffres disent le contraire. +Et dans ce cas, la meilleure chose à faire n’est pas de forcer, mais d’adapter. + + +**Ce que je retiens** + +Mieux vaut un footing à 10 minutes au kilomètre que pas de footing du tout. +Et parfois, accepter de ralentir, c’est justement ça qui permet de progresser sans se blesser. + +Alors oui, mardi j’ai cru être bien. +Mais c’est aujourd’hui que je réalise que j’ai eu raison de ralentir. +Pas pour la performance, mais pour la durée.