Q1, hoofdstuk 1: Een VPS configureren met Docker en een reverse proxy
Een VPS en besturingssysteem kiezen
Voor mijn eerste VPS koos ik de Starter VPS van OVHcloud voor €0,81 per maand. Deze heeft 1 vCore, 2 GB RAM, 20 GB SSD SATA en 100 Mbps onbeperkte bandbreedte. Spotgoedkoop en perfect om mee te experimenteren. (Kleine kanttekening: je kunt altijd upgraden naar een andere VPS, maar niet naar de nieuwere VLE-reeks van OVH.)
Zijn er verborgen kosten? Bij de meeste VPS-providers kun je een besturingssysteem en extra beheersoftware kiezen. Niet alles is gratis. Ook snapshots en geautomatiseerde back-ups zijn vaak betaalde opties. Voor nu heb ik niets extra’s nodig.
Ik kies voor Ubuntu 24.04, een van de populairste Linux-distributies. Misschien niet de allerbeste keuze, maar juist door de populariteit is het makkelijk om oplossingen te vinden als ik ergens tegenaan loop. Ik heb niet gekozen voor de kant-en-klare Ubuntu-versie met Docker, want als ik al niet zelf Docker kan installeren, kan ik dit hele project net zo goed opgeven.
Toegang tot de VPS en een paar beveiligingsstappen
Zodra je de inloggegevens van je provider hebt ontvangen, begint het echte werk.
Hoe beheer je een VPS?
We gaan terug naar de basis: de command-line interface. Een zwart scherm met witte tekst. Sommigen herinneren zich MS-DOS misschien nog. (Ik hoop dat mijn R&D-collega’s dit niet lezen.) Hoewel ik later een UI toevoeg, blijft een deel van het beheer text based via de commandline.
Ik gebruik PuTTY, maar je kunt ook OpenSSH of Windows PowerShell gebruiken.
Een nieuwe gebruiker aanmaken
Je VPS heeft waarschijnlijk een standaardgebruikersnaam en hopelijk een willekeurig gegenereerd wachtwoord. In mijn geval was de gebruiker ubuntu, een naam die makkelijk te raden is voor kwaadwillenden. Daarom maken we eerst een nieuwe gebruiker aan en verwijderen we later de standaardgebruiker.
Een nieuwe gebruiker aanmaken:
sudo adduser USERNAME
Voer een wachtwoord in (en bewaar het veilig). Vervolgens geven we de nieuwe gebruiker dezelfde rechten als de standaardgebruiker:
sudo usermod -aG sudo USERNAME
De poort wijzigen
Je VPS gebruikt standaard poort 22 voor SSH. Dit is een bekend doelwit voor aanvallen. We wijzigen deze poort naar een willekeurig 5-cijferig getal (onder de 65535).
Open het configuratiebestand met:
sudo nano /lib/systemd/system/ssh.socket
Zoek de regel:
[Socket]
ListenStream=22
Accept=no
En wijzig 22 naar een ander getal, dit kan zelfs 5 cijfers zijn, maar niet hoger dan 65535.

Sla het bestand op en herstart de VPS:
sudo reboot
De standaardgebruiker verwijderen
Log opnieuw in met de nieuwe gebruiker en de nieuwe poort, en verwijder de oude gebruiker:
sudo userdel -r -f USERNAME
De server updaten
Tijd voor een korte pauze, en een update van de server met het volgende commando:
sudo apt update && sudo apt upgrade -y
Is de server nu superveilig?
Veilig genoeg voor nu, maar het kan inderdaad nog veel beter, daarover zijn genoeg andere blogs.
Install Docker
In de laatste stap van dit proces installeer ik Docker Engine op deze VPS. Met Docker kun je meerdere services op dezelfde VPS draaien, maar in een kleine, toegewijde en geïsoleerde omgeving: een container. Ja, je kunt het vergelijken met een enorm vrachtschip vol containers.
Ik volgde de officiële installatiegids van Docker. De 'convenience script'-methode werkte niet goed vanwege een detectiefout in de Ubuntu-versie. De beste optie bleek installatie via de officiële apt-repository, 'Set up and install Docker Engine from Docker's apt repository'.

Interface voor Docker toevoegen: Dockge
Je kunt Docker volledig via de command-line beheren, maar een interface maakt het makkelijker. In plaats van Portainer koos ik voor Dockge, een lichte maar effectieve beheeromgeving.
De installatie is werkelijk supersimpel volg de stappen op:
Na installatie is Dockge bereikbaar op: http://IP-ADRES:5001
Tijd voor de eerste container: Nginx Proxy Manager
Met Nginx Proxy Manager kun je domeinen toewijzen aan containers en SSL-certificaten beheren.
- Ga naar Dockge
- Klik op de blauwe knop "+Compose"
- Geef de stack een naam
- Kopieer de docker-compose.yml van nginxproxymanager.com/setup
version: '3.8'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
# These ports are in format <host-port>:<container-port>
- '80:80' # Public HTTP Port
- '443:443' # Public HTTPS Port
- '81:81' # Admin Web Port
# Add any other Stream port you want to expose
# - '21:21' # FTP
# Uncomment the next line if you uncomment anything in the section
# environment:
# Uncomment this if you want to change the location of
# the SQLite DB file within the container
# DB_SQLITE_FILE: "/data/database.sqlite"
# Uncomment this if IPv6 is not enabled on your host
# DISABLE_IPV6: 'true'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
- Plak de configuratie in Dockge in de rechter texteditor over alle informatie die begint met version: '3.8'
- Klik op Save en Deploy. De interface laat nu zien dat er gegevens opgehaald worden voor de container image.
- Log in op http://IP-ADRES:81/login met:
- E-mail: admin@example.com
- Wachtwoord: changeme
- Er wordt nu gevraagd om deze inloggegevens te wijzigen.
Yes! Finished!
De VPS is nu geconfigureerd en klaar om een Ghost-website te hosten in de volgende stappen.
Member discussion