iso27diy-corp/business-server/VPS administration.md
2026-06-06 20:38:07 +02:00

5.3 KiB

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

# 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

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

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

cd ~/umami && docker compose logs --since 24h umami

Zoek naar foutmeldingen of crashes.


Maandelijks (~30 minuten)

Systeemupdates installeren

sudo apt update && apt list --upgradable
sudo apt upgrade -y

Herstart daarna de server als de kernel geüpdatet is:

sudo reboot

Controleer na herstart of alle services weer draaien (zie wekelijkse check).

Umami updaten

cd ~/umami
docker compose pull
docker compose up -d

Database backup maken

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):

# Vanaf je lokale machine:
scp deploy@<server-ip>:~/umami/backup-$(date +%Y%m%d).sql ~/backups/

Verwijder oude backups op de server (bewaar de laatste 3):

ls -t ~/umami/backup-*.sql | tail -n +4 | xargs rm -f

SSL-certificaat controleren

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:

sudo certbot certificates

Nginx-logs bekijken op verdacht verkeer

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:

sudo ufw deny from <ip-adres>

Docker opschonen

Ongebruikte images en containers stapelen zich op en verbruiken schijfruimte:

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

sudo ufw status verbose

Verwijder regels die niet meer nodig zijn.

Serverresources evalueren

# 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

# 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

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):

sudo fail2ban-client set sshd unbanip <jouw-ip>

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>
IP deblokkeren (fail2ban) sudo fail2ban-client set sshd unbanip <ip>