In deze handleiding
Bereid server, domein en hersteltoegang voor
Gebruik een nieuwe Ubuntu 24.04 VPS met publieke IPv4, SSH op poort 22, een eerste account met sudo en een domein dat je beheert. Lokale commando’s draaien in Bash op Linux, macOS of WSL; servercommando’s in SSH. Stop als voorbeeldpaden bij een bestaande installatie horen.
Vervang 203.0.113.10 en app.example.com overal: het zijn documentatievoorbeelden. De eerste gebruiker heet hier ubuntu; gebruik de juiste accountnaam. Open de herstelconsole vóór toegangswijzigingen. Controleer welke firewall jouw image ondersteunt; Oracle Ubuntu volgt een andere route dan UFW.
Maak een sleutel en regel de eerste toegang
Maak de sleutel op je computer, met een wachtzin. Bestaat de naam al, kies dan een andere. Houd de privésleutel lokaal en deel alleen .pub.
mkdir -p ~/.ssh
ssh-keygen -t ed25519 -f ~/.ssh/ubuntu_vps
cat ~/.ssh/ubuntu_vps.pubNieuwe VPS: maak nu de Ubuntu-server aan met deze publieke sleutel in het daarvoor bestemde veld. Controleer de eerste gebruikersnaam en ga door naar hostsleutelverificatie. Sla de volgende commando’s voor een bestaande server over.
Al aangemaakte, lege VPS: laat je werkende sessie open. Kopieer in een tweede lokale terminal de nieuwe publieke sleutel via de toegang die al werkt. Vervang existing_vps_key. Bij wachtwoord- of agenttoegang laat je -i ~/.ssh/existing_vps_key weg; wijzig geen authenticatiebeleid.
scp -i ~/.ssh/existing_vps_key ~/.ssh/ubuntu_vps.pub ubuntu@203.0.113.10:ubuntu-vps-admin.pubControleer het bestand in de bestaande serversessie en voeg het toe aan authorized_keys van je eigen eerste account. De extra newline behoudt ook een bestaande laatste regel zonder afsluitende newline. Gebruik herstel via de provider als je geen werkende toegang hebt.
if ssh-keygen -lf ~/ubuntu-vps-admin.pub; then
mkdir -p ~/.ssh
chmod 700 ~/.ssh
printf '\n' >> ~/.ssh/authorized_keys
cat ~/ubuntu-vps-admin.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
fiVergelijk vóór de eerste verbinding de passende publieke hostsleutel via de vertrouwde herstelconsole. Voor Ed25519 voer je daar uit:
sudo ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pubOpen lokaal een nieuwe sessie; bewaar de oorspronkelijke toegang totdat dit werkt.
ssh -i ~/.ssh/ubuntu_vps ubuntu@203.0.113.10Kopieer vanuit een andere lokale terminal de publieke sleutel voor de beheerder die je hierna maakt. Dit tijdelijke bestand opnieuw kopiëren is toegestaan.
scp -i ~/.ssh/ubuntu_vps ~/.ssh/ubuntu_vps.pub ubuntu@203.0.113.10:ubuntu-vps-admin.pubMaak een afzonderlijke beheerder
Controleer op de server eerst getent passwd deploy. Er mag geen bestaande account verschijnen. Kies anders een ongebruikte naam en pas ook homepaden en groepen aan. Zo vervang je geen sleutelbestand van iemand anders.
Controleer systeem en resources, beoordeel updates en maak de beheerder. Kies een sterk wachtwoord voor sudo. De install-opdrachten stellen eigenaar en beperkte rechten in.
cat /etc/os-release
free -h
df -h /
sudo apt update
sudo apt upgrade
sudo adduser deploy
sudo usermod -aG sudo deploy
sudo install -d -m 700 -o deploy -g deploy /home/deploy/.ssh
sudo install -m 600 -o deploy -g deploy ~/ubuntu-vps-admin.pub /home/deploy/.ssh/authorized_keysVerbind in een nieuwe lokale terminal als deze beheerder:
ssh -i ~/.ssh/ubuntu_vps deploy@203.0.113.10Controleer in die nieuwe serversessie sudo. Na het wachtwoord verwacht je root. Ga hier verder en behoud de eerste toegang.
sudo whoamiInstalleer Nginx en kies de juiste firewallroute
Voer op de server uit:
sudo apt install nginx
sudo systemctl enable --now nginxSta bij de provider TCP 22 toe vanaf je beheerslocatie en TCP 80/443 voor bezoekers. Behoud een afwijkende SSH-poort als je die gebruikt. Providerregels en gastfirewall moeten allebei passen.
Oracle Cloud Ubuntu: sla het volledige UFW-blok hieronder over. UFW kan noodzakelijke imageregels verstoren en opstartproblemen veroorzaken. Behoud iptables, inclusief iSCSI-regels voor boot- en blockvolumes. Configureer OCI security lists/NSG’s en de gedocumenteerde gastregels voor HTTP/HTTPS; wis de regels of firewallpakketten niet.
Andere nieuwe images: gebruik UFW alleen als de provider dit ondersteunt en geen andere firewall beheert. Sta de werkelijke SSH-poort toe vóór inschakelen; hieronder is dat 22.
sudo apt install ufw
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verboseTest na beide routes een nieuwe SSH-login. Een al bestaande sessie is daarvoor geen bewijs. Houd toegang en console beschikbaar en laat eerst de externe HTTP-controle slagen.
Publiceer een eigen Nginx-site
Maak op de server een nieuwe documentroot en configuratie. Vervang de hostnaam binnen het blok. Behoud de geciteerde EOF-markeringen zodat de shell $uri niet uitbreidt.
sudo install -d -m 755 /var/www/first-site
printf '%s\n' '<!doctype html><html lang="nl"><title>Eerste publicatie</title><h1>Deze pagina draait op een Ubuntu VPS</h1></html>' | sudo tee /var/www/first-site/index.html
sudo tee /etc/nginx/sites-available/first-site >/dev/null <<'EOF'
server {
listen 80;
listen [::]:80;
server_name app.example.com;
root /var/www/first-site;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
EOF
sudo ln -s /etc/nginx/sites-available/first-site /etc/nginx/sites-enabled/first-site
sudo nginx -tHerlaad alleen nadat nginx -t succesvol is:
sudo systemctl reload nginxVraag de site op je computer aan via het serveradres vóór een DNS-wijziging. Verwacht je eigen kop, niet de standaard Nginx-pagina.
curl --resolve app.example.com:80:203.0.113.10 http://app.example.com/Koppel DNS en schakel HTTPS in
Maak een A-record naar de IPv4 van de VPS. Voeg AAAA alleen toe bij werkende IPv6. Een verouderd AAAA-record kan bezoekers en certificaatcontrole verkeerd sturen. Deze procedure gebruikt directe DNS zonder proxy.
Controleer lokaal http://app.example.com/ zonder --resolve. Ga pas verder als je eigen pagina verschijnt. Installeer op de server Certbot en de Nginx-plugin uit Ubuntu; hiervoor moet Universe beschikbaar zijn. Los ontbrekende pakketten eerst op.
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d app.example.com --redirect
sudo nginx -t
sudo certbot renew --dry-run
systemctl list-timers --all certbot.timerVolg de vragen over e-mail en voorwaarden. Certbot past deze site aan en maakt een HTTPS-redirect. Controleer de timer; activeer een inactieve timer met sudo systemctl enable --now certbot.timer. Houd poort 80 bereikbaar voor HTTP-validatie en vernieuwing.
Controleer van buitenaf en na een herstart
Voer lokaal uit. HTTP hoort door te verwijzen, HTTPS moet een geldig certificaat en jouw pagina leveren. Gebruik geen -k om certificaatfouten te verbergen.
curl -I http://app.example.com/
curl -I https://app.example.com/
curl -fsS https://app.example.com/Voer op de nog tijdelijke server sudo reboot uit. Verbind na terugkomst als deploy, controleer systemctl is-active nginx en herhaal HTTPS extern. De herstart verbreekt SSH bewust; gebruik de console als de machine niet terugkomt.
Los een mislukte controle gericht op
Schuif de tabel opzij om alle kolommen te bekijken.
| Symptoom | Eerste controle |
|---|---|
| SSH-time-out | Adres, provider- en gastfirewall, console |
| Publickey-fout | Gebruikersnaam, privésleutel, authorized_keys en rechten |
| Standaard Nginx-pagina | DNS-doel, server_name, ingeschakelde site |
| Certificaatfout | A/AAAA en bereikbaarheid van poort 80 |
| Nginx start niet | nginx -t en journalctl -u nginx -n 50 --no-pager |
Gebruik de SSH-handleiding om netwerk, service en sleutels te onderscheiden. Bewaar bestanden, Nginx-configuratie, DNS en opbouwstappen buiten de VPS. Bescherm certificaatprivésleutels wanneer je die apart bewaart.
Oefen bestandsherstel op een andere machine. Volledig herstel vraagt ook overige bestanden, certificaten en services. Stel bereikbaarheids- en verloopmeldingen in. Deze handleiding installeert geen database of applicatieruntime; voeg die bewust toe en meet hun resourcegebruik.
Voor een nieuwe Ubuntu 24.04 VPS met directe DNS en SSH-poort 22. OCI Ubuntu slaat UFW over. De volledige procedure is niet op elke providerimage uitgevoerd.
Veelgestelde vragen
Kan ik dit op een bestaande website uitvoeren?
Begin op een aparte test-VPS. Een bestaande server vraagt controle van bestanden, firewall, sites en herstelprocedure voordat je iets wijzigt.
Installeert dit WordPress of een database?
Nee, dit levert een statische HTTPS-site. Een applicatie heeft extra services, controles en een eigen databaserecovery nodig.
Waarom een nieuwe SSH-sessie testen?
De oude sessie kan blijven werken terwijl een nieuwe verbinding wordt geblokkeerd. Controleer daarom opnieuw inloggen én sudo.