De beste remedies tegen downtime van je thuisserver
Je wilt natuurlijk dat je thuisserver soepel en stabiel draait. Dat begint met betrouwbare hardware, maar veel hangt ook af van hoe goed je het systeem onderhoudt, monitort en diagnosticeert. En van welke voorzorgsmaatregelen je hebt genomen tegen malware, hackers en plotse uitval. Het optimaal laten functioneren van een thuisserver vergt dus zorgvuldige planning en continue inspanning.
Na het lezen van dit artikel weet je welke technieken je kunt gebruiken om je thuisserver optimaal te laten functioneren:
- Monitoren
- Updaten
- Back-uppen/snapshots maken
- Logbestanden controleren
- Diagnosetools inzetten om netwerkproblemen te achterhalen
- Back-up/snapshot terugzetten
Lees ook: Efficiënt en kostenbesparend: zo bouw je je eigen energiezuinige server
Thuisgebruikers kiezen vaak oudere pc’s of singleboardcomputers zoals Raspberry Pi’s of Odroid XU4 voor hun serverbehoeften. Dit is prima, op voorwaarde dat de hardware voldoet: een processor die krachtig genoeg is, voldoende geheugen, betrouwbare opslag en een degelijke netwerkverbinding.
Technieken als virtualisatie (bijvoorbeeld met het gratis VirtualBox of baremetal ESXi) en het gebruik van containers (met tools zoals Docker, met Docker Compose en Portainer voor het beheer) maken het bovendien eenvoudig om meerdere servers op dezelfde hardware te draaien. In dit verband is ook het artikel over Proxmox VE interessant. Ook NAS-apparaten voor thuis- en kleinzakelijk gebruik, zoals de Synology DS224+ ondersteunen virtuele machines en containers.
1 Proactief en reactief
Het opzetten van een server mag dan misschien eenvoudig geworden zijn, maar helaas is het meestal geen handeling die je kunt starten en daarna compleet kunt vergeten. Tijdens het gebruik kunnen er namelijk uiteenlopende problemen optreden.
In dit artikel behandelen we verschillende technieken (zowel proactief als reactief) om je server optimaal te laten functioneren. We beginnen logischerwijs met proactieve maatregelen, met onder meer strategieën voor monitoring, updates, back-ups en beveiliging van je servers. In de tweede helft van dit artikel gaan we beknopt in op reactieve interventies, zoals loganalyse, netwerk- en systeemdiagnostiek en herstel.
Omdat de opzet en configuratie van een server sterk kunnen variëren, kunnen we helaas geen universeel stappenplan bieden, maar je kunt de voorgestelde technieken ongetwijfeld aanpassen aan je eigen situatie.
2 Monitoringtools
Het kan voorkomen dat een server niet meer reageert, dat de schijfruimte opraakt of dat er buitensporig veel systeembronnen worden gebruikt. Daarom is het verstandig om regelmatig controles uit te voeren met behulp van gespecialiseerde monitoringtools.
Enkele bekende namen zijn:
Nagios Core: beschikbaar voor Linux;
Prometheus: beschikbaar voor Linux en Windows, en goed te combineren met de visualisatietool Grafana;
Zabbix: beschikbaar voor Linux, maar met Windows-agents;
Netdata: multiplatform;
We gaan in op PRTG Network Monitor. Hoewel het geen opensource-software is, is deze tool gebruiksvriendelijk en zeer informatief. De PRTG Core-server draait uitsluitend op Windows, maar kan eventueel als virtuele machine worden geïnstalleerd. Er zijn wel diverse sensors beschikbaar voor Linux-omgevingen en je kunt eventueel een desktopapplicatie op Linux installeren. Er zijn meer dan tienduizend sensors beschikbaar en in de gratis versie kun je na een proeftijd van dertig dagen honderd sensors onbeperkt blijven gebruiken. Via deze link krijg je een overzicht van die sensors.
3 Apparaten in PRTG
Bij een Express-installatie scant PRTG automatisch je netwerk en worden alle gedetecteerde apparaten in je netwerk weergegeven. Bij het opstarten kunnen er twee beveiligingsaanbevelingen verschijnen: één om verbinding te maken met de webinterface via SSL/TLS en de andere om het standaardwachtwoord aan te passen. Als je later wijzigingen wilt aanbrengen, kun je dit doen met de meegeleverde applicatie PRTG Administration Tool.
Wanneer je later naar Apparaten / Alle gaat, vind je de netwerkapparaten onderverdeeld in categorieën zoals Netwerkinfrastructuur (bijvoorbeeld je router), Windows, Linux/macOS/Unix (inclusief je NAS, ip-camera’s en IoT-apparatuur) en Printers. Je kunt de detailniveaus van de weergave aanpassen met de knoppen S, M, L en XL.
Via een uitklapmenu bij Apparaten maak je ook zelf extra (sub)groepen en voeg je zelf desgewenst apparaten toe. Vooral bij Windows-clients kan het gebeuren dat de tool in eerste instantie beperkte informatie ophaalt. Controleer dan de instellingen van het betreffende apparaat via Bewerken / Instellingen. Schakel indien nodig de optie overerfd uit bij Inloggegevens voor Windows Systemen, zodat je zelf de Computernaam, Gebruikersnaam en Wachtwoord kunt invoeren.
Na een succesvolle scan van het apparaat zou je allerlei gegevens moeten zien onder Systeeminformatie. Als de informatie beperkt is, kun je voor troubleshooting-tips terecht op de Paessler-website.
4 Sensors en feedback
Bij elk apparaat wordt standaard een Ping-sensor geïnstalleerd. Aan de lokale ‘probe’, jouw PRTG-server, worden ook andere sensors toegevoegd, zoals Vrije Schijfruimte, Systeem Status en sensors die de netwerkadapter monitoren. Overbodige sensors verwijder je door in het contextmenu te kiezen voor Verwijderen / Object verwijderen.
Je kunt ook zelf sensors toevoegen via dit menu. Dit werkt het meest efficiënt als je eerst de juiste opties bovenaan in het blauwe vak selecteert, zoals Geheugen Gebruik of WMI. Kies een geschikte sensor, vul de vereiste informatie in en bevestig met Aanmaken. Of probeer het met Aanbevolen Sensoren.
Ga naar Sensoren en selecteer een sensor voor meer informatie. In de sectie Instellingen kun je de sensor gedetailleerd configureren. Het onderdeel Live gegevens geeft je realtime informatie. Bij Notificatie Triggers geef je aan wat er moet gebeuren bij een fout of een waarde-overschrijding. Om een en ander te testen, klik je in het contextmenu van een sensor op Simuleer foutstatus. Bij het onderdeel Alarmen vind je een overzicht van verzonden alarmmeldingen.
Om je server te koppelen aan de mobiele app van PRTG ga je naar Setup / Accountinstellingen / Mijn account en klik je op Toon QR-code voor PRTG App Login.
5 Updates
Het komt voor dat er veiligheidslekken, bugs of andere tekortkomingen worden ontdekt in servers of het onderliggende besturingssysteem die je kunt oplossen met de juiste updates of patches. Het is verstandig om eerst te achterhalen welke pakketten of systeembestanden worden bijgewerkt, verwijderd of toegevoegd, zodat je een beter inzicht krijgt in mogelijke problemen. Als vuistregel kun je het best een back-up maken voordat je updates installeert en de updates eerst in een (virtuele) testomgeving controleren. Als je toch de voorkeur geeft aan geautomatiseerde updates, is het raadzaam om deze te laten uitvoeren tijdens minder actieve uren.
Na het uitvoeren van belangrijke updates is het verstandig om de logbestanden te controleren (zie ook paragraaf 13). Controleer ook de rapporten van je monitoringsoftware op eventuele negatieve effecten op de functionaliteit of prestaties van je server.
Zorg altijd dat je een zogenoemde rollback kunt uitvoeren, voor het geval er iets misgaat tijdens het updateproces. Bij virtuele machines kun je hiervoor eerder gemaakte snapshots gebruiken. Voor fysieke systemen beschik je als het goed is over systeemsnapshots of -back-ups (zie ook paragraaf 8 tot 11). Eventueel kun je pakketten downgraden via je pakketmanager (zie ook paragraaf 6).
6 Updates (Windows)
Voor Windows-systemen gebruik je Windows Update. We raden aan om de optie Krijg de nieuwste updates zodra ze beschikbaar zijn uit te schakelen. Je kunt ook de functie Updates onderbreken instellen om updates twee weken te laten pauzeren, zodat je voldoende tijd hebt om aanstaande updates te bestuderen op een testsysteem.
Onder Geavanceerde opties schakel je de optie Mij waarschuwen als opnieuw opstarten vereist is om de update te voltooien in en bij Gebruikstijden stel je zelf de begin- en eindtijd in voor de periode waarin je systeem niet mag wordt herstart.
Overweeg een updatetool, zoals het gratis ABC-Update, die je meer controle geeft over wanneer en welke updates je wilt uitvoeren. Als het gaat om updates van (voornamelijk gratis en populaire) softwarepakketten, kun je Windows-pakketmanagers gebruiken, zoals WinGet (te downloaden vanuit de Microsoft Store) of Chocolatey. Je kunt alle in aanmerking komende programma’s tegelijk bijwerken met bijvoorbeeld:
winget upgrade --all
of
choco upgrade all
Er zijn nog veel andere handige opties beschikbaar. Bijvoorbeeld om een lijst te genereren van verouderde programma’s:
choco outdated
Of deze opdracht waarmee je een pakket juist ook kunt downgraden:
choco upgrade <pakketnaam> --version <versienummer>
7 Updates (Linux en NAS)
Linux heeft al geruime tijd de mogelijkheid om softwarepakketten (inclusief systeem- en kernelniveau) bij te werken dankzij de ingebouwde pakketmanagers. Hier zijn een aantal commando’s voor twee populaire Linux-distributies:
Debian:
sudo apt update
(controleren)
sudo apt upgrade
(updaten)
Red Hat (met DNF):
sudo dnf check-update
(controleren)
sudo dnf update
(updaten)
Een alternatieve optie is de Homebrew-pakketbeheerder, die vooral handig kan zijn als je ook macOS of WSL gebruikt, aangezien deze tool op alle drie de platformen vergelijkbaar werkt.
Als je servers op een NAS draait, is het raadzaam om de NAS zo te configureren dat je automatisch meldingen ontvangt in de vorm van pop-upmeldingen of e-mailberichten wanneer er updates beschikbaar zijn. In DSM van Synology kun je dit bijvoorbeeld instellen via Package Center / Instellingen / Algemeen. Op het tabblad Automatisch bijwerken geef je aan of en welke pakketten je automatisch wilt laten bijwerken, en voor welke updates dit moet gelden. Automatisch bijwerken is dus mogelijk, maar nog beter is het om regelmatig zelf te controleren op beschikbare updates en eerst de mogelijke implicaties te beoordelen.
RAID en hotspare In dit artikel hebben we het voornamelijk over softwarematige maatregelen, maar er zijn ook hardware-oplossingen beschikbaar om serveruitval te voorkomen. Zo is het bij een NAS standaard om minimaal twee schijven te gebruiken in een RAID-configuratie. Dit kan variëren van een eenvoudige mirrorkopie (RAID 1) naar een tweede schijf.
Bij drie schijven of meer zijn er ook geavanceerdere configuraties mogelijk, zoals RAID 5. Hierbij blijft één schijf beschikbaar voor gegevensopslag, waarbij één schijfcapaciteit wordt gebruikt voor pariteit. Ook veel desktopcomputers beschikken over een ingebouwde RAID-controller voor RAID 1, en soms ook RAID 5 of 10. Als alternatief kun je een externe RAID-controller aanschaffen, zoals de populaire LSI MegaRAID.
Idealiter ondersteunen zowel de RAID-controller als de schijven en connectors hot-swapping. Hierdoor kun je een defecte schijf vervangen zonder de server uit te schakelen, op voorwaarde dat automatisch een RAID-rebuild wordt gestart.
©Lost_in_the_Midwest - stock.adobe.com
8 Back-ups (virtueel)
Back-ups blijven de meest effectieve manier om serverdowntime en dataverlies te voorkomen. Afhankelijk van je serverconfiguratie kunnen back-ups variëren van configuratiebestanden tot databases of zelfs volledige systeemback-ups.
We bespreken kort enkele typische scenario’s, te beginnen met virtuele serveromgevingen. Hiervoor raden we aan om de ingebouwde snapshotfunctionaliteit van je hypervisor te gebruiken.
In VirtualBox gaat dit zeer eenvoudig. Zorg ervoor dat de virtuele machine niet in de opgeslagen status staat. Selecteer de machine en kies Snapshot / Snapshot nemen. Of gebruik het volgende opdrachtregelcommando:
vboxmanage snapshot "<naam-vm>" take "<naam-snapshot>" --description "<je-beschrijving>"
VMware Workstation Player heeft helaas geen ingebouwde snapshotfunctie, maar je kunt het wel handmatig doen. Noteer in de instellingen van je virtuele machine het pad bij Disk File. Sluit de tool af en kopieer de volledige inhoud van dit pad via Verkenner naar een lege map.
9 Back-ups (containers)
Ook snapshots van Docker-containers zijn mogelijk. Je kunt hiervoor een image maken met het commando:
docker commit [opties] <container-naam> <repository-naam>:<tag>
Vervolgens exporteer je het image met:
docker save -o <pad-naar-tar-bestand> <image-naam>:<tag>
Via de Docker-documentatie vind je een overzicht van de mogelijke parameters.
Houd er rekening mee dat elke commit-opdracht een laag aan het image toevoegt, waardoor de omvang sterk kan toenemen. Het kan dus verstandiger zijn om een dockerfile te gebruiken om specifieke wijzigingen vast te leggen, maar deze aanpak valt buiten de scope van dit artikel.
10 Back-ups (configuraties)
Vaak is het voldoende om alleen de configuratiebestanden van de server veilig te stellen, zodat je na een herinstallatie eenvoudig de gewenste status kunt herstellen.
In Linux zijn deze vaak te vinden in de map /etc/ of in het bestand /home/<naam>/.config, maar het is raadzaam om de documentatie van de gebruikte servers te raadplegen.
Je kunt bijvoorbeeld de mappen archiveren met een tar-commando, bijvoorbeeld:
tar czvf mijnbackup.tar.gz /doelmap/
Een andere optie is de populaire rsync-opdracht, bijvoorbeeld:
rsync -avz --delete /bronmap/ /doelmap/
Er zijn ook krachtigere (en toch gratis) programma’s beschikbaar voor het maken van back-ups van configuratie- en datamappen. Bijvoorbeeld:
BorgBackup: opdrachtregel voor Linux en macOS;
Restic: opdrachtregel voor Linux, macOS en Windows;
Duplicati 2.0: webinterface voor Linux, macOS en Windows.
11 Systeemsnapshots
Het kan gebeuren dat je systeem instabiel wordt, in veel gevallen kun je dit oplossen met systeemsnapshots. Windows heeft een ingebouwde functie voor het maken van herstelpunten. Typ herstelpunt in de Windows-zoekbalk en selecteer Een herstelpunt maken. Zorg dat achter het gewenste station in de kolom Beveiliging de waarde Ingeschakeld staat, klik op Maken en volg de verdere instructies. Je kunt dit ook doen via de Opdrachtprompt, opgestart als administrator:
wmic.exe /Namespace:\\root\default Path SystemRestore Call CreateRestorePoint "<naam-herstelpunt>", 100, 7
Voor Linux-gebruikers biedt Timeshift een vergelijkbare functionaliteit. Op Ubuntu bijvoorbeeld installeer je die tool als volgt:
Daarna kun je Timeshift starten vanuit je desktopomgeving. Bij het eerste gebruik moet je het snapshottype selecteren (meestal Rsync, tenzij je Btrfs gebruikt). Vervolgens klik je op de knop Maken. Het is ook mogelijk snapshots te plannen.
Je kunt eventueel ook de snapshot-functionaliteit van LVM (Logical Volume Manager) gebruiken of, indien beschikbaar, het Btrfs-bestandssysteem. Sommige Linux-distributies bieden de optie om Btrfs (en soms ook ZFS) te installeren. Met tools als Snapper kun je het beheer van deze snapshots automatiseren, maar we hebben helaas niet de ruimte om hier dieper op in te gaan.
12 Systeemback-ups
In sommige gevallen kan het wenselijk zijn een volledige back-up van je systeem te maken. Je kunt hiervoor de gratis Clonezilla-live-versie gebruiken. Download het iso-bestand voor je systeemarchitectuur en maak een live-bootstick met behulp van Rufus of het Linux-commando dd.
Start je systeem vanaf deze bootstick op en kies de optie Device-image […] om een image te maken. Je kunt trouwens ook een directe kloon naar een andere fysieke schijf maken via Device-device […]. Volg de verdere instructies op het scherm.
Voor Windows-gebruikers is Clonezilla ook beschikbaar, maar er zijn gebruiksvriendelijkere tools, zoals EaseUS Todo Backup Free. Selecteer Create Backup, kies de schijven die je wilt back-uppen en selecteer een geschikt doelmedium. Handig is dat je een live-herstelmedium op een usb-stick kunt maken en dat je een image kunt koppelen als een virtuele schijf, waardoor selectief bestandsherstel mogelijk is.
13 Logbestanden
Als je server trager werkt of zich anders gedraagt dan verwacht, controleer dan al eerste de logbestanden. Omdat veel afhangt van je eigen configuratie en de specifieke server(s) en besturingssystemen, is het moeilijk om specifieke instructies te geven.
Hoe dan ook, voor Linux vind je verschillende logbestanden in de map /var/log, zoals syslog (Debian/Ubuntu) of messages (CentOS/Red Hat). Deze logbestanden bevatten informatie van systeem-daemons als cron, van de kernel (ook in kern.log) en meer. In auth.log of secure vind je authenticatie- en login-informatie, terwijl /var/log/faillog mislukte inlogpogingen bijhoudt. Meldingen met betrekking tot het opstartproces worden opgeslagen in boot.log.
Specifiek wat servers betreft, kun je de logbestanden voor Apache-webserver vinden in /var/log/apache2/ of /var/log/httpd/, met name access.log en error.log. Voor MySQL-servers worden logs bewaard in /var/log/mysql[d].log en /var/log/mysql[d].err. Mailservices maken doorgaans gebruik van /var/log/mail.log. Op systemen met systemd (zoals Debian/Ubuntu) wordt de service journald gebruikt om logs te beheren. Je kunt deze benaderen met het commando journalctl. Hiermee worden meestal ook logs van services zoals nginx en apache weergegeven.
In Windows worden nagenoeg alle systeemgebeurtenissen vastgelegd via de module Logboeken. Je kunt deze raadplegen door met de rechtermuisknop op de Windows-startknop te klikken en Logboeken te selecteren.
14 Netwerk-diagnosetools
Als de logbestanden niet onmiddellijk het probleem onthullen, is het raadzaam om enkele diagnostische tools te gebruiken. Als je een netwerkprobleem vermoedt, kun je beginnen met hulpprogramma’s die beschikbaar zijn in zowel Linux als Windows: ping (om de netwerkconnectiviteit te controleren), traceroute (om de route te volgen die datapakketten nemen om een specifieke bestemming te bereiken), nslookup (om DNS-informatie op te vragen) en netstat (om een lijst van netwerkverbindingen, routeertabellen, interface-statistieken en meer te bekijken).
Voor Linux zijn er specifieke hulpprogramma’s zoals mtr (combinatie van traceroute en ping), dig (informatiever dan nslookup), en iftop (toont bandbreedtegebruik). In Windows kun je arp gebruiken om de ARP-cache te bekijken, terwijl het meer gebruikelijke equivalent in Linux het commando ip neighbor show is.
Voor Windows zijn er ook gebruiksvriendelijke alternatieven beschikbaar, zoals Axence netTools.
Om het daadwerkelijke netwerkverkeer, inclusief de onderliggende protocollen, te bestuderen, kun je het commando tcpdump in Linux gebruiken (er is een Windows-port genaamd windump) of je gebruikt de veelzijdige en gratis protocolanalyzer Wireshark.
15 Andere diagnosetools
Wil je achterliggende processen bekijken, dan kun je in Linux htop gebruiken voor een overzicht. Nog uitgebreider en ook visueler is btop, met onder meer grafieken van de in- en uitvoer van netwerk en schijven. Voor een overzicht van actieve processen en hun schijfactiviteit kun je iotop gebruiken. Als je de gezondheidsstatus van schijven wilt controleren op basis van S.M.A.R.T.-parameters, is er smartctl.
In Windows is er Taakbeheer (druk op Ctrl+Shift+Esc) met tabbladen als Processen, Prestaties en Details. Er zijn ook andere ingebouwde tools beschikbaar, zoals Broncontrole (resmon), Prestatiemeter (perfmon /report) en Betrouwbaarheidscontrole (perfmon /rel uit). Om die tools te starten, druk je Windows-toets+R om het venster Uitvoeren te openen en voer je de genoemde commando’s tussen haakjes uit.
Daarnaast kun je uitgebreide rapporten genereren met bepaalde opdrachtregelcommando’s. Voor het energieverbruik:
powercfg /energy
Voor een diagnose van je draadloze connecties:
netsh wlan show wlanreport
Er zijn ook forums waar je voor netwerk- en serverproblemen terechtkunt zoals ServerFault en StackExchange.
16 Herstel
Om je server weer optimaal operationeel te krijgen, hangt de benodigde actie uiteraard af van de aard van het vastgestelde probleem. In het ergste scenario, zet je een back-up terug.
Het terugzetten van een snapshot in VirtualBox is eenvoudig: selecteer de virtuele machine en het snapshot en klik op Terugzetten.
Als je een handmatige back-up van een virtuele machine hebt gemaakt in VMware Workstation Player, kun je deze als volgt activeren: start VMware op, kies File / Open en wijs het vmx-bestand aan in je back-upmap, zodat de bijbehorende machine wordt gestart (kies desgevraagd I copied it).
Voor een image dat is gemaakt met de opdracht docker commit zoek je eerst de juiste naam met de opdracht:
docker images
Daarna gebruik je dit image in een nieuwe container met de opdracht:
docker run -it <image-naam>
Als je het image hebt opgeslagen met de opdracht docker save, kun je hem herstellen met de opdracht:
docker load -i <pad-naar-tar-bestand>
De meeste andere vermelde back-uptools hebben een grafische interface en dan is het herstellen van een back-up vrij intuïtief. Bijvoorbeeld:
In Duplicati klik je op Herstellen;
Bij Timeshift klik je op Terugzetten;
Voor Windows-systeemherstel druk je op Windows-toets+R en voer je rstrui.exe uit;
Bij CloneZilla kies je Restore Disk of Restore an Image;
Bij Easeus Todo Backup selecteer je Browse to Recover.
Lees ook: Terug van weggewist: met deze tools herstel je verloren gewaande data
UPS Om uitval als gevolg van een stroomonderbreking of onstabiele stroomvoorziening te voorkomen, kun je een UPS (Uninterruptible Power Supply) aan je server koppelen. Belangrijke overwegingen zijn onder meer het vermogen (gemeten in watt of volt-ampère) en de bedrijfsmodus. Zo biedt een line-interactive UPS bescherming tegen zowel stroomuitval als spanningsschommelingen. Een voorbeeld van een degelijke en betaalbare UPS is de CyberPower BR700ELCD Line-Interactive 700VA (ongeveer 110 euro).
Weet wel dat een UPS over het algemeen slechts voldoende tijd biedt om je server correct af te sluiten om dataverlies te voorkomen en niet om de server gedurende langere periode in de lucht te houden. Als dit je doel is, moet je vaak nog andere apparaten zoals een router, switch en aan de UPS koppelen.