Domeinnaam koppelen aan je VPS en gratis HTTPS instellen
Koppel een domeinnaam aan je VPS met A-records, controleer de DNS met dig of nslookup, open poort 80 en 443 en regel gratis HTTPS met Let's Encrypt en Certbot.
In deze gids lees je hoe je een domeinnaam aan je VPS koppelt, zodat example.com en www.example.com je site tonen, en hoe je HTTPS toevoegt met een gratis certificaat van Let's Encrypt. [1] De gids is bedoeld voor iedereen met een domeinnaam en een VPS met Ubuntu 24.04 LTS en nginx of Apache, waarbij de DNS bij de registrar of bij Cloudflare wordt beheerd. Vervang example.com en 203.0.113.10 door je eigen domeinnaam en het adres van je server.
Wat je nodig hebt voordat je begint
Je hebt vier dingen nodig:
- Toegang tot de DNS van het domein, bij de registrar, of bij Cloudflare als het domein de nameservers van Cloudflare gebruikt.
- SSH-toegang met sudo-rechten, waarbij je inlogt met een SSH-sleutel in plaats van een rootwachtwoord, zoals in onze checklist voor SSH-beveiliging.
- nginx of Apache, geïnstalleerd en actief.
- Het publieke IPv4-adres van de server, dat je aanbieder bij de servergegevens vermeldt. Elke Linux VPS van StealthRDP heeft een dedicated IPv4-adres.
IPv6 is optioneel: een AAAA-record koppelt een naam aan een IPv6-adres, dus voeg alleen AAAA-records toe als de server zo’n adres heeft. [2] Nog geen server gekozen? Onze gids over het dimensioneren van een VPS voor webhosting helpt je op weg.
Zo koppel je een domeinnaam aan je VPS met DNS-records
Om een domeinnaam aan je VPS te koppelen, maak je A-records aan die example.com en www.example.com naar het IPv4-adres van de server laten verwijzen. [2] Breng de wijziging aan op de plek waar de DNS van het domein wordt gehost.
Gebruik je het domein al voor een live site of voor e-mail, noteer dan eerst de bestaande records. Wijzig alleen de A-, AAAA- en CNAME-records voor @ en www, en laat de rest, zoals de MX-records voor e-mail, ongemoeid.
1. Voeg A-records toe voor het hoofddomein en www
Een A-record koppelt een naam aan een IPv4-adres, en in het naamveld staat @ voor de zone-apex, oftewel example.com zelf. [2]
| Type | Naam | Inhoud | Proxystatus (alleen Cloudflare) |
|---|---|---|---|
| A | @ |
203.0.113.10 |
Voorlopig DNS only |
| A | www |
203.0.113.10 |
Voorlopig DNS only |
| AAAA | @ en www |
Het IPv6-adres van de server, alleen als die er een heeft | Voorlopig DNS only |
Verwijder alle andere A- of AAAA-records voor deze namen, zoals die voor een parkeerpagina van de registrar.
2. Of gebruik voor www een CNAME-record
Een CNAME-record koppelt een naam aan een andere naam in plaats van aan een adres. [2] Een CNAME-record voor www dat naar example.com verwijst, volgt het record van het hoofddomein; bij een nieuw serveradres pas je dus maar één record aan. Gebruik voor www óf het A-record óf het CNAME-record, niet allebei.
Laat bij Cloudflare beide records op DNS only (grijze wolk) staan tot het certificaat is uitgegeven; in het gedeelte over Cloudflare lees je waarom.
3. Begrijp hoe TTL werkt voordat je op DNS wacht
De TTL (time to live) bepaalt hoelang DNS-resolvers een antwoord in hun cache bewaren voordat ze het opnieuw opvragen, dus een oud antwoord kan blijven hangen tot de TTL ervan is verlopen. [2] Bij Cloudflare staan records met proxy standaard op Auto, wat neerkomt op 300 seconden, en records op DNS only gebruiken de waarde die je zelf kiest. [2] Andere DNS-aanbieders tonen hun standaardwaarde in de kolom TTL.
4. Controleer de records met dig of nslookup
Vraag beide namen op bij een publieke resolver, zoals Google Public DNS op 8.8.8.8: gebruik dig op Linux en macOS en nslookup op Windows. [3]
dig -t A example.com @8.8.8.8
dig -t A www.example.com @8.8.8.8nslookup -type=A example.com 8.8.8.8
nslookup -type=A www.example.com 8.8.8.8Beide namen moeten 203.0.113.10 teruggeven; vraag AAAA op in plaats van A om IPv6 te controleren. Krijg je iets anders terug, kijk dan bij de veelvoorkomende problemen hieronder.
De poorten 80 en 443 openen met UFW
HTTP gebruikt standaard TCP-poort 80 en HTTPS poort 443, en voor Certbot moet poort 80 bereikbaar zijn vanaf de rest van het internet. [4] UFW is aanvankelijk uitgeschakeld en heeft een standaardbeleid dat inkomende verbindingen weigert. Als je UFW inschakelt, kunnen bestaande verbindingen zoals je SSH-sessie wegvallen; werk je via SSH, dan vraagt UFW eerst om bevestiging. [5]
Sta SSH toe voordat je sudo ufw enable uitvoert, anders kun je jezelf van de server buitensluiten. Luistert SSH op een andere poort dan 22, sta dan die poort toe in plaats van 22.
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw statusWil je een applicatieprofiel toestaan in plaats van poortnummers, dan toont sudo ufw app list de profielen op je server en sudo ufw app info welke poorten elk profiel opent; zet namen met spaties tussen aanhalingstekens. [5] Staat IPv6 in UFW aan (de standaardinstelling), dan geldt elke regel voor zowel IPv4 als IPv6. [5] Gebruikt je aanbieder een firewall vóór de server, open dan ook daar dezelfde poorten. [4]
De site voor example.com instellen in nginx of Apache
Stel example.com in op je webserver voordat je HTTPS toevoegt, want Certbot verwacht een site die al via gewoon HTTP reageert. [4]
nginx: één serverblok voor beide namen
Op Ubuntu staat elk serverblok van nginx in /etc/nginx/sites-available, en je activeert het met een link in /etc/nginx/sites-enabled; zet beide namen achter server_name. [6]
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
root /srv/example.com/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}sudo mkdir -p /srv/example.com/html
echo "example.com works" | sudo tee /srv/example.com/html/index.html
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginxApache: hetzelfde met een virtual host
Bij Apache gebruikt een virtual host in /etc/apache2/sites-available de directive ServerName voor example.com en ServerAlias voor www.example.com; begin met een kopie van het standaardbestand en activeer die met a2ensite. [7]
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com
</VirtualHost>Een herstart van Apache raakt elke site op de server. Zijn er andere sites live, controleer dan eerst het nieuwe bestand en houd je SSH-sessie open.
sudo mkdir -p /var/www/example.com
echo "example.com works" | sudo tee /var/www/example.com/index.html
sudo a2ensite example.com
sudo systemctl restart apache2.serviceOpen http://example.com en http://www.example.com: beide moeten de testpagina tonen.
Gratis HTTPS met Let's Encrypt en Certbot
Certbot haalt een certificaat op bij Let's Encrypt en kan nginx of Apache zo instellen dat ze het gebruiken. [4]
1. Installeer Certbot als snap
De site van Certbot raadt de meeste gebruikers met klem de snap aan. Daarvoor heb je snapd nodig; verwijder eerst een eventueel met apt geïnstalleerd Certbot-pakket, zodat het commando certbot de snap start. [4]
sudo apt-get remove certbot
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/local/bin/certbot2. Vraag het certificaat aan en schakel HTTPS in
De plug-in voor je webserver haalt het certificaat op, past de configuratie aan om het te gebruiken en zet zo in één stap HTTPS aan. [4]
sudo certbot --nginxsudo certbot --apacheBeantwoord de vragen van Certbot en neem beide namen op, want één certificaat kan meerdere namen bevatten. [1] Wil je de configuratie liever zelf aanpassen, gebruik dan sudo certbot certonly --nginx; dat haalt alleen het certificaat op. [4] Open daarna https://example.com en kijk of je het slotje ziet. [4]
3. Test de automatische verlenging
Certbot installeert een cronjob of systemd-timer die certificaten verlengt voordat ze verlopen; je hoeft Certbot dus niet opnieuw te draaien, tenzij je configuratie verandert. [4] Test de verlenging nu, en opnieuw na wijzigingen in de DNS, de firewall of Cloudflare:
sudo certbot renew --dry-run
systemctl list-timersHoelang certificaten van Let's Encrypt geldig zijn
De standaardcertificaten van Let's Encrypt zijn 90 dagen geldig. [1] Vanaf 10 februari 2027 zijn nieuwe en verlengde certificaten van Let's Encrypt standaard 64 dagen geldig; de laatste certificaten van 90 dagen verlopen naar verwachting op 11 mei 2027, en voor 2028 plant Let's Encrypt een standaardgeldigheid van 45 dagen. [8] Heb je zelf een cronjob met een vast interval geschreven, dan raadt Let's Encrypt aan om in plaats daarvan te verlengen als ongeveer twee derde van de looptijd verstreken is, en je scripts na te lopen op hardgecodeerde getallen zoals 60, 80 of 83. [8]
Gebruik Full (strict) als de proxy van Cloudflare aanstaat
Staat de proxy van Cloudflare aan, zet de versleutelingsmodus voor SSL/TLS dan op Full (strict). De modus bepaalt zowel de verbinding van bezoekers naar Cloudflare als die van Cloudflare naar je server. [9]
| Modus | Van Cloudflare naar je server | Servercertificaat gecontroleerd |
|---|---|---|
| Flexible | Gewoon HTTP, niet versleuteld | Nee |
| Full | Hetzelfde protocol als de bezoeker gebruikte | Nee |
| Full (strict) | Hetzelfde protocol als de bezoeker gebruikte | Ja |
| Strict (SSL-Only Origin Pull) | Altijd HTTPS | Ja |
Vermijd Flexible: de browser toont HTTPS, maar het verkeer tussen Cloudflare en je server is niet versleuteld, en Cloudflare raadt zelf met klem Full of Full (strict) aan. [9] Flexible botst bovendien met de redirect van HTTP naar HTTPS die Certbot bij de installatie kan toevoegen. [4] Cloudflare vraagt de pagina via gewoon HTTP op bij je server, de server stuurt door naar HTTPS en de browser komt in een redirectlus terecht. [9] Full (strict) controleert het certificaat van de server, dat van een publieke CA zoals Let's Encrypt kan komen. [9]
Cloudflare zet een zone niet terug van Full (strict) naar Full als het certificaat verloopt, dus de verlenging moet blijven werken. [9] De eenvoudigste volgorde: eerst het certificaat, dan de proxy.
Kies pas voor Full (strict) als het certificaat is geïnstalleerd en de proefrun van de verlenging (dry run) slaagt.
- Vraag het certificaat aan terwijl beide records op DNS only staan.
- Zet beide records op Proxied.
- Kies op de pagina SSL/TLS Overview voor Full (strict); gebruikt de zone Automatic SSL/TLS, selecteer dan eerst Custom. [9]
- Voer
sudo certbot renew --dry-runopnieuw uit.
Staat de proxy al aan, dan kan het uitgeven van het certificaat toch lukken: in Full en Full (strict) benadert Cloudflare je server via HTTP als het verzoek via HTTP binnenkomt, zodat de controle van Certbot via poort 80 kan doorkomen. [9] Strict (SSL-Only Origin Pull) maakt altijd verbinding via HTTPS en mislukt dus zolang er nog geen certificaat is. [9] Mislukt het uitgeven, zet de records dan terug op DNS only, vraag het certificaat aan en zet daarna de proxy weer aan.
Ook met de proxy aan is de server via zijn IP-adres nog steeds bereikbaar voor iedereen die dat adres kent. Dicht dat gat door op de poorten 80 en 443 alleen IP-adressen van Cloudflare toe te laten.
Veelvoorkomende problemen en hoe je ze oplost
Als het misgaat, ligt het meestal aan de DNS, de firewall of te veel herhaalde pogingen.
De DNS is nog niet bijgewerkt. Zie je nog een oud adres, dan geeft een resolver nog een antwoord uit zijn cache, en dat kan hij bewaren tot de TTL is verlopen. [2] Ben je overgestapt naar andere DNS-servers of een andere registrar, dan kan ook Google Public DNS nog oude antwoorden geven; met de tool Flush Cache van Google Public DNS wis je die. [3]
Een verkeerd of ontbrekend record. Zoek naar een typefout in het adres, een achtergebleven record van de registrar, een ontbrekend www-record of wijzigingen bij een DNS-host die niet meer voor het domein wordt gebruikt. Een ontbrekend www-record blokkeert ook HTTPS, want elke naam in de aanvraag moet de validatie doorstaan. [10] Verwijder AAAA-records, tenzij de server echt op dat IPv6-adres antwoordt.
Poort 80 is geblokkeerd. Volgens Let's Encrypt komen mislukte HTTP-01-validaties meestal door netwerk- of firewallinstellingen die verhinderen dat de servers van Let's Encrypt jouw server bereiken. [10] Controleer sudo ufw status en de firewall van je aanbieder, en houd poort 80 open na de overstap op HTTPS, want de plug-ins van Certbot voor nginx en Apache hebben die poort nodig. [4]
Te veel mislukte pogingen. Per account mag de validatie voor dezelfde naam hooguit 5 keer per uur mislukken; er komt elke 12 minuten één poging bij, en zolang er geen poging over is, weigert Let's Encrypt nieuwe aanvragen voor die naam. [10] Ook geeft Let's Encrypt per 7 dagen hooguit 5 certificaten uit voor precies dezelfde set namen, en wie bij het oplossen van problemen de client opnieuw installeert, loopt daar vaak tegenaan. [10] Let's Encrypt kan een limiet niet voortijdig resetten en ook het intrekken van certificaten reset hem niet, dus los eerst de oorzaak op voordat je het opnieuw probeert; voor tests raadt Let's Encrypt de eigen stagingomgeving aan, die veel hogere limieten heeft. [10]
Werken het domein en het certificaat, maar toont de pagina de fout 502 Bad Gateway, loop dan onze gids voor het oplossen van 502 Bad Gateway door.
Veelgestelde vragen
Hoelang duurt het voordat een domeinnaam naar een nieuwe VPS verwijst?
Dat hangt af van de TTL van de records en van wat resolvers al in hun cache hebben. Bij Cloudflare hebben records met proxy standaard een TTL van 300 seconden en gebruiken records op DNS only de waarde die je instelt; een resolver kan een oud antwoord bewaren tot de TTL ervan is verlopen. [2]
Moet www een A-record of een CNAME zijn?
Beide werken. Een A-record laat www rechtstreeks naar het IPv4-adres van de server verwijzen, terwijl een CNAME www naar een andere naam laat verwijzen, zoals example.com; www volgt dan dat record als het adres verandert. [2]
Is Let's Encrypt gratis?
Ja. Let's Encrypt rekent niets voor de certificaten, en standaardcertificaten zijn 90 dagen geldig. [1]
Hoelang zijn certificaten van Let's Encrypt geldig?
Standaardcertificaten van Let's Encrypt zijn op dit moment 90 dagen geldig. [1] Vanaf 10 februari 2027 zijn nieuwe en verlengde certificaten standaard 64 dagen geldig, en voor 2028 plant Let's Encrypt een standaardgeldigheid van 45 dagen. [8]
Welke SSL/TLS-modus van Cloudflare gebruik ik met Let's Encrypt?
Gebruik Full (strict). Die modus controleert het certificaat van je server, dat van Let's Encrypt kan komen, terwijl Flexible de verbinding tussen Cloudflare en je server onversleuteld laat. [9]
Bronnen en referenties
- FAQ — Let's Encrypt (geraadpleegd op 2026-11-03)
- DNS record types — Cloudflare Docs (geraadpleegd op 2026-11-03)
- Troubleshooting — Google Public DNS (geraadpleegd op 2026-11-03)
- Certbot instructions: Nginx on Linux (snap) — Certbot (EFF) (geraadpleegd op 2026-11-03)
- ufw(8): program for managing a netfilter firewall — Ubuntu Manpages (geraadpleegd op 2026-11-03)
- How to configure nginx — Ubuntu Server documentation (geraadpleegd op 2026-11-03)
- How to configure Apache2 settings — Ubuntu Server documentation (geraadpleegd op 2026-11-03)
- 64-Day Certificate Lifetimes Coming Feb 2027 — Let's Encrypt (geraadpleegd op 2026-11-03)
- Encryption modes — Cloudflare Docs (geraadpleegd op 2026-11-03)
- Rate Limits — Let's Encrypt (geraadpleegd op 2026-11-03)
Lees verder
Windows of Linux VPS: welke past het best bij je bedrijf?
Windows of Linux VPS? Vergelijk licenties, resourcegebruik, ondersteunde software, beheer en beveiliging, en ontdek snel wat bij je toepassing past.
Checklist voor SSH-hardening: zo beveilig je een Linux VPS
SSH beveiligen op een nieuwe VPS met Ubuntu 24.04, stap voor stap: sleutels, sshd-instellingen, UFW en Fail2ban, met een test per stap, zodat je toegang houdt.
Alleen Cloudflare-IP’s toestaan op nginx, Apache en IIS
Alleen Cloudflare-IP’s toestaan op poort 80 en 443 met UFW, nginx, Apache en IIS, de lijst actueel houden en directe verzoeken aan je origin-IP tegenhouden.
