228 lines
5.3 KiB
Markdown
228 lines
5.3 KiB
Markdown
# 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@<server-ip>:~/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 <ip-adres>
|
|
```
|
|
|
|
### 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 <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>` |
|