Je thuisserver beheren: alles wat je wilt weten over Proxmox VE
Heb je een mooie thuisserver gebouwd, dan wil je deze niet alleen flexibel van allerlei software voorzien, maar ook het beheer goed voor elkaar hebben. Proxmox VE is een goede optie. In tegenstelling tot de meeste concurrenten is het gratis te gebruiken. Er is wel een kleine leercurve. Maar als je dit artikel volgt, heb je de grootste stap al gezet.
In dit artikel vertellen we je hoe je je thuisserver met de gratis software Proxmox VE kunt beheren.
Ook interessant: Zo zet je in een handomdraai je eigen virtual private server op
Het lichtgewicht virtualisatieplatform Proxmox VE wint aan populariteit. Met Debian als basis, heet het ook wel een type2-hypervisor. Met het uitkomen van versie 8.0 is Proxmox VE bijgewerkt naar Debian 12 (codenaam Bookworm). De hardware-ondersteuning is zeer breed. Ook voor een kleine en zuinige server met bijvoorbeeld het Intel Jasper Lake- of Alder Lake-platform is Proxmox VE geschikt. De recente kernel verhelpt enkele problemen op systemen met bijvoorbeeld de Celeron N5105-processor. Heb je meer eisen, dan kun je het natuurlijk voor een zwaardere server of zelfs een cluster inzetten.
Qua virtualisatie kun je binnen Proxmox VE zowel lichtgewicht Linux-containers maken (LXC) als virtuele machines (KVM). Een container geeft je een geïsoleerde Linux-server met opdrachtprompt. In een virtuele machine kun je een volledig besturingssysteem als Linux (met desktopomgeving), Windows of macOS installeren. Je kunt natuurlijk ook met Docker werken, zowel op de host zelf als in een container of virtuele machine. Proxmox VE is opensource en alle mogelijkheden zijn gratis te gebruiken. We laten in dit artikel zien hoe je het installeert en gebruikt.
Oefenen met Proxmox VE in VirtualBox Wil je oefenen met Proxmox VE, dan kun je het bijvoorbeeld binnen VirtualBox onder Windows installeren. Voor een productieomgeving is dat minder geschikt.
Het is fijn als je wat extra rekenkernen en geheugen hebt. Zorg ook dat virtualisatie voor je processor actief is in de bios voor jouw pc. Let verder goed op de configuratie van je virtuele machine voor Proxmox VE. Vink bij Systeem / Processor de optie Geneste VT-x/AMD-V inschakelen aan. Bij Netwerk / Adapter 1 kies je achter Gekoppeld aan liefst voor Bridged adapter. Selecteer dan achter Naam de netwerkadapter in jouw pc met een vaste netwerkaansluiting.
Belangrijk is dat je vervolgens onder Geavanceerd bij de optie Promiscuous-modus kiest voor Alle toestaan. Alleen dan kan verkeer voor je containers en virtuele machines (met een eigen, afwijkend MAC-adres) de netwerkadapter passeren.
1 Installatie
Voor de installatie kun je met Rufus een usb-stick van minimaal 2 GB met de laatste versie van Proxmox VE prepareren. Het iso-bestand vind je op deze site. De installatie is vrij rechttoe rechtaan. Je kiest onder meer de gewenste schijf (of schijven) met bestandsindeling, waarbij je naast het voor Linux vertrouwde Ext4 ook modernere opties als ZFS en Btrfs hebt. Verder geef je een ip-adres voor de host en wachtwoord voor de root-gebruiker op. Eventueel kun je Proxmox VE op een eigen schijf installeren. Voeg in dat geval na de installatie een tweede schijf toe voor de opslag van containers en virtuele machines.
Na de installatie log je in bij de webinterface als root met het gekozen wachtwoord. Denk vooraf na over de reeks ip-adressen voor de host en toekomstige containers en virtuele machines. Het netwerk dat wij gebruikten voor dit artikel heeft een ip-bereik van 10.0.10.1 t/m 10.0.10.255. Voor de host gebruiken we 10.0.10.30, voor de containers 10.0.10.31 t/m 10.0.10.39 en voor de virtuele machines 10.0.10.40 t/m 10.0.10.49. Dat heeft deels met de nummering te maken, zie ook paragraaf 10 en het kader ‘CIDR-notatie in netwerkinstellingen’.
2 Webinterface
Na het inloggen zie je onder Datacenter alle hosts. Hier werken we met één host genaamd pve, maar een cluster met meerdere systemen is zeker mogelijk en kun je handig centraal beheren. Clusters stellen wel hogere eisen aan je systemen, afhankelijk van je verdere wensen, zoals gedeelde opslag, hoge beschikbaarheid of live migratie. Klik je op Datacenter, dan zie je rechts veel opties gerelateerd aan clusters, maar ook enkele opties voor onze enkele host. Zo kun je externe opslag koppelen onder Storage (paragraaf 4) en een back-uptaak maken onder Backup (paragraaf 16).
De meeste tijd werken we op het niveau Datacenter / pve. Daar kun je alle relevante opties voor de host instellen, en ook containers en virtuele machines beheren.
3 Pakketbronnen en updates
Naast updates voor Debian zijn ook updates voor Proxmox VE nodig. Standaard raadpleegt Proxmox VE daarbij de zogenoemde enterprise-repository’s. Deze pakketbronnen vereisen echter een abonnement.
Er is ook een gratis te gebruiken repository voor test- en niet-productieomgevingen genaamd No-Subscription. De updates zijn minder grondig getest, maar dit geeft in de praktijk eigenlijk nooit een probleem. We verwijderen eerst de twee enterprise-repository’s. Ga daarvoor naar Datacenter / pve en kies onder Updates voor Repositories. Klik op de repository genaamd https://enterprise.proxmox.com/debian/ceph-quincy en klik op Disable. Doe hetzelfde voor https://enterprise.proxmox.com/debian/pve. Klik dan op Add en kies No-Subscription.
Om de eerste updates te installeren, ga je naar Updates en kies je Refresh. Je ziet nu een lijst met updates. Klik op Upgrade om ze te installeren. Afhankelijk van de aard van de updates kan het nodig zijn het systeem te herstarten. Dit doe je via de knop Reboot.
Opdrachtprompt voor je server Je zult de opdrachtprompt niet vaak nodig hebben om aanpassingen aan bijvoorbeeld de configuratie van de server te maken. Vrijwel alles kun je via de webinterface instellen. Maar heb je het toch een keer nodig, dan kun je eenvoudig deze opdrachtprompt openen door onder Datacenter / pve voor Shell te kiezen. Dit geeft je direct toegang tot het Debian-besturingssysteem dat de basis voor Proxmox VE vormt.
4 Opslag
Onder Datacenter / Storage zie je welke opslag is geconfigureerd voor welke content. Standaard worden bij de installatie local en local-lvm aangemaakt. Daarbij wordt local gebruikt voor container-templates en iso-images, terwijl local-lvm dient voor de opslag van virtuele harde schijven van virtuele machines en voor gegevens van containers.
Je kunt hier extra opslagbronnen aan toevoegen. De opties NFS en SMB/CIFS zijn heel praktisch voor het koppelen van een NAS, zoals Synology of QNAP. Op de NAS kun je onder meer iso-bestanden neerzetten om te gebruiken voor virtuele machines. Ook kun je de NAS als back-upbestemming gebruiken.
Voor het koppelen zal NFS vaak de voorkeur krijgen. Het is meer op Linux toegespitst en ook iets makkelijker te gebruiken. Dat laten we in de volgende paragraaf zien.
Meer opslagruimte nodig?
Een NAS is goed te gebruiken als opslaglocatie voor je server
5 Synology-NAS koppelen
Als voorbeeld gaan we een Synology-NAS koppelen via NFS. Open de webinterface van DSM (DiskStation Manager) en open het configuratiescherm. Zorg dat NFS is geactiveerd onder Bestandsservices op het tabje NFS.
Ga dan naar Gedeelde map. Maak indien gewenst een nieuwe map. Zorg er bij het instellen van de gebruikersmachtigingen voor dat je in ieder geval zelf toegang hebt. Dan kun je straks zelf de bestanden raadplegen, zoals back-ups en iso-bestanden.
De toegang voor Proxmox VE regelen we op een andere manier. Selecteer daarvoor de bewuste map en kies Bewerken. Ga naar het tabje NFS-machtigingen en klik op Maken. Vul achter Hostnaam of IP het ip-adres in van de server met Proxmox VE. De overige opties hoef je niet te wijzigen. Bewaar de veranderingen. In de volgende paragraaf gaan we deze opslag toevoegen in Proxmox VE.
6 Opslag toevoegen in Proxmox VE
Ga in Proxmox VE naar Datacenter / Storage en kies Add / NFS. Vul achter ID een beschrijvende naam in, zoals vmopslag. Bij Server vul je het ip-adres van je NAS in. Klik op Export en kies de hiervoor aangemaakte map op de NAS. Bij Content kun je kiezen wat er op de NAS opgeslagen mag worden. We selecteren de opties ISO image, Container template en VZDump backup file.
Gebruik je deze opslag voor back-ups, dan kun je op het tabblad Backup Retention eventueel instellen hoeveel back-ups bewaard moeten worden. Klik als je klaar bent op Add. Links onder Datacenter / pve zie je nu de zojuist toegevoegde opslag. Als je erop klikt, kun je op die locatie door de inhoud bladeren.
7 Templates voor containers
Een Linux-container is een lichtgewicht alternatief voor een virtuele machine. Zoals de naam al aangeeft, gebruik je het voor een Linux-server. Om een container te maken, heb je een template nodig. Ga naar Datacenter / pve en kies een geschikte opslaglocatie. Wij kiezen hier voor local. Ga dan naar CT Templates. Klik op Templates om een lijst met beschikbare templates te zien. Je ziet dat je uiteenlopende smaken van Linux kunt kiezen, waaronder Debian, Ubuntu, Alpine, ArchLinux en Fedora.
We gebruiken in dit artikel Ubuntu 22.04 als basis voor een container. Je kunt het template downloaden door deze aan te klikken en daarna op de knop Download te klikken.
8 Iso-bestanden ophalen
In een virtuele machine kun je een besturingssysteem installeren op basis van een iso-bestand. Deze maak je eenvoudig beschikbaar: ga daarvoor via Datacenter / pve naar de juiste opslag, zoals local, en kies ISO Images.
Je kunt een iso-bestand uploaden vanaf je pc via de knop Upload. Of je geeft via de knop Download from URL een link naar een iso-bestand op, zodat het direct door Proxmox VE wordt opgehaald.
Als voorbeeld gebruiken we de link die we vinden op de server-downloadpagina van Ubuntu: https://releases.ubuntu.com/22.04.3/ubuntu-22.04.3-live-server-amd64.iso. Plaats deze volledige link in het venster achter URL en kies Query URL. De correcte bestandsnaam wordt ingevuld. Klik dan op Download.
Handige installatiehulp Heb je nog niet zo veel ervaring met het installeren van software, dan zijn de scripts van tteck een goede hulp. Zo kun je bijvoorbeeld via één enkele opdracht een container met database of webserver opzetten, of een toepassing als Zigbee2MQTT installeren. Of je maakt er in een handomdraai een virtuele machine mee, bijvoorbeeld met het Home Assistant OS. Voor talloze toepassingen is zo’n installatiehulp beschikbaar.
9 Containers
Een container in Proxmox VE werkt op basis van LXC en heet ook wel Linux-container. Zo’n container deelt in feite de kernel met de host, waardoor deze snel en efficiënt werkt, maar toch op een veilige manier door isolatie.
Dit heeft ook andere voordelen. Zo heb je alles voor één toepassing bij elkaar, is het handig voor back-ups en kun je bijvoorbeeld bronnen toewijzen, een opdrachtprompt openen en de container migreren naar een andere server met Proxmox VE (bij een cluster).
Er bestaan templates met complete software, ook wel TurnKey genoemd. We gaan als voorbeeld een eenvoudige Ubuntu-container toevoegen, die we voor een webserver gaan gebruiken.
Unpriviliged versus priviliged container Een container is naar voorkeur ‘unpriviliged’ of ‘priviliged’. Een unpriviliged container is de standaardoptie. De gebruiker die root is in de container, heeft dan feitelijk heel beperkte rechten op de host. Bij een priviliged container heeft de root-gebruiker in de container daarentegen dezelfde rechten als root op de host. Mocht iemand uit de priviliged container ontsnappen, wat lastig maar niet onmogelijk is, dan is die persoon dus ook root op de host. Hoewel er ook andere veiligheidsmechanismen zijn, schuilt daarin wel een gevaar. Al is dat te overzien als je de server helemaal zelf gebruikt.
Je kunt overigens niet zomaar overstappen van priviliged naar unpriviliged, of andersom. Maar er is wel een simpele omweg. Als je een back-up van de container maakt, zal bij het terugzetten standaard de oorspronkelijke instelling worden overgenomen (priviliged of unpriviliged). Maar je kunt ook kiezen of de nieuwe container priviliged of unpriviliged moet zijn.
Soms loop je bij een unpriviliged container tegen een probleem met rechten aan, waardoor je niet overal toegang toe hebt of niet alles mag doen. Een priviliged container kan dan redding bieden. Maar beter kun je eerst kijken of de beperkingen wellicht zijn op te lossen. En ook een virtuele machine kan een alternatief zijn.
10 Container maken
Om een container te maken, begin je met de blauwe knop Create CT. Op het tabblad General voer je bij CT ID een uniek nummer in voor de container en bij Hostname een herkenbare naam, zoals webserver. Bij Password en Confirm password voer je het wachtwoord in voor de root-gebruiker. Ga dan naar Template: hier selecteer je de opslag die je voor templates gebruikt (zoals local) en het template zelf, dat je hiervoor had opgehaald.
Vervolgens kies je onder Disks waar de containergegevens bewaard moeten worden en wat de omvang van die opslag moet zijn. Begin met bijvoorbeeld 8 GB. Je kunt dit later wijzigen of de omvang aanpassen. Onder CPU stel je in hoeveel processorkracht de container krijgt en onder Memory kies je een limiet voor het geheugengebruik. Zorg dat je genoeg toewijst voor de toepassing(en) die je gaat installeren. Voor een webserver is de standaardwaarde 512 MB meer dan genoeg.
Bij Network vullen wij achter IPv4/CIDR het netwerkadres 10.0.10.31/24 in, in het zogeheten CIDR-formaat (zie kader ‘CIDR-notatie in netwerkinstellingen’). Bij DNS hoef je niets te veranderen. Ga naar Confirm en klik op Finish. De container wordt nu gemaakt. Klik op Start om de container te starten.
CIDR-notatie in netwerkinstellingen Let bij het invullen van het ip-adres op de speciale CIDR-notatie die door Proxmox VE wordt gebruikt. Meestal zul je uitgaan van een subnetmasker van 255.255.255.0. Dat geeft in ons voorbeeld de adressen 10.0.10.1 t/m 10.0.10.255. Dit subnet komt overeen met de aanduiding /24 in het CIDR-formaat.
Het adres voor de eerste container schrijven we daarom als 10.0.10.31/24. Zelf vinden wij het handig als het nummer van de container (de CT ID) het ip-adres volgt. Daarom hebben wij voor de eerste container op 10.0.10.31 gekozen voor 1031 als uniek nummer.
11 Details voor je container
Klik je onder Datacenter / pve op de zojuist gemaakte container, dan zie je onder Summary de details voor deze container. Gebruik het gedeelte Notes voor bijvoorbeeld een beschrijving van de container of inloggegevens. Je kunt hier met Markdown-opmaak werken. Via Console kun je een opdrachtprompt voor je server openen en dan inloggen met je root-account. Hoewel je hiervoor natuurlijk ook ssh kunt gebruiken, geeft het een snelle ingang als je het nodig hebt. We gebruiken de opdrachtprompt in de volgende paragraaf voor de configuratie van Ubuntu.
Onder Resources kun je het geheugengebruik en opslag aanpassen, waaronder het verplaatsen of vergroten van de opslag. Onder Options vind je onder meer de optie Start at boot. Dit zorgt dat de container na een herstart van de host automatisch wordt gestart. Bij Backup maak je uiteraard een back-up van de container, zie ook paragraaf 16. Onder Snapshots maak je desgewenst een momentopname van de inhoud van de container, waar je op elk moment naar kunt terugkeren.
12 Configuratie van Ubuntu
Onze container met Ubuntu werkt, maar vaak zul je nog wat instellingen willen nalopen. Zorg dat de container is gestart, ga naar Console en log in. Werk het systeem via de Opdrachtprompt bij met deze twee opdrachten:
apt update
en
apt upgrade
Kies de juiste tijdzone (Europe/Amsterdam) met:
dpkg-reconfigure tzdata
Voor taalinstellingen voer je dit commando uit:
dpkg-reconfigure locales
We zetten een vinkje bij nl_NL.UTF-8. Deze keuze kun je daarna eventueel ook voor de systeeminstellingen doorvoeren, zodat je in het Nederlands wordt aangesproken.
Wil je met ssh kunnen inloggen met je root-account? Bewerk dan de configuratie met de opdracht:
nano /etc/ssh/sshd_config
Haal het commentaarteken bij PermitRootLogin weg en verander de instelling naar:
PermitRootLogin yes
Bewaar de aanpassingen met Ctrl+O en verlaat de editor met Ctrl+X. Herstart de service met:
service sshd restart
Je kunt nu met je favoriete ssh-client inloggen op deze server.
13 Webserver installeren
Als voorbeeld installeren we de webserver Nginx in de nieuwe container. Dit kan eenvoudig met de opdracht:
apt install nginx
Als je met een browser naar het ip-adres van de container gaat, zie je de welkomstpagina van deze webserver. Merk op dat de container met webserver minder dan 50 MB aan geheugen gebruikt. Typisch zullen containers tussen 50 en 150 MB aan geheugen gebruiken, met een paar uitschieters naar boven voor wat zwaardere toepassingen.
Onder Summary kun je eenvoudig aflezen wat de systeembelasting is. Je ziet ook grafieken voor de betreffende container. Die zijn er voor processor- en geheugengebruik, maar ook voor netwerkverkeer en de belasting van de opslag. Dit laatste wordt uiteraard door lees- en schrijfacties beïnvloed.
14 Virtuele machine
Bij een virtuele machine wordt de hardware van een pc via software geëmuleerd. Binnen Proxmox VE configureer en beheer je deze virtuele machines. Op de achtergrond wordt het bekende KVM (Kernel-based Virtual Machine) gebruikt.
Je maakt een virtuele machine met de knop Create VM. Het is voor een deel vergelijkbaar met het toevoegen van een container. Meestal kun je de standaardinstellingen gebruiken. Op het tabblad OS kies je een iso-bestand met het gewenste besturingssysteem. Onder System configureer je de virtuele hardware. Onder Disks wijs je opslagruimte toe en bij Memory geef je aan hoeveel geheugen de virtuele machine krijgt. Bij veel besturingssystemen kun je de optie Ballooning Device aanzetten. Die optie zie je overigens alleen als je een vinkje bij Advanced zet. Daarmee geeft een virtuele machine een teveel aan geheugen terug aan de host.
15 Besturingssysteem installeren
Bij het starten van de virtuele machine start ook gelijk de installatie voor de virtuele machine. Dit kun je via Console volgen. Veel instellingen (zoals gebruikersaccounts en netwerk) regel je nu uiteraard binnen de server en grotendeels al tijdens de installatie. Wil je een mooier beeld, dan kies je rechtsboven onder Console voor noVNC. Ook Spice is een goede optie, maar vereist wat extra software.
16 Back-up maken
Je kunt eenvoudig een back-up maken van een container of virtuele machine, door bij het betreffende systeem naar Backup te gaan. Je kunt ook een taak toevoegen voor automatische periodieke back-ups, onder Datacenter / Backup. Het is slim daarbij een e-mailnotificatie aan te zetten voor mislukte back-ups.
Standaard kun je back-ups in de lokale map genaamd local maken. Het is echter raadzaam om ze op een extern systeem te bewaren, zoals de eerder gekoppelde NAS (paragraaf 5 en 6).
Een back-up van een unpriviliged container naar een netwerkshare (zoals NFS) vereist overigens een kleine aanpassing. Open daarvoor de shell en bewerk het bestand vzdump.conf met de opdracht:
nano /etc/vzdump.conf
Haal het commentaarteken (#) weg voor tmpdir: en wijzig deze instelling naar:
tmpdir: /tmp
Bewaar de aanpassingen met Ctrl+O en verlaat de editor met Ctrl+X. Tijdens het maken van de back-up zal dit nu als tijdelijke map worden gebruikt. Merk op dat de inhoud van deze map standaard bij het booten zal worden gewist.