# Onderhoudsplan — iso27diy.com VPS & analytics stack ## Dagelijks (geautomatiseerd) Niets te doen — de volgende zaken lopen automatisch: - fail2ban monitort SSH-pogingen en blokkeert aanvallers - Docker herstart Umami en PostgreSQL bij crashes (`restart: always`) - Nginx en fail2ban herstarten automatisch na een server-reboot (`systemctl enable`) - Let's Encrypt vernieuwt het SSL-certificaat automatisch via Certbot --- ## Wekelijks (~10 minuten) ### Services controleren ```bash # Nginx en fail2ban sudo systemctl status nginx fail2ban # Umami en PostgreSQL cd ~/umami && docker compose ps ``` Wat je wil zien: `active (running)` voor systemd-services, `running` voor Docker containers. ### fail2ban activiteit bekijken ```bash sudo fail2ban-client status sshd ``` Veel bans op korte tijd kan wijzen op een gerichte aanval — overweeg dan `bantime` te verhogen in `jail.local`. ### Schijfruimte controleren ```bash df -h ``` Let op de partitie waar `/` op staat. Bij meer dan 80% gebruik actie ondernemen (logs opruimen, Docker images opschonen). ### Docker logs vluchtig controleren ```bash cd ~/umami && docker compose logs --since 24h umami ``` Zoek naar foutmeldingen of crashes. --- ## Maandelijks (~30 minuten) ### Systeemupdates installeren ```bash sudo apt update && apt list --upgradable sudo apt upgrade -y ``` Herstart daarna de server als de kernel geüpdatet is: ```bash sudo reboot ``` Controleer na herstart of alle services weer draaien (zie wekelijkse check). ### Umami updaten ```bash cd ~/umami docker compose pull docker compose up -d ``` ### Database backup maken ```bash docker compose exec db pg_dump -U umami umami > \ ~/umami/backup-$(date +%Y%m%d).sql ``` Kopieer de backup naar een externe locatie (lokale machine of cloud opslag): ```bash # Vanaf je lokale machine: scp deploy@:~/umami/backup-$(date +%Y%m%d).sql ~/backups/ ``` Verwijder oude backups op de server (bewaar de laatste 3): ```bash ls -t ~/umami/backup-*.sql | tail -n +4 | xargs rm -f ``` ### SSL-certificaat controleren ```bash sudo certbot renew --dry-run ``` Dit simuleert vernieuwing zonder het certificaat daadwerkelijk te vervangen. Als het slaagt, is automatische vernieuwing correct ingesteld. Vervaldatum handmatig inzien: ```bash sudo certbot certificates ``` ### Nginx-logs bekijken op verdacht verkeer ```bash sudo tail -n 100 /var/log/nginx/access.log sudo tail -n 50 /var/log/nginx/error.log ``` Veel 404-verzoeken op vreemde paden (bijv. `/wp-admin`, `/.env`) zijn normaal scannerverkeer — fail2ban pakt dit gedeeltelijk af. Bij aanhoudend verkeer van één IP kun je dat handmatig blokkeren: ```bash sudo ufw deny from ``` ### Docker opschonen Ongebruikte images en containers stapelen zich op en verbruiken schijfruimte: ```bash docker system prune -f ``` --- ## Kwartaal (~1 uur) ### UTM campagnes updaten - Voeg nieuwe campagnewaarden toe aan het UTM-scheme (nieuwe kwartaalcodes) - Archiveer verlopen campagnes in de UTM tracker spreadsheet (status → `archived`) - Controleer in Umami welke bronnen en campagnes het meest verkeer opleveren ### Wachtwoorden roteren - Umami admin-wachtwoord wijzigen via **Settings → Profile** - Overweeg het database-wachtwoord in `docker-compose.yml` te roteren (vereist herstart van de stack) ### Firewall-regels reviewen ```bash sudo ufw status verbose ``` Verwijder regels die niet meer nodig zijn. ### Serverresources evalueren ```bash # CPU en geheugen htop # Schijfruimte per map du -sh ~/umami/* sudo du -sh /var/log/* ``` Bij structureel hoog geheugen- of CPU-gebruik: overweeg een groter Hostinger-pakket. --- ## Bij incidenten ### Service ligt plat ```bash # Herstart individuele service sudo systemctl restart nginx sudo systemctl restart fail2ban cd ~/umami && docker compose restart ``` ### Umami dashboard niet bereikbaar Controleer in volgorde: 1. Draaien de Docker containers? → `docker compose ps` 2. Luistert Nginx? → `sudo systemctl status nginx` 3. Klopt de DNS? → `dig analytics.iso27diy.com` 4. Is het SSL-certificaat geldig? → `sudo certbot certificates` ### Database herstellen vanuit backup ```bash cd ~/umami docker compose stop umami docker compose exec db psql -U umami -c "DROP DATABASE umami;" docker compose exec db psql -U umami -c "CREATE DATABASE umami;" docker compose exec -T db psql -U umami umami < backup-YYYYMMDD.sql docker compose start umami ``` ### Jezelf buitengesloten via fail2ban Doe dit vanaf een andere internetverbinding (bijv. mobiel): ```bash sudo fail2ban-client set sshd unbanip ``` --- ## Handige commando's — spiekbriefje | Wat | Commando | |-----|----------| | Services checken | `sudo systemctl status nginx fail2ban` | | Docker containers checken | `cd ~/umami && docker compose ps` | | Schijfruimte | `df -h` | | fail2ban status | `sudo fail2ban-client status sshd` | | Umami logs | `cd ~/umami && docker compose logs -f umami` | | Nginx logs | `sudo tail -n 100 /var/log/nginx/access.log` | | Database backup | `docker compose exec db pg_dump -U umami umami > backup-$(date +%Y%m%d).sql` | | Systeem updaten | `sudo apt update && sudo apt upgrade -y` | | Umami updaten | `cd ~/umami && docker compose pull && docker compose up -d` | | Docker opschonen | `docker system prune -f` | | IP blokkeren | `sudo ufw deny from ` | | IP deblokkeren (fail2ban) | `sudo fail2ban-client set sshd unbanip ` |