DanpLab.com: come ho costruito il mio sito con AI, chatbot e pubblicazione automatica
2026-05-31T10:00:00.000Z
L'architettura del progetto
Questo sito è molto più di un semplice portfolio. È un sistema integrato che combina:
danplab.com (Next.js)
├── Blog con pubblicazione automatica
│ ↑
│ Hermes Agent (Jarvis su Discord)
│ ├── Analizza trend (SearXNG)
│ ├── Controlla analytics (Matomo)
│ └── Genera e pubblica articoli via SSH
│
├── Chatbot AI self-hosted
│ └── Ollama (glm-5:cloud) su GPU NVIDIA A10
│
├── Analytics privacy-first
│ └── Matomo self-hosted
│
└── Form contatto → Discord DM
Stack tecnologico
| Componente | Tecnologia | Server | |-----------|-----------|--------| | Frontend | Next.js 14 (App Router) | LAN-IP | | Chatbot AI | Ollama + glm-5:cloud | LAN-IP (GPU) | | Agent AI | Hermes Agent (Nous Research) | LAN-IP | | Analytics | Matomo self-hosted | Docker su LAN-IP | | Ricerca trend | SearXNG self-hosted | LAN-IP | | Tunnel pubblico | Cloudflare Tunnel | Cloudflare Edge | | OS | Debian 12 / Ubuntu 22.04 | Proxmox VE |
Hermes Agent: il cervello del sistema
Hermes (by Nous Research) è un agente AI autonomo che gira 24/7 sul server homelab-server. È configurato su Discord dove posso interagire con lui in linguaggio naturale.
Cosa fa Hermes automaticamente
Ogni lunedì alle 08:00:
- Interroga SearXNG per i topic IT più cercati in Italia e nel mondo
- Controlla Matomo per vedere quali articoli hanno più traffico
- Sceglie 1-2 topic ad alto potenziale SEO
- Genera un articolo tecnico completo (800+ parole)
- Lo pubblica via SSH su danplab.com
- Triggera il rebuild di Next.js
- Mi notifica su Discord con il link
Comandi Discord
# Pubblica articolo su topic specifico
Jarvis, scrivi una guida su "Proxmox Backup Server"
# Analizza trend della settimana
Jarvis, quali sono i topic IT più cercati questa settimana?
# Aggiorna il sito
Jarvis, rebuilda il sito
Chatbot AI: privacy-first
Il chatbot in basso a destra risponde solo a domande tecniche IT usando un modello AI che gira completamente sul mio hardware. Nessun dato esce dall'infrastruttura.
Come funziona
Visitatore scrive domanda
↓
API Next.js /api/chat
↓ (sanitizzazione input, rate limiting)
Ollama API (LAN-IP:11434)
↓ (glm-5:cloud via GPU NVIDIA A10)
Risposta sanitizzata
↓
Visitatore riceve risposta
Sicurezza implementata
- Input sanitization — blocca prompt injection, XSS, IP interni
- Output filtering — filtra password, token, path di sistema
- Rate limiting — max 10 messaggi/ora per IP
- Timeout 30s — evita richieste pendenti infinite
- System prompt blindato — risponde solo su topic IT
Pubblicazione automatica
Il workflow di pubblicazione usa un semplice webhook HTTP:
# Webhook sul server (porta 9876)
# POST /rebuild con header X-Webhook-Token
# Hermes chiama:
curl -X POST http://LAN-IP:9876/rebuild \
-H "X-Webhook-Token: <token>" \
&& next build \
&& systemctl restart danplab-site
Script di rebuild
#!/bin/bash
# /usr/local/bin/danplab-rebuild.sh
cd /var/www/danplab-site
sudo -u admin node_modules/.bin/next build >> /var/log/danplab-rebuild.log 2>&1
systemctl restart danplab-site
echo "$(date): rebuild completato" >> /var/log/danplab-rebuild.log
Matomo Analytics
Uso Matomo self-hosted invece di Google Analytics perché:
- GDPR compliant senza banner cookie invasivi
- Dati sul mio server — non li vende nessuno
- Funzionalità complete — heatmap, funnel, segmenti
Matomo è accessibile su matomo.danplab.com via Cloudflare Tunnel.
Tracking su Next.js
// app/layout.tsx
<Script id="matomo" strategy="afterInteractive" dangerouslySetInnerHTML={{ __html: `
var _paq = window._paq = window._paq || [];
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u='//matomo.danplab.com/';
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '1']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();
`}} />
Internazionalizzazione (i18n)
Il sito è disponibile in italiano (default) e inglese con rilevamento automatico dalla geolocalizzazione:
- Visitatori italiani →
danplab.com(IT) - Visitatori internazionali →
danplab.com/en(EN)
Tecnologia: next-intl con middleware Cloudflare per geo-detection tramite header CF-IPCountry.
Cosa ho imparato
Costruire questo progetto mi ha insegnato che l'AI self-hosted non è solo un hobby — è un vantaggio competitivo concreto:
- Controllo totale sui dati e sul comportamento del sistema
- Costo marginalissimo — solo elettricità e hardware già posseduto
- Personalizzazione — il chatbot conosce il mio profilo e i miei articoli
- Automazione reale — Hermes pubblica contenuti mentre dormo
Il codice sorgente e la configurazione sono disponibili su richiesta per chi vuole replicare il setup.
Prossimi sviluppi
- [ ] Newsletter con lead generation dal chatbot
- [ ] Prenotazione consulenze via Calendly integrato
- [ ] RAG — chatbot che risponde citando i miei articoli
- [ ] Multi-lingua completa anche per gli articoli del blog
- [ ] Dashboard admin per pubblicazione articoli senza Discord