SSD Nodes Learn 🎉 VPS vanaf $5.50/mnd
Gidsen Matt ConnorDoor Matt Connor · Bijgewerkt 2026-08-13

Cloudron installeren op een Ubuntu VPS: stappenplan

Installeer Cloudron op een verse Ubuntu VPS met deze handleiding. Leer hoe u wildcard DNS configureert, het script uitvoert en back-ups instelt voor 2 tot 10 applicaties.

Cloudron installeren op een VPS: de korte versie

Om Cloudron op een VPS te installeren heeft u een verse Ubuntu-server nodig, minimaal 2 GB RAM en een domein waarvan u de DNS-records kunt bewerken. De installatie zelf bestaat uit drie commando's en één herstart. Vrijwel alles wat misgaat, gebeurt vóór die stap (verkeerde basis-image, verkeerd virtualisatietype) of erna (DNS, e-mail, back-ups).

wget https://cloudron.io/cloudron-setup
chmod +x cloudron-setup
sudo ./cloudron-setup

Cloudron installeert, updatet, back-upt en verstrekt TLS-certificaten (transport layer security) voor zelfgehoste applicaties. Elke app draait in Docker, nginx fungeert als proxy voor alle apps en elke app krijgt een eigen subdomein van uw domein. Dat laatste detail is de reden waarom het DNS-werk hier als eerste aan bod komt.

Waarom Cloudron strikte eisen stelt aan het basis-OS

Het installatiescript controleert de server voordat er iets wordt geïnstalleerd. Als een controle faalt, betekent dit dat u een nieuwe server moet aanvragen. Lees deze eisen door voordat u een image kiest.

  • Alleen Ubuntu, en slechts drie releases. Elke andere versie resulteert in Cloudron requires Ubuntu 20.04, 22.04, 24.04. Debian, Rocky en Alpine worden niet ondersteund. Ubuntu 24.04 vereist Cloudron 8 of nieuwer; het script controleert dit automatisch voor u.
  • Alleen 64-bit Intel of AMD: Error: Cloudron only supports amd64/x86_64. Een ARM VPS kan dit niet draaien.
  • Alleen volledige hardware-virtualisatie. Op een container-gebaseerde VPS stopt het script met Error: Cloudron does not support lxc, only runs on bare metal or with full hardware virtualization, omdat het de container detecteert met systemd-detect-virt --container. KVM is geschikt. OpenVZ en LXC zijn dat niet.
  • Het root-bestandssysteem moet ext4 of xfs zijn. Bij elk ander type krijgt u Error: Cloudron requires '/' to be ext4 or xfs; dit is de reden waarom btrfs- en zfs-images falen.
  • Minimaal 941 MB RAM en 20 GB op /, gemeten met free -m en de grootte van het root-bestandssysteem.
  • Een volledig schone server. Als nginx, docker of node al is geïnstalleerd, weigert het script de installatie met Error: Some packages like nginx/docker/nodejs are already installed..

Die laatste controle leidt vaak tot discussie, dus hier is de reden daarvoor. Cloudron installeert specifieke versies van Docker, nginx, Node.js en MySQL, schrijft de nginx-configuratie voor elke gehoste app en beheert zelf de iptables-firewallregels. Een Docker-versie die u gisteren heeft geïnstalleerd is de verkeerde versie, en uw bestaande nginx-sitebestanden worden overschreven. Cloudron beheert de volledige machine, dus gebruik een dedicated VPS.

Eén extra controle wordt vaak over het hoofd gezien. Op een oudere CPU zonder AVX (advanced vector extensions) toont het script CPU has no AVX support. MongoDB will be disabled, en elke app die MongoDB vereist wordt oninstalleerbaar. Controleer de CPU voordat u begint met grep -m1 -o avx /proc/cpuinfo; dit commando geeft avx weer op een geschikte host en niets op een verouderd exemplaar.

Hoeveel RAM heeft Cloudron nodig?

Het script weigert te draaien onder 941 MB, met Error: Cloudron requires atleast 1GB physical memory, en de documentatie vraagt om 2 GB RAM en 20 GB schijfruimte. Beide getallen zijn de ondergrens voor het platform zelf, niet voor het platform inclusief uw applicaties. Voordat u ook maar één app installeert, draait Cloudron al Docker, nginx, zijn eigen box-service, de databasecontainers die het aan apps uitleent (MySQL, PostgreSQL, MongoDB), Redis en de mail-stack. Voer docker ps uit op een verse installatie en tel ze.

Geheugenlimieten voor apps komen boven op die basis. Elk app-pakket wordt geleverd met een lage standaardlimiet en u verhoogt deze met de schuifregelaar in de weergave Resources van de app. Wanneer een app zijn limiet overschrijdt, herstart deze en stuurt het systeem u een OOM-melding (out of memory). Een server die constant één app herstart, heeft dus meestal een probleem met de limietinstelling in plaats van een bug.

Dit is de dimensionering die ik zou aanhouden. Dit zijn aanbevelingen voor een server die u volgende maand niet opnieuw hoeft op te bouwen. Het zijn geen gemeten benchmarkresultaten.

ChartCloudron VPS sizing floor by number of apps
The data behind this chart
[
  {
    "label": "2 apps (free tier)",
    "vcpu": 2,
    "ram_gb": 4,
    "disk_gb": 60
  },
  {
    "label": "5 apps",
    "vcpu": 4,
    "ram_gb": 8,
    "disk_gb": 120
  },
  {
    "label": "10 apps",
    "vcpu": 6,
    "ram_gb": 16,
    "disk_gb": 240
  }
]

Twee apps draaien comfortabel op 4 GB RAM en 60 GB schijfruimte. Voor ongeveer tien apps is 16 GB RAM en 240 GB schijfruimte gewenst, omdat de basis van het platform nooit kleiner wordt en elke app een Docker-image, een database en eigen data toevoegt. Schijfruimte raakt sneller vol dan mensen verwachten: images, app-data en lokale back-ups delen één volume totdat u back-ups naar een externe locatie verplaatst.

Cloudron geeft elke app onbeperkte swap, dus de geheugenlimiet die u instelt is alleen van toepassing op RAM. Op een VPS-image zonder swap-bestand geeft swapon --show helemaal niets weer, en geheugendruk leidt direct tot OOM-herstarts in plaats van een trage app. Het toevoegen van 2 GB swap is een goedkope verzekering, hoewel het geen vervanging is voor fysiek geheugen. Het prijsverschil tussen VPS-abonnementen is klein in vergelijking met de uren die u kwijt bent aan het afstellen van limieten, dus bekijk wat een VPS daadwerkelijk kost en kies de eerstvolgende grotere variant.

DNS: het wildcard-record dat app-subdomeinen laat werken

Cloudron plaatst het dashboard op my.example.com en elke app op een eigen subdomein. DNS is daarom een vereiste en geen latere stap. Wijs deze records naar het publieke IP-adres van de server voordat u het dashboard voor de eerste keer opent:

  • my.example.com als een A-record. Dit is het dashboard.
  • *.example.com als een A-record. Dit record zorgt ervoor dat app-subdomeinen werken, zodat wiki.example.com en git.example.com direct resolven zodra u die apps installeert.
  • example.com als een A-record, alleen als u een app op het hoofddomein wilt draaien.

Een wildcard-record heeft een lagere prioriteit dan een expliciet record. Een bestaand www.example.com dat naar een andere locatie wijst, blijft dus gewoon werken.

Tijdens de installatie kiest u hoe Cloudron het DNS-beheer vanaf dat moment afhandelt:

  • Een API-provider. Cloudron slaat een token op voor Cloudflare, DigitalOcean, Route53, Hetzner, Porkbun, Linode, deSEC, Gandi, Namecheap en ongeveer twintig andere providers. Het schrijft vervolgens zelf elk record, inclusief mail-records.
  • Wildcard. U voegt het *-record handmatig toe en Cloudron schrijft niets.
  • Handmatig. Cloudron toont u elk record en wacht tot u het heeft toegevoegd, telkens voordat een app wordt geïnstalleerd.

Een wildcard DNS-record is geen wildcard-certificaat. De standaard certificaatprovider is Let's Encrypt Prod - Wildcard. Deze bewijst het eigendom via DNS en werkt daarom alleen met een API-provider. Bij de Wildcard- of Handmatige-backend valt u terug op één certificaat per app, gevalideerd via HTTP. Dit betekent dat inkomende poort 80 altijd open moet blijven. Als uw registrar of DNS-host op de API-lijst staat, gebruik deze dan: mail-records en certificaten zijn dan niet langer uw verantwoordelijkheid.

Controleer dit voordat u verdergaat. dig +short my.example.com en dig +short anything.example.com zouden beide het IP-adres van uw server moeten tonen. Als de wildcard-query niets teruggeeft, zullen apps later falen terwijl het dashboard wel correct werkt.

Als het domein achter Cloudflare staat, stel de records dan in op DNS only. De proxy stuurt alleen HTTP en HTTPS door, waardoor de mail-poorten niet werken en elke app het adres van Cloudflare ziet in plaats van dat van de bezoeker.

Het installatiescript uitvoeren

wget https://cloudron.io/cloudron-setup
chmod +x cloudron-setup
sudo ./cloudron-setup

Voer het script uit als root of via sudo, omdat de eerste melding die het anders toont This script should be run as root. is. De installatie duurt enkele minuten en verloopt op de achtergrond, aangezien de uitvoer van apt en Docker-pulls naar een logbestand wordt geschreven. Monitor dit vanuit een tweede SSH-sessie:

tail -f /var/log/cloudron-setup.log

Aan het einde toont het After reboot, visit one of the following URLs and accept the self-signed certificate to finish setup. gevolgd door het adres van uw server, waarna het vraagt The server has to be rebooted to apply all the settings. Reboot now ? [Y/n]. Antwoord met yes. De vlag --skip-reboot is beschikbaar als u de herstart wilt inplannen, maar Cloudron is pas bruikbaar nadat de server opnieuw is opgestart.

Eerste opstart: domein, DNS-backend en het beheerdersaccount

Open https://<server-ip> en accepteer de waarschuwing van de browser. Het certificaat is zelfondertekend omdat Cloudron uw domein nog niet kent; er is dus geen mogelijkheid om een certificaatautoriteit om een certificaat te vragen. Klik in Chrome op Advanced en vervolgens op Proceed to <ip> (unsafe). Klik in Firefox op Advanced en vervolgens op Accept the Risk and Continue.

Het eerste scherm vraagt om uw domein. Voer example.com in; het dashboard zal zich vestigen op my.example.com. U kunt ook een subdomein gebruiken, zoals cloudron.example.com, waarna het dashboard bereikbaar is via my.cloudron.example.com. Kies de DNS-backend, plak de API-token indien u er een heeft, en maak het beheerdersaccount aan met een e-mailadres dat u daadwerkelijk controleert: de registratie bij Let’s Encrypt en alle platformmeldingen verlopen via dit adres.

Wanneer u de instellingen opslaat, vraagt Cloudron certificaten aan en verplaatst het dashboard naar https://my.example.com. De URL met het IP-adres werkt vanaf dat moment niet meer, dus sla de nieuwe URL op in uw bladwijzers.

Certificaten: wat wordt vernieuwd en wanneer dit stopt

De vernieuwing van certificaten verloopt automatisch en volgt de ACME Renewal Information (ARI), het schema dat door de certificaatautoriteit wordt gepubliceerd. In de praktijk vindt de vernieuwing ongeveer een maand voor de verloopdatum plaats. Een mislukte vernieuwing stuurt een e-mail naar het beheerdersaccount en een verlopen certificaat valt terug op het ingebouwde zelfondertekende certificaat. Die terugval is de werkelijke oorzaak van een browserwaarschuwing op een site die gisteren nog werkte.

Twee oorzaken verklaren het merendeel van deze problemen. HTTP-validatie vereist inkomend verkeer op poort 80. Het sluiten van poort 80 omdat "alles toch al HTTPS is" blokkeert de vernieuwing voor elke applicatie op een Wildcard- of handmatige DNS-backend. DNS-validatie vereist een API-token dat nog steeds over schrijfrechten beschikt. Het roteren of beperken van de rechten van dat token zorgt ervoor dat de vernieuwing stilletjes faalt totdat de waarschuwingsmail arriveert.

Het overzicht Domains bevat een Renew All-knop om de poging direct te forceren, evenals een Let's Encrypt Staging-provider voor testdoeleinden. Staging-certificaten worden bewust niet vertrouwd door browsers, en dat is precies het doel: u kunt zo vaak opnieuw proberen als u wilt zonder de limieten voor productieaanvragen te overschrijden.

Moet u de ingebouwde mailserver gebruiken?

Cloudron bevat een volledige mailstack met IMAP-mailboxen, submission, sieve-filters en DKIM (DomainKeys Identified Mail)-ondertekening. U schakelt dit per domein in onder Email in het dashboard. Het afleveren van e-mail is het lastige gedeelte, en die complexiteit ligt niet aan Cloudron.

  • Uitgaande poort 25 wordt door de meeste VPS-providers geblokkeerd als spampreventie. Sommige providers deblokkeren deze na een supportticket. Test dit vanaf de server met nc -zv aspmx.l.google.com 25 (installeer netcat-openbsd als het commando ontbreekt). Open poorten rapporteren succeeded, terwijl een geblokkeerde poort blijft hangen tot de time-out.
  • Het PTR-record (reverse DNS) wordt ingesteld door uw VPS-provider, niet door uw DNS-host, en moet overeenkomen met de mail-hostname. E-mail vanaf een adres met een generiek PTR-record belandt in spamfilters.
  • SPF-, DKIM- en DMARC-records worden voor u aangemaakt bij gebruik van een API DNS-backend. Bij Wildcard- of handmatige backends voegt u deze zelf toe; een ontbrekend DKIM-record betekent dat elk bericht dat u ondertekent onverifieerbaar is.

De configuratie die voor de meeste gebruikers werkt, is het ontvangen van e-mail via Cloudron en het versturen via een relay zoals SendGrid, Postmark, Mailgun of Amazon SES, geconfigureerd in het Email-overzicht. De relay moet toestaan dat er namens elk adres op uw domein wordt verzonden, anders worden app-notificaties van verschillende afzenders geweigerd. Als e-mail de voornaamste reden is voor het afnemen van de server, draai dan een toegewijde mailserver zoals Mailcow op een eigen machine met een eigen IP-reputatie.

Als u Cloudron Email helemaal niet gebruikt, blokkeer dan poorten 25, 465, 587, 993 en 4190 in de firewall van uw provider. Doe dit daar en niet op de server zelf, omdat Cloudron de iptables-regels beheert en verwacht dat deze exclusief door de applicatie worden aangestuurd. Dit is het tegenovergestelde van een standaard VPS, waar u zelf ufw-regels beheert.

Configureer het back-updoel voordat u het nodig heeft

Back-ups worden standaard opgeslagen op het lokale bestandssysteem op /var/backups, op dezelfde schijf als de rest van de data. De documentatie is hierover duidelijk: "Het opslaan van back-ups op dezelfde fysieke schijf als de platformserver is riskant." Eén defecte schijf vernietigt zowel de applicaties als de back-ups.

Open Backups, ga naar Backup Sites en wijs vanaf de eerste dag een andere locatie aan. S3-compatibele objectopslag is de gebruikelijke keuze (Backblaze B2, Wasabi, Cloudflare R2, DigitalOcean Spaces of een MinIO-bucket op een tweede server), maar ook SSHFS, NFS, CIFS en standaard bestandssysteemdoelen worden ondersteund.

Drie instellingen bepalen of een back-up daadwerkelijk bruikbaar is:

  • Formaat. tgz schrijft één gecomprimeerd archief per app en uploadt bij elke run het volledige bestand opnieuw. rsync uploadt alleen gewijzigde bestanden, wat voor een grote Nextcloud-installatie aanzienlijk goedkoper is, maar wel meer verzoeken aan de storage-API vereist.
  • Versleuteling. Optionele AES-256-versleuteling voor zowel de bestandsinhoud als de bestandsnamen. Cloudron bewaart geen kopie van het wachtwoord; als u dit verliest, kunnen de back-ups door niemand meer worden ontsleuteld, ook niet door uzelf. Sla het wachtwoord op in een zelfgehoste wachtwoordmanager voordat u op opslaan klikt.
  • Retentie. Dit wordt gedefinieerd in aantallen, zoals 7 dagelijkse en 4 wekelijkse back-ups. Een lange retentieperiode bij objectopslag brengt maandelijkse kosten met zich mee; kies daarom een aantal waarvoor u bereid bent te blijven betalen.

Test vervolgens een herstelprocedure. Installeer een kleine app, herstel deze via het dashboard en controleer of de data correct wordt teruggezet. Een back-up die nooit is getest, is slechts een aanname.

Limieten van het gratis abonnement

Sinds augustus 2026 is het gratis abonnement beperkt tot twee geïnstalleerde applicaties. Alle overige functies zijn inbegrepen: applicatie-updates, back-ups per applicatie, de firewall, de mailserver en single sign-on. Bij de derde applicatie is een licentie vereist. De betaalde abonnementen heffen de applicatielimiet op, en het uitgebreidere abonnement voegt gebruikersgroepen en rollen, een directoryserver en meerdere back-uplocaties toe. Prijzen wijzigen, dus raadpleeg de Cloudron-prijspagina in plaats van uit te gaan van een bedrag in een handleiding.

Een licentie dekt één Cloudron-installatie; twee kleine servers kosten dus tweemaal zoveel als één grotere server. Deze prijsstructuur stimuleert de meeste gebruikers om één grotere VPS te gebruiken, wat ingaat tegen het gangbare advies om services over meerdere machines te verspreiden. Houd hier rekening mee bij het bepalen van de grootte van de server, aangezien het later opsplitsen betekent dat u dubbel betaalt.

Wanneer er iets misgaat

Begin met de ingebouwde controle. Deze doorloopt DNS, certificaten, schijfgebruik, geheugen en elke service afzonderlijk, en geeft aan welke test is mislukt:

sudo cloudron-support --troubleshoot

Gebruik daarna de standaard tools van systemd (de system and service manager). systemctl status box rapporteert over de Cloudron-service zelf, journalctl -u box -n 100 toont de recente logs en journalctl -u docker heeft betrekking op de onderliggende container runtime. Alles wat tijdens de installatie is misgegaan, staat in /var/log/cloudron-setup.log.

Een dashboard dat niet laadt, wordt meestal veroorzaakt door DNS of de firewall van de provider, en niet door Cloudron. Voer dig +short my.example.com uit vanaf uw laptop en bevestig dat poort 80 en 443 openstaan in de netwerkfirewall van de provider; dit is een aparte instelling die losstaat van de eigen regels van de server. Als u opnieuw wilt beginnen, weigert het script een tweede uitvoering met Error: Cloudron is already installed. To reinstall, start afresh; een opnieuw geïnstalleerde server is in dat geval de schoonste oplossing.

Wanneer Cloudron niet de juiste keuze is

Cloudron is geschikt wanneer u applicaties wilt draaien en geen infrastructuur wilt beheren. Het is minder geschikt wanneer u uw eigen containers op uw eigen manier wilt beheren, omdat het systeem beheer voert over Nginx, Docker en de firewall; handmatige wijzigingen worden door Cloudron overschreven. Als u van plan bent om met een map vol compose-bestanden te werken, biedt Traefik voor uw eigen Docker Compose-stacks dezelfde automatische TLS-afhandeling en subdomein-routing zonder dat daar een platform bovenop ligt. Als u nog geen keuze heeft gemaakt, vergelijkt Cloudron, CasaOS en Coolify vergeleken deze opties, en is de uitgebreidere lijst met zelf te hosten software een beter startpunt dan een installatiehandleiding.

FAQ

Hoeveel RAM heeft Cloudron nodig op een VPS?

Het installatiescript weigert te draaien met minder dan 941 MB en de documentatie adviseert 2 GB, maar dat is de ondergrens voor het platform zonder actieve applicaties. Cloudron draait vanaf de eerste opstart Docker, nginx, de eigen box-service, databasecontainers en de mailstack. Reken op 4 GB voor twee applicaties en 16 GB voor ongeveer tien applicaties. Voeg daarnaast een swap-bestand toe, omdat Cloudron applicaties onbeperkte swap toestaat; een server zonder swap zal bij geheugendruk processen herstarten.

Kan ik Cloudron installeren op Debian, of op een server waar al Docker op draait?

Beide opties werken niet. Het script controleert de release en stopt bij Cloudron requires Ubuntu 20.04, 22.04, 24.04, waardoor Debian, Rocky en Alpine niet ondersteund worden. Het stopt ook wanneer nginx, docker of node al aanwezig zijn, omdat het platform specifieke versies van deze software installeert en de nginx-configuratie en iptables-regels zelf beheert. Begin met een schone Ubuntu-image op een KVM VPS.

Waarom werken mijn app-subdomeinen niet terwijl het dashboard wel werkt?

Het wildcard DNS-record ontbreekt. De installatie vereist een A-record voor my.example.com, waardoor het dashboard bereikbaar is, terwijl wiki.example.com een NXDOMAIN-fout geeft en de browser meldt dat de site niet gevonden kan worden. Voeg een A-record toe voor *.example.com dat naar het server-IP wijst en controleer dit met dig +short wiki.example.com voordat u de applicatie installeert.

Moet ik de Cloudron-mailserver gebruiken?

Nee. U kunt inkomende e-mail uitschakelen en verzenden via een externe relay zoals Postmark, Mailgun of Amazon SES. Dit is de veiligere keuze wanneer uw provider uitgaande poort 25 blokkeert of wanneer het IP-adres geen reputatie als mailserver heeft. Als u Cloudron Email volledig overslaat, sluit dan poorten 25, 465, 587, 993 en 4190 in de firewall van de provider in plaats van op de server zelf.

Wat gebeurt er wanneer ik de limiet van twee applicaties op het gratis abonnement bereik?

Het dashboard blokkeert de installatie van een derde applicatie en vraagt om een licentiesleutel. Applicaties die al draaien blijven ongemoeid: ze worden bijgewerkt, krijgen back-ups en behouden hun certificaten. Het toevoegen van een licentie heft de limiet op zonder dat er iets opnieuw geïnstalleerd hoeft te worden. Het gratis abonnement is daarom een geschikte manier om het platform eerst op een echt domein te testen.