Deployment-track Les 2 van 8

🖥️ Server huren & inrichten

Van lege Ubuntu-VPS naar een veilige basis voor je app — root uitschakelen, firewall aan.

⏱ 30 min6 stappen Vereist: Les 1 — Wat is deployment?
Stap 1 / 6

Een VPS bestellen

Een VPS bestel je bij een hostingprovider. Na bestellen krijg je een IP-adres en een root-wachtwoord (of SSH-key). Voor deze track gebruiken we Ubuntu 22.04 LTS of Ubuntu 24.04 LTS.

Stappenplan bij DigitalOcean (voorbeeld)
  1. 1. Maak een account aan en activeer je GitHub Student Pack-krediet
  2. 2. Klik op "Create Droplet"
  3. 3. Kies: Ubuntu 24.04 LTS, regio Amsterdam (AMS3), Basic shared CPU
  4. 4. Kies de $6/maand plan (1 vCPU, 1 GB RAM, 25 GB SSD)
  5. 5. Voeg je SSH-key toe of kies "Password" (we vervangen dit snel)
  6. 6. Klik "Create Droplet" — na ~1 minuut is je server klaar
📋 Wat je nodig hebt na aanmaken
IP-adres:123.45.67.89
Gebruiker:root
Wachtwoord:per e-mail ontvangen (of SSH-key)
Stap 2 / 6

Eerste login als root

Open je terminal (WSL op Windows, Terminal op Mac) en verbind met je server via SSH. Vervang 123.45.67.89 door het IP-adres van jouw VPS.

Verbinden met de server
ssh root@123.45.67.89

Je wordt gevraagd om het wachtwoord of je SSH-key wordt automatisch gebruikt. Bij eerste verbinding zie je een fingerprint-waarschuwing — typ yes.

Systeem bijwerken — altijd als eerste stap
apt update && apt upgrade -y

Dit kan 1–3 minuten duren. Alle bestaande software wordt bijgewerkt naar de nieuwste versies.

🔁 Komt terug uit de Linux-track

ssh, apt update en apt upgrade heb je al gezien in Linux les 1 en Linux les 8. Hier pas je ze toe op een echte server.

Stap 3 / 6

Non-root gebruiker aanmaken

Als root inloggen is gevaarlijk — elke typfout kan je server beschadigen. We maken een gewone gebruiker met sudo-rechten en schakelen root-login daarna uit.

1. Maak een nieuwe gebruiker aan
adduser deploy

Kies een wachtwoord en druk enter door de vragen (naam etc. mag leeg). Gebruik deploy of je eigen naam als gebruikersnaam.

2. Geef sudo-rechten
usermod -aG sudo deploy
3. Kopieer SSH-keys naar nieuwe gebruiker
rsync --archive --chown=deploy:deploy ~/.ssh /home/deploy

Dit kopieert de authorized_keys van root naar de nieuwe gebruiker, zodat je met dezelfde SSH-key kunt inloggen.

4. Test de nieuwe gebruiker (nieuw terminalvenster!)
ssh deploy@123.45.67.89
sudo whoami  # moet "root" teruggeven
⚠️ Sluit de root-sessie nog NIET

Zorg dat je eerst kunt inloggen met de nieuwe gebruiker voordat je root-login uitschakelt. Anders sluit je jezelf buiten.

Stap 4 / 6

Root-login uitschakelen

Als de nieuwe gebruiker werkt, schakelen we root-login via SSH uit. Aanvallers proberen standaard als root in te loggen — dit blokkeren we.

Bewerk het SSH-configuratiebestand (als root of sudo)
nano /etc/ssh/sshd_config

Zoek de regel PermitRootLogin yes en verander hem naar:

PermitRootLogin no
Optioneel: schakel wachtwoordlogin uit (SSH-key only)
PasswordAuthentication no

Alleen doen als je zeker weet dat je SSH-key werkt!

Herstart de SSH-service
systemctl restart ssh
🔁 Komt terug uit de Linux-track

nano, systemctl restart en SSH-configuratie heb je behandeld in Linux les 6 (services) en Linux les 8 (SSH).

Stap 5 / 6

Firewall instellen met ufw

ufw (Uncomplicated Firewall) is de eenvoudigste manier om je server te beveiligen. Je laat alleen de poorten open die je nodig hebt.

Stel de standaardregels in
ufw default deny incoming
ufw default allow outgoing
Sta SSH, HTTP en HTTPS toe
ufw allow ssh
ufw allow http
ufw allow https
Activeer de firewall
ufw enable
ufw status

Bevestig met y. Status toont alle actieve regels.

Overzicht: welke poorten en waarom
22SSH — jouw toegang tot de server
80HTTP — wordt later doorgestuurd naar HTTPS
443HTTPS — beveiligd webverkeer
Stap 6 / 6

Automatische security-updates

Een server die 24/7 online staat heeft automatische beveiligingsupdates nodig. Ubuntu heeft hier een ingebouwde tool voor: unattended-upgrades.

Installeer de tool
apt install unattended-upgrades -y
Activeer automatische updates
dpkg-reconfigure --priority=low unattended-upgrades

Kies Yes in het venster dat verschijnt.

Controleer of het actief is
systemctl status unattended-upgrades
✅ Jouw server is nu beveiligd
Non-root gebruiker aangemaakt
Root-login uitgeschakeld
Firewall actief (SSH, HTTP, HTTPS)
Automatische security-updates

Kennischeck

Les 2 afronden

Ga door naar: PHP, Composer & MySQL installeren →