31 marzo 2026 · 10 min lettura
Self-HostingLa cloud sovranità europea è sovereignty washing: i datacenter sono in UE, le chiavi restano a Seattle. Gaia-X è fallito, NIS2 stringe. Il homelab risponde.
Self-Hosting900k siti WordPress esposti a RCE critico, 500k a file read su wp-config.php. Se ospiti WordPress in homelab o su VPS, ecco cosa fare nei prossimi 30 minuti.
Self-HostingIscriviti alla newsletter per ricevere i migliori articoli direttamente nella tua inbox.
Da YNAB a Google Photos, ogni SaaS che usi ha un'alternativa self-hosted su PikaPods a meno di $6 al mese. 10 confronti con prezzi reali.
Quanti dati ho perso in tre mesi senza analytics? Non lo so. Questo è il punto. Plausible self-hosted sul mio Proxmox ha smesso di dare segni di vita a gennaio, e io ho fatto quello che fa ogni homelabber con 14 container LXC e 3 subnet da gestire: ho procrastinato.
PikaPods mi ha svoltato la giornata. Cinque minuti, tre click, e Matomo girava con analytics funzionanti. Niente terminale, niente Docker, niente YAML. $3,38 al mese per un'istanza Matomo completa in EU con SSL, backup automatici e aggiornamenti gestiti. Dopo tre mesi al buio, avevo di nuovo i numeri. Questa è la storia di come ci sono arrivato.
Plausible in self-hosting richiede ClickHouse più il runtime Elixir. Due bestie affamate di risorse che, nel mio caso, hanno deciso di litigare dopo un aggiornamento. Il risultato: dashboard vuota, eventi che non arrivano, log incomprensibili. La soluzione corretta era debug, rollback, forse ricostruire il container da zero.
Non l'ho fatto.
Avevo appena finito di migrare 3 subnet su NetBird VPN, il blog stava crescendo, e le analytics erano in fondo alla lista delle priorità. Tipo: sotto "riordinare i cavi del rack", che è già sotto "lavare il gatto". Il problema delle analytics rotte è che non urlano. Non ti svegliano alle 3 di notte con un alert. Semplicemente smettono di esistere, e tu smetti di guardare.
Cercavo un'alternativa che non mi costringesse ad aprire un terminale. Matomo lo conoscevo di nome — 21.400 stelle su GitHub, 790 release, usato dall'1,5% di tutti i siti web secondo W3Techs. Il problema era sempre stato lo stesso: MySQL, PHP, cron job per l'archiviazione, reverse proxy, certificati SSL. Roba che so fare, ma che non avevo voglia di fare. Non per Analytics.
Poi ho scoperto che PikaPods aveva Matomo nel catalogo. PikaPods è una piattaforma di hosting gestito con oltre 170 app open source — Matomo, Uptime Kuma, Immich, Vaultwarden, Nextcloud, e decine di altri. Paghi solo le risorse che usi, niente abbonamenti fissi, e il 20% del fatturato va direttamente agli sviluppatori dei progetti. Rispetto a un VPS da $5 su Hetzner, PikaPods ti toglie di mezzo backup, aggiornamenti di sicurezza, SSL e monitoring: tu apri l'app e lavori. Il tempo che risparmi vale più dei $3 al mese.
La procedura è quasi imbarazzante da descrivere. Cerchi "Matomo" nel catalogo, scegli un nome per il pod (io: homelabzcc), selezioni la regione EU, confermi.

Le risorse di partenza: 0.5 CPU, 0.5 GB di RAM, 5 GB di storage. Costo: $2,04 al mese. Due dollari. Meno di un caffè al bar sotto casa (che peraltro fa un caffè discutibile).

PikaPods assegna un sottodominio automatico. Il mio: homelabz.pikapod.net. SSL incluso, zero configurazione. Ho aperto l'URL, fatto il wizard iniziale di Matomo (nome sito, timezone, tracking code), e la dashboard era già lì. Matomo 5.8.0, ultima release di marzo 2026.

Matomo non è leggero. È un'applicazione PHP con MySQL sotto, e la community lo dice chiaro: anche con 10.000 visite al giorno mette pressione sul database. Con 0.5 GB di RAM il pod partiva, ma era lento. Ho portato la RAM a 2 GB e la situazione è cambiata subito. Costo finale: $3,38 al mese per 0.5 CPU, 2 GB RAM, 5 GB storage.


$3,38/mese per Analytics GDPR compliant, senza manutenzione. Prova PikaPods gratis — scegli tra 150+ app open source, deploy in EU, paghi solo quello che usi.
Ecco il problema che nessuno ti dice quando scegli una soluzione analytics: il 32,5% degli utenti internet a livello globale usa un ad-blocker. Sono 912 milioni di persone nel mondo. Tra gli sviluppatori e i professionisti IT — il mio target — la percentuale sale al 50-60%. Significa che senza contromisure, stai guardando la metà del traffico reale e prendendo decisioni sulla base di dati dimezzati.
La soluzione: un proxy first-party. Due API route in Next.js che servono lo script di tracking e ricevono gli eventi come se fossero risorse del sito. L'ad-blocker vede una richiesta verso /api/analytics/script sul tuo dominio e la lascia passare. Nessuna lista di blocco la intercetta.
// app/api/analytics/script/route.ts
import { NextResponse } from 'next/server';
export async function GET() {
const res = await fetch(
'https://homelabz.pikapod.net/matomo.js'
);
const script = await res.text();
return new NextResponse(script, {
headers: {
'Content-Type': 'application/javascript',
'Cache-Control': 'public, max-age=86400',
},
});
}// app/api/analytics/event/route.ts
import { NextRequest, NextResponse } from 'next/server';
export async function POST(req: NextRequest) {
const body = await req.text();
const res = await fetch(
'https://homelabz.pikapod.net/matomo.php',
{
method: 'POST',
body,
headers: {
'Content-Type': req.headers.get('Content-Type') || '',
'X-Forwarded-For':
req.headers.get('x-forwarded-for') || '',
},
}
);
return new NextResponse(null, { status: res.status });
}Next.js con App Router è una SPA: le navigazioni client-side non generano nuove richieste al server. Senza tracking SPA, Matomo vede solo il primo pageview. La soluzione è un hook con usePathname() che notifica Matomo a ogni cambio di route.
// components/analytics.tsx
'use client';
import { usePathname } from 'next/navigation';
import { useEffect } from 'react';
declare global {
interface Window { _paq?: unknown[][]; }
}
export function Analytics() {
const pathname = usePathname();
useEffect(() => {
const _paq = (window._paq = window._paq || []);
_paq.push(['disableCookies']);
_paq.push(['setTrackerUrl', '/api/analytics/event']);
_paq.push(['setSiteId', '1']);
// Carica lo script proxy
const s = document.createElement('script');
s.src = '/api/analytics/script';
s.async = true;
document.head.appendChild(s);
}, []);
useEffect(() => {
// SPA tracking: notifica Matomo ad ogni navigazione
const _paq = window._paq;
if (_paq) {
_paq.push(['setCustomUrl', pathname]);
_paq.push(['trackPageView']);
}
}, [pathname]);
return null;
}I dati mostrano che un proxy first-party recupera dal 10 al 30% di eventi Analytics in più. Con un pubblico tech, dove gli ad-blocker sono la norma, quel 30% fa la differenza tra avere dati affidabili e navigare a vista.
Una riga di codice:
_paq.push(['disableCookies']);Questa istruzione disabilita tutti i cookie di Matomo. Al loro posto, Matomo usa un config_id: un hash temporaneo basato su sistema operativo, browser, plugin installati, IP e lingua. Dura massimo 24 ore. Non è un cookie persistente, non identifica un utente nel tempo, non fa tracking cross-sito.
La questione legale merita un paragrafo a parte. La CNIL francese esenta esplicitamente Matomo dal consenso cookie, a patto che la finalità sia "strictly limited to the sole measurement of the audience", i dati non vengano trasmessi a terzi, e la retention non superi i 25 mesi. Il Garante Privacy italiano segue la stessa linea: analytics senza consenso se non permettono l'identificazione diretta, con IP mascherato almeno al quarto ottetto.
Google Analytics non qualifica. I dati transitano sui server Google e alimentano il loro ecosistema pubblicitario — Francia e Austria lo hanno già dichiarato non conforme al GDPR. Matomo cookieless, con dati che restano sul tuo server (o su PikaPods in EU), sì.
Il trade-off c'è: senza cookie, perdi la capacità di riconoscere i visitatori di ritorno con precisione e il tracking cross-sessione a lungo termine. Per un blog tech che vuole capire quante persone leggono cosa, è un compromesso più che accettabile. Ho aggiornato la Privacy Policy lo stesso giorno del deploy. Trasparenza anche quando non è obbligatoria.
Il confronto che mi ha convinto. E che probabilmente convince anche te, se gestisci un homelab con Proxmox e stai valutando le opzioni.
Il conto è semplice. Matomo Cloud a €22/mese significa €264 all'anno. Matomo su PikaPods a $3,38/mese significa circa $40 all'anno — risparmio dell'88%. E il prodotto è identico: stessa versione di Matomo, stesse feature, stessi report. La differenza è che con PikaPods paghi risorse reali, non un abbonamento SaaS con margini del 600%.
Due cose sulla lista. La prima: mettere Authentik SSO davanti alla dashboard Matomo. Adesso è protetta dalla password di Matomo, ma voglio un layer di autenticazione in più con 2FA. La seconda: aggiungere Uptime Kuma su PikaPods — monitoring esterno del homelab, perché il monitoring non puoi hostarlo nello stesso rack che deve monitorare. Dopo quello: Immich per le foto e Vaultwarden per le password. Tutto su PikaPods, tutto sotto i $10 al mese in totale per monitorare dall'esterno che il pod sia sempre raggiungibile. Se le Analytics si rompono di nuovo, voglio saperlo in minuti, non in mesi.
Ho passato tre mesi senza sapere chi leggeva il blog. Tre mesi di decisioni editoriali alla cieca, di contenuti pubblicati senza sapere se qualcuno li apriva. Adesso ho una dashboard che funziona, costa meno di un abbonamento Netflix, non piazza cookie sul browser di nessuno, e tiene i dati in Europa.
$3,38 al mese. Cinque minuti di setup. A volte la soluzione migliore — Matomo self-hosted su PikaPods — è quella che non richiede di aprire un terminale.
Fonti: Matomo GitHub, W3Techs Market Share, Matomo Pricing, PikaPods, Matomo ePrivacy & CNIL, Ad-Blocker Statistics 2026, Ad-Blocker Analytics Impact