Inloggen
Inloggen

Hoe SSH installeren en configureren op Ubuntu 22.04

Hoe SSH installeren en configureren op Ubuntu 22.04
Hostman Team
Technisch schrijver
Ubuntu-systeem SSH-beveiligingsprotocol
04.07.2025
Reading time: 7 min

SSH is een netwerkprotocol dat een beveiligde verbinding tot stand brengt tussen een client en een server. Alle communicatie is versleuteld, waardoor gegevensdiefstal en andere netwerkaanvallen worden voorkomen.

Stel dat je een cloudserver hebt besteld via Hostman. Je hebt SSH nodig om verbinding te maken met de server en deze te beheren.

Deze handleiding legt uit hoe je SSH installeert en configureert op Ubuntu 22.04.

Vereisten

Zorg ervoor dat aan de volgende vereisten is voldaan voordat je begint:

  • Basiskennis van Linux-opdrachten

Je moet vertrouwd zijn met opdrachten zoals sudo, apt, nano en systemctl. Deze worden vaak gebruikt bij het installeren en configureren van de service. Het is belangrijk dat je vertrouwd bent met de commandoregelomgeving om de service effectief te beheren.

  • Root- of sudo-rechten

Om de server te installeren en te configureren zijn beheerdersrechten vereist. Je moet sudo-toegang hebben of als root zijn ingelogd. Zonder deze rechten kan het installatieproces niet doorgaan.

  • Internetverbinding

Een stabiele verbinding is nodig om de OpenSSH-server en bijbehorende pakketten te downloaden. Zonder werkende verbinding kan het systeem de benodigde softwarecomponenten niet ophalen.

  • Firewall configureren

Als UFW of een andere firewall actief is, wordt externe toegang standaard mogelijk geblokkeerd. Het is essentieel om je firewall zodanig te configureren dat inkomende verbindingen worden toegestaan. Gebruik UFW of een ander hulpprogramma om ervoor te zorgen dat poort 22 open en bereikbaar is.

  • Toegang tot het systeem (lokaal of op afstand)

Je hebt fysieke toegang tot je machine nodig om de service lokaal te configureren, of het systeem moet op afstand bereikbaar zijn via het IP-adres. Zorg ervoor dat het systeem correct is verbonden met het netwerk om een verbinding tot stand te brengen.

Vergeet niet dat je bij Hostman snel en voordelig een cloudserver kunt uitrollen met onze VPS Hosting.

Stap 1: Ubuntu voorbereiden

Het eerste wat je moet doen voordat je begint met het installeren van SSH op Ubuntu, is het bijwerken van alle apt-pakketten naar de nieuwste versies. Gebruik hiervoor de volgende opdracht:

sudo apt update && sudo apt upgrade

Stap 2: SSH installeren

OpenSSH is niet vooraf geïnstalleerd op het systeem, dus laten we het handmatig installeren. Voer de volgende opdracht in de terminal in:

sudo apt install openssh-server

De installatie van alle benodigde componenten begint. Beantwoord systeemvragen met “Ja”.

Zodra de installatie is voltooid, ga je verder met de volgende stap om de service te starten.

Stap 3: SSH starten

Activeer en start de service direct:

sudo systemctl enable --now ssh

Bij een succesvolle start zie je een systeemmelding. 

De optie --now start de service direct en stelt deze ook in om automatisch te starten bij het opstarten van het systeem.

Controleer of de service actief is:

sudo systemctl status ssh

Je zou Active: active (running) moeten zien.

Wil je de service uitschakelen en voorkomen dat deze bij het opstarten wordt gestart? Gebruik dan:

sudo systemctl disable ssh

Stap 4: Firewall configureren

Controleer vóór je via SSH verbinding maakt met de server of de firewall correct is geconfigureerd. In dit geval gebruiken we UFW. Voer de volgende opdracht uit:

sudo ufw status

In de uitvoer zou je moeten zien dat SSH-verkeer is toegestaan. Zo niet, sta dan inkomende SSH-verbindingen toe met het volgende commando:

sudo ufw allow ssh

Stap 5: Verbinden met de server

Zodra je alle voorgaande stappen hebt voltooid, kun je inloggen op de server via het SSH-protocol. 

Hiervoor heb je het IP-adres of domein van de server nodig en de gebruikersnaam van een gebruiker die op de server is aangemaakt.

Gebruik het IP-adres of domein en een gebruikersnaam:

ssh gebruikersnaam@IP_adres

Of: 

ssh gebruikersnaam@domein

Belangrijk: om succesvol verbinding te maken met een externe server, moet SSH zijn geïnstalleerd en geconfigureerd op zowel de externe server als de computer waarmee je verbinding maakt.

Stap 6 (optioneel): SSH-sleutelpaar aanmaken

Voor extra beveiliging kun je een sleutel gebruiken in plaats van een wachtwoord. Om een sleutel te genereren, gebruik je de volgende opdracht:

ssh-keygen

Stap 7: SSH configureren

Nadat je de vorige vijf stappen hebt voltooid, kun je al op afstand verbinding maken met de server. Je kunt de beveiliging van de verbinding echter verder verbeteren door de standaardpoort te wijzigen of over te schakelen van wachtwoordverificatie naar sleutelverificatie. Deze en andere wijzigingen vereisen het bewerken van het SSH-configuratiebestand.

De hoofdinstellingen van de OpenSSH-server zijn opgeslagen in het hoofdconfiguratiebestand sshd_config (locatie: /etc/ssh). Maak voordat je begint met bewerken een back-up van dit bestand:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.initial

Als je na het bewerken van het configuratiebestand fouten tegenkomt, kun je zonder problemen het originele bestand herstellen.

Na het maken van de back-up kun je doorgaan met het bewerken van het configuratiebestand. Open het bestand met Nano:

sudo nano /etc/ssh/sshd_config

Wijzig in het bestand de poort naar een veiligere. Kies bij voorkeur een waarde uit het dynamische bereik van poorten (49152 - 65535) en gebruik verschillende nummers voor extra veiligheid. Bijvoorbeeld, laten we de poortwaarde wijzigen naar 49532. Haal hiervoor het #-teken weg bij de overeenkomstige regel in het bestand en wijzig de poort zoals getoond in de onderstaande screenshot.

4fd580df 7710 49f3 Ba88 5f79663f289e

Naast deze instelling raden we aan om de wachtwoordverificatie te wijzigen naar een veiligere sleutelverificatie. Haal het #-teken weg bij de overeenkomstige regel en zorg ervoor dat de waarde "Yes" is, zoals weergegeven in de screenshot.

B78f6db1 010f 48a7 A5ff Ce4e6f665691

Laten we nu het inloggen als superuser (root) verbieden door de overeenkomstige regel te wijzigen zoals getoond in de onderstaande afbeelding.

B06df4a0 5d22 4c7a Ba90 47fabd8d0bf5

Er zijn andere instellingen die je kunt aanpassen om de beveiliging van de server te verhogen:

  • UseDNS: Controleert of de hostnaam overeenkomt met het IP-adres. De waarde “Yes” schakelt deze controle in.

  • PermitEmptyPasswords: Voorkomt het gebruik van lege wachtwoorden als de waarde “No” is.

  • MaxAuthTries: Beperkt het aantal mislukte pogingen om binnen één sessie verbinding te maken met de server.

  • AllowUsers / AllowGroups: Bepaalt welke gebruikers en groepen toegang mogen krijgen tot de server:

# AllowUsers Gebruiker1 Gebruiker2
# AllowGroups Groep1 Groep2
  • LoginGraceTime: Stel deze waarde vier keer lager in voor snellere time-outs.

  • ClientAliveInterval: Beperk de tijd van inactiviteit. Na overschrijding van deze limiet wordt de gebruiker afgemeld.

Sla het bestand op en sluit de editor.

Herstart de service om de wijzigingen toe te passen:

sudo systemctl restart ssh

Als je de poort in het configuratiebestand hebt gewijzigd, moet je verbinding maken met de nieuwe poort:

ssh -p poortnummer gebruikersnaam@IP_adres

Of:

ssh -p poortnummer gebruikersnaam@domein

Probleemoplossing bij verbindingsproblemen

  • Controleer of de service draait:
sudo systemctl status ssh
  • Herstart indien nodig:
sudo systemctl restart ssh
  • Zorg dat poort 22 open is:
sudo ufw allow 22
  • Controleer bereikbaarheid:
ping <server-ip-adres>

SSH uitschakelen

Als je om welke reden dan ook externe toegang wilt uitschakelen, volg dan deze stappen:

  1. Service stoppen

Om tijdelijk geen verbindingen toe te staan:

sudo systemctl stop ssh
  1. Automatisch opstarten voorkomen

Om te voorkomen dat SSH wordt gestart bij herstart:

sudo systemctl disable ssh
  1. Controleren of de service is gestopt

Controleer of de service niet meer draait:

sudo systemctl status ssh
  1. De SSH-server verwijderen

Als de service niet langer nodig is, verwijder deze dan inclusief configuratiebestanden:

sudo apt remove openssh-server

Conclusie

Deze handleiding beschrijft stap voor stap hoe je SSH installeert, configureert en veiliger maakt op Ubuntu 22.04. Je kunt nu eenvoudig en veilig verbinding maken met je Ubuntu-server via SSH.

Meer weten over SSH-sleutels? Klik hier.

Ubuntu-systeem SSH-beveiligingsprotocol
04.07.2025
Reading time: 7 min

Vergelijkbaar

Ubuntu-systeem

Een BIND DNS-server opzetten

Een BIND DNS-server opzetten DNS (Domain Name System) is een systeem waarin alle domeinnamen van servers in een specifieke hiërarchie zijn georganiseerd. Waarom hebben we dit nodig? Stel je voor dat je verbinding moet maken met een apparaat met het IP-adres 91.206.179.207. Je kunt dit adres in de opdrachtregel invoeren om de benodigde informatie te krijgen, maar veel van zulke numerieke combinaties onthouden is erg lastig. Daarom zijn er speciale servers gemaakt die domeinnamen omzetten naar IP-adressen. Wanneer je bijvoorbeeld hostman.com in de zoekbalk van je browser invoert, worden de aanvraaggegevens naar een DNS-server gestuurd. Die zoekt in zijn database naar overeenkomsten, stuurt het juiste IP-adres terug naar je apparaat en pas daarna kan de browser de resource rechtstreeks benaderen. Je eigen DNS configureren maakt een flexibelere en nauwkeurigere systeemconfiguratie mogelijk en voorkomt afhankelijkheid van derden. In dit artikel bekijken we hoe je DNS opzet met de BIND-nameserver op Ubuntu. Begrippen Zone: Een deel van de DNS-hiërarchie dat op een DNS-server wordt gehost. Het bepaalt de grenzen waarbinnen een specifieke server of groep servers verantwoordelijk is. Rootservers: DNS-servers met informatie over top-level domains (.ru, .com, enz.). Domein: Een benoemd deel van de DNS-hiërarchie, een specifieke node die andere nodes kan bevatten. DNS-adressen worden van rechts naar links gelezen en beginnen met een punt, waarbij domeinen ook door punten gescheiden zijn. Bijvoorbeeld: het domein poddomen.domen.ru moet worden gelezen als .ru.domen.poddomen. Meestal weerspiegelt de domeinnaam de DNS-hiërarchie, maar de laatste punt wordt weggelaten. FQDN (Fully Qualified Domain Name): Een volledige domeinnaam inclusief alle bovenliggende domeinen. Resource record: Een opslageenheid van informatie, in feite een record dat een naam koppelt aan service-informatie. Het bestaat uit: Naam (NAME): De naam of het IP-adres dat eigenaar is van de zone Time to Live (TTL): Hoelang een record in de DNS-cache blijft voordat het wordt verwijderd Class (CLASS): Netwerktype, meestal IN (Internet) Type (TYPE): Het doel van het record Data (DATA): Aanvullende details Veelvoorkomende resource records A-record: Koppelt een hostnaam aan een IPv4-adres. Elke netwerkinterface kan maar één A-record hebben. website.com.              520    IN     A      91.206.179.207 AAAA-record: Hetzelfde als een A-record, maar voor IPv6. CNAME: Canonical name record, een alias voor een echte naam (doorverwijzing). MX: Specificeert mailhosts voor het domein. Het NAME-veld bevat het bestemmingsdomein, het DATA-veld de prioriteit en host voor het ontvangen van mail. website.com.             17790   IN      MX      10 mx.website.com. website.com.             17790   IN      MX      20 mx2.website.com. NS: Verwijst naar de DNS-server die het domein bedient. PTR: Koppelt een IP-adres aan een domeinnaam (reverse lookup). SOA: Beschrijft de belangrijkste zone-instellingen. SRV: Bevat adressen van servers die interne domeindiensten leveren, zoals Jabber. Vereisten Om de instructies in dit artikel te volgen, heb je minstens twee Ubuntu-servers nodig in hetzelfde datacenter. Je kunt deze servers bij Hostman bestellen. We hebben twee Ubuntu 20.04-servers nodig: een primaire en een secundaire DNS-server, respectievelijk ns1 en ns2. Daarnaast zijn er extra servers die onze geconfigureerde DNS-servers gebruiken. Je moet op elke server superuserrechten hebben. BIND installeren op DNS-servers We gebruiken bind9 als DNS-server. Installeer het bind9-pakket uit de Linux-repository: sudo apt update && sudo apt upgrade -y sudo apt install bind9 Daarnaast is het aan te raden netwerktools te installeren: sudo apt install dnsutils Start daarna de bind9-service: sudo service bind9 start Het hoofdconfiguratiebestand van de server is /etc/bind/named.conf. Het beschrijft algemene instellingen en wordt meestal opgesplitst in meerdere bestanden. named.conf.options Dit bestand bevat de algemene serverparameters: options {         dnssec-validation auto;         auth-nxdomain no;         directory "/var/cache/bind";         recursion no; # recursieve queries naar de nameserver uitschakelen         listen-on {                      172.16.0.0/16;                       127.0.0.0/8;             };         forwarders {              172.16.0.1;             8.8.8.8;           }; }; Controleer of alles correct is ingevoerd met named-checkconf: sudo named-checkconf Als alles klopt, kan de bind-server starten. Primaire DNS-server De primaire DNS-server bewaart de hoofdkopie van het zonebestand. Alle zones komen in de map /etc/bind/master-zones. Maak die aan: sudo mkdir /etc/bind/master-zones Maak een bestand aan voor de zone: sudo touch /etc/bind/master-zones/test.example.com.local.zone Voeg SOA-, NS- en A-records toe: $ttl 3600  $ORIGIN test.example.com.  test.example.com.               IN              SOA  (       ns.test.example.com.     abuse.test.example.com.                                   2022041201                                  10800                                  1200                                  604800                                  3600   )  @                               IN              NS              ns.test.example.com.  @                               IN              NS              ns2.test.example.com.   @                               IN              A                172.16.101.3  ns                              IN               A                172.16.0.5  ns2                             IN              A                172.16.0.6 Controleer met named-checkzone: sudo named-checkzone test.example.com. /etc/bind/master-zones/test.example.com.local.zone named.conf.local Dit is een extra bestand dat in de hoofdconfiguratie wordt ingeladen. Hier definiëren we lokale zones: zone "test.example.com." {                 type master;                 file "/etc/bind/master-zones/test.example.com.local.zone"; }; Controleer de configuratie en herstart bind9 (de -z vlag controleert zonebestanden): sudo named-checkconf sudo named-checkconf -z sudo service bind9 restart sudo service bind9 status Views instellen Views maken het mogelijk om naamresolutie flexibel te beheren voor verschillende subnets. Zet dit in /etc/bind/named.conf: include "/etc/bind/named.conf.options"; acl "local" { 172.16.0.0/16; }; view "local" {                 include "/etc/bind/named.conf.local";                 match-clients { local; }; }; Herstart daarna bind9: sudo service bind9 restart Na de herstart kun je vanaf een andere computer in het lokale netwerk de SOA-record opvragen van server 172.16.0.5: dig @172.16.0.5 -t SOA test.example.com De primaire DNS-server is nu klaar. De volgende secties behandelen de secundaire server, mailserver-instellingen en reverse zones. Secundaire server De eerste stappen zijn hetzelfde: bind9 en dnsutils installeren en starten. Maak vervolgens de map /etc/bind/slave voor zonebestanden en geef de juiste permissies: sudo mkdir /etc/bind/slave sudo chmod g+w /etc/bind/slave Voeg de zone toe in /etc/bind/named.conf.local: zone "test.example.com." {         type slave;         file "/etc/bind/slave/test.example.com.local.zone";         masters { 172.16.0.5; }; }; Views in named.conf: include "/etc/bind/named.conf.options"; acl "local" { 172.16.0.0/16; }; view "local" {         match-clients { local; };         include "/etc/bind/named.conf.local"; }; Controleer en herstart: sudo named-checkconf sudo named-checkconf -z sudo service bind9 restart Zone transfer uitvoeren: sudo rndc retransfer test.example.com rndc retransfer forceert een zone transfer zonder serial-check. Belangrijk: verhoog de serial number altijd wanneer je het zonebestand wijzigt (bij voorkeur datum + increment). Beperk daarna zone transfers op de primaire server met allow-transfer in de zoneconfig (named.conf): zone "test.example.com." {     type master;     allow-transfer { 172.168.0.6; };     file "/etc/bind/master-zones/test.example.com.local.zone"; }; Herstart: sudo service bind9 restart Vanaf hier voer je verdere wijzigingen uit op de primaire server. Een MX-record toevoegen We gebruiken in dit voorbeeld mx als hostnaam. De FQDN wordt mx.test.example.com. Voeg MX-records toe aan /etc/bind/master-zones/test.example.com.local.zone: @   IN  MX  10 mx.test.example.com. @   IN  MX  20 mx2.test.example.com. Werk de serial number in het SOA-record bij: $TTL 3600 @   IN  SOA ns.test.example.com. admin.test.example.com. (         2024071101  ; Serial number         10800       ; Refresh         1200        ; Retry         604800      ; Expire         3600        ; Minimum TTL ) Controleer de zonefile: sudo named-checkzone test.example.com. /etc/bind/master-zones/test.example.com.local.zone Herlaad BIND: sudo service bind9 reload Reverse DNS instellen Reverse DNS zet IP-adressen om naar domeinnamen. Voorbeeld: 192.168.1.10 wordt 10.1.168.192.in-addr.arpa. Maak een reverse zonefile: sudo nano /etc/bind/master-zones/16.172.in-addr.arpa.zone Voeg data toe: $TTL    3600  16.172.in-addr.arpa.            IN      SOA  (  ns.test.example.com.  admin.test.example.com.                                  2022041202                                  10800                                  1200                                  604800                                  3600  )                                 IN      NS            ns.test.example.com.                                  IN      NS           ns2.test.example.com.    3.101.16.172.in-addr.arpa.      IN      PTR              test.example.com.  5.0.16.172.in-addr.arpa.        IN      PTR           ns.test.example.com.  6.0.16.172.in-addr.arpa.        IN      PTR          ns2.test.example.com.  2.101.16.172.in-addr.arpa.      IN      PTR         mail.test.example.com. Controleer: sudo named-checkzone 16.172.in-addr.arpa /etc/bind/master-zones/16.172.in-addr.arpa.zone Voeg in named.conf.local toe: zone "16.172.in-addr.arpa." {                 type master;                 file "/etc/bind/master-zones/16.172.in-addr.arpa.zone";                 allow-transfer { 172.16.0.6; };         }; Herstart: sudo named-checkconf sudo named-checkconf -z sudo service bind9 restart Test met dig: dig @172.16.0.5 -x 172.16.0.5 Op de secundaire server voeg je in named.conf.local toe: zone "16.172.in-addr.arpa." {      type slave;      file "/etc/bind/slave/16.172.in-addr.arpa.zone";      masters { 172.16.0.5; };  }; Externe domeinzone Om queries van buitenaf te verwerken, voeg je het externe IP toe aan listen-on in named.conf.options: listen-on {     aaa.bbb.ccc.ddd/32; # ons externe IP     172.16.0.0;     127.0.0.0/8 } Maak de zonefile aan (serial number aanpassen!): sudo nano /etc/bind/master-zones/test.example.com.zone Inhoud: $TTL 3600 $ORIGIN test.example.com. test.example.com. IN SOA  (          ns.test.example.com.     admin.test.example.com.                                 2022041205                                 10800                                 1200                                 604800                                 3600   ) @ IN NS ns.test.example.com. @ IN NS ns2.test.example.com. @ IN A aaa.bbb.ccc.ddd ns IN A aaa.bbb.ccc.ddd ns2  IN A eee.fff.ggg.hhh Maak een apart bestand voor externe view zones: sudo nano /etc/bind/named.conf.external zone "test.example.com." {      type master;      file "/etc/bind/master-zones/test.example.com.zone";     allow-transfer { 172.16.0.6; }; }; Voeg in named.conf toe: acl "external-view" { aaa.bbb.ccc.ddd; }; view "external-view" {     recursion no;     match-clients { external-view; };     include "/etc/bind/named.conf.external"; }; Controleer en herstart: sudo named-checkconf -z sudo named-checkzone test.example.com. /etc/bind/master-zones/test.example.com.zone sudo service bind9 restart sudo service bind9 status Op de secundaire server zet je in named.conf.options het externe adres bij listen-on, maak je een named.conf.external aan met slave-zone en voer je transfer uit: sudo rndc retransfer test.example.com IN external-view Debugging Bij DNS-setup is logging erg belangrijk. BIND9 kan uitgebreide logging-configuraties aan. Maak log.conf: sudo nano /etc/bind/log.conf Inhoud: logging {     channel bind.log {         file "/var/lib/bind/bind.log" versions 10 size 20m;         severity debug;         print-category yes;         print-severity yes;         print-time yes;     };     category queries { bind.log; };     category default { bind.log; };     category config { bind.log; }; }; Include in hoofdconfig: include "/etc/bind/log.conf"; Herstart: sudo service bind9 restart Conclusie In deze gids hebben we DNS geconfigureerd op een Ubuntu-server met het bind9-pakket. Na het volgen van de stappen kunnen de twee DNS-servers worden gebruikt voor naamresolutie in het netwerk. Om de custom DNS-servers te gebruiken, configureer je je andere servers om 172.16.0.5 en 172.16.0.6 als DNS-servers te gebruiken. Deze setup kan dienen als basis voor verdere uitbreidingen, zoals het opzetten van een mailserver.
17 February 2026 · 16 min to read
Docker-platform

Docker Compose installeren op Ubuntu: complete handleiding

Docker Compose heeft de manier waarop ontwikkelaars containerized applicaties benaderen fundamenteel veranderd, vooral wanneer meerdere onderling afhankelijke services moeten worden gecoördineerd. Deze tool vervangt handmatig containerbeheer door een gestructureerde, YAML-gestuurde workflow, waarmee teams volledige applicatie-architecturen in één configuratiebestand kunnen definiëren. Voor Ubuntu-omgevingen betekent dit reproduceerbare deployments, eenvoudiger schalen en minder operationele overhead. Deze handleiding biedt een frisse kijk op de installatie en het gebruik van Docker Compose en geeft diepere inzichten in de praktische implementatie. Vereisten Voordat je met deze tutorial begint, moet het volgende zijn geregeld: Implementeer een Ubuntu cloud server-instance bij Hostman. Zorg dat je een gebruikersaccount hebt met sudo-rechten of root-toegang, zodat je pakketten kunt installeren en Docker kunt beheren. Docker moet geïnstalleerd zijn en actief draaien op de server, aangezien Docker Compose bovenop de Docker Engine werkt. Waarom Docker Compose belangrijk is Moderne applicaties bestaan vaak uit meerdere onderling verbonden componenten, zoals API’s, databases en caching-lagen. Het afzonderlijk beheren van deze onderdelen met Docker-commando’s wordt al snel omslachtig naarmate de complexiteit toeneemt. Docker Compose lost dit op door alle services, netwerken en opslagvereisten te declareren in één docker-compose.yml-bestand. Deze aanpak zorgt voor consistentie tussen omgevingen—of je nu lokaal op een Ubuntu-machine werkt of op een cloudserver. Neem bijvoorbeeld een webapplicatie met een Node.js-backend, een PostgreSQL-database en een Redis-cache. Zonder Docker Compose vereist elk onderdeel een aparte docker run-opdracht met nauwkeurige netwerkparameters. Met Compose worden deze relaties één keer vastgelegd, waardoor je de applicatie met één enkele opdracht kunt starten en stoppen. Docker Compose installeren Volg deze stappen om Docker Compose op je Ubuntu-systeem te installeren. Stap 1: Controleren of Docker is geïnstalleerd en actief is Docker Compose functioneert als een uitbreiding van Docker, dus controleer eerst de status: sudo systemctl status docker Als de service niet actief is, start deze met: sudo systemctl start docker Stap 2: Systeempakketten bijwerken Werk de pakketlijsten bij om toegang te krijgen tot de nieuwste softwareversies: sudo apt-get update Stap 3: Basis-hulpprogramma’s installeren Voor veilige communicatie met de Docker-repositories zijn deze pakketten vereist: sudo apt-get install ca-certificates curl Stap 4: Docker GPG-sleutel configureren Authenticeer Docker-pakketten door de cryptografische sleutel toe te voegen: sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc Deze stap zorgt ervoor dat pakketten tijdens het transport niet zijn gewijzigd. Stap 5: Docker-repository toevoegen Voeg het Docker-repository toe dat past bij jouw Ubuntu-versie: echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null Het commando detecteert automatisch de juiste Ubuntu-versie via VERSION_CODENAME. Stap 6: Docker Compose-plugin installeren Werk de repositories bij en installeer de Compose-extensie: sudo apt update sudo apt-get install docker-compose-plugin Stap 7: Installatie verifiëren Controleer of Docker Compose correct is geïnstalleerd: docker compose version Voorbeeldoutput: Docker Compose version v2.33.0 Een praktisch Docker Compose-project opzetten We implementeren een eenvoudige webserver met Nginx om de mogelijkheden van Docker Compose te demonstreren. 1. Projectmap initialiseren Maak een aparte werkmap aan: mkdir ~/compose-demo && cd ~/compose-demo 2. Services definiëren in docker-compose.yml Maak het configuratiebestand aan: nano docker-compose.yml Voeg de volgende inhoud toe: services:   web:     image: nginx:alpine     ports:       - "8080:80"     volumes:       - ./app:/usr/share/nginx/html Uitleg: services: Hoofdelement waarin containers worden gedefinieerd web: Aangepaste servicenaam image: Alpine-gebaseerde Nginx-image met een kleine footprint ports: Koppelt hostpoort 8080 aan containerpoort 80 volumes: Synchroniseert de lokale app-map met de webroot van de container 3. Webinhoud aanmaken Maak de HTML-structuur: mkdir app nano app/index.html Voeg deze HTML toe: <!DOCTYPE html> <html lang="en"> <head>   <meta charset="UTF-8">   <title>Docker Compose Test</title> </head> <body>   <h1>Hello from Docker Compose!</h1> </body> </html> Containers orkestreren: van start tot afsluiten 1. Services starten in de achtergrond docker compose up -d Docker Compose downloadt automatisch de Nginx-image indien nodig en configureert het netwerk. 2. Containerstatus controleren docker compose ps -a 3. Webapplicatie openen Ga lokaal naar http://localhost:8080 of op een externe server naar http://<SERVER_IP>:8080. De testpagina zou zichtbaar moeten zijn. 4. Problemen analyseren via logs Bij problemen kun je de logs bekijken: docker compose logs web 5. Netjes stoppen en opruimen Containers tijdelijk stoppen: docker compose stop Alle projectresources verwijderen: docker compose down Commandoreferentie: meer dan de basis Deze commando’s breiden het containerbeheer verder uit: docker compose up --build – Images opnieuw bouwen vóór het starten docker compose pause – Containers pauzeren zonder ze te beëindigen docker compose top – Actieve processen in containers tonen docker compose config – De samengestelde configuratie valideren en bekijken docker compose exec – Commando’s uitvoeren in actieve containers(bijv. docker compose exec web nginx -t om de Nginx-configuratie te testen) Conclusie Docker Compose maakt van multi-container-orkestratie een gestroomlijnd en herhaalbaar proces in plaats van een handmatige en foutgevoelige taak. Door Docker Compose te installeren, services in YAML te definiëren en de essentiële commando’s te gebruiken, kun je complexe applicaties met vertrouwen beheren.
14 January 2026 · 6 min to read
PHP-scripttaal

Hoe PHP en PHP-FPM te installeren op Ubuntu 24.04

In deze handleiding leggen we uit hoe je PHP en PHP-FPM installeert op Ubuntu 24.04. PHP, wat staat voor Hypertext Preprocessor, is een veelgebruikte open-source programmeertaal die vooral wordt ingezet voor webontwikkeling. PHP-FPM is de aanbevolen FastCGI-implementatie voor PHP, bijzonder geschikt voor websites met veel verkeer. Aan het einde van deze gids draait PHP correct op je server. Bekijk eerst onze instructies over het opzetten van een server met Ubuntu. Vereisten Zorg ervoor dat je beschikt over: Ubuntu 24.04 LTS geïnstalleerd op de server Een gebruikersaccount met sudo-rechten Basiskennis van het werken met de command-line Een stabiele internetverbinding om pakketten te downloaden Werk het systeem bij met de volgende commando's: sudo apt updatesudo apt upgrade Apache installeren Installeer de Apache-webserver: sudo apt install apache2 PHP installeren Begin met het installeren van PHP op Ubuntu 24.04. Open een terminal en voer uit: sudo apt install php Dit installeert de basis PHP-pakketten, inclusief de command-line interface en standaardbibliotheken. Controleer de installatie: php -v PHP-extensies installeren Extensies breiden PHP uit met extra functionaliteit. Installeer populaire extensies met: sudo apt install php-curl php-mbstring php-xml Korte uitleg: php-mysql: verbinding met MySQL-databases php-gd: afbeeldingsmanipulatie php-curl: communicatie met andere servers php-mbstring: ondersteuning voor multibyte strings php-xml: ondersteuning voor XML php-zip: ondersteuning voor ZIP-bestanden Voor extra extensies zoek je met: apt-cache search php- PHP-FPM installeren en configureren PHP-FPM is essentieel voor websites met veel verkeer. Volg deze stappen om het te installeren en configureren: Installeer het pakket: sudo apt install php-fpm Start de PHP-FPM-service. De versienummers kunnen variëren afhankelijk van je installatie: sudo systemctl start php8.3-fpm Zorg dat PHP-FPM automatisch start bij het opstarten: sudo systemctl enable php8.3-fpm Controleer of PHP-FPM actief is: systemctl status php8.3-fpm Als alles goed werkt, zie je in de uitvoer de status "Active (running)". PHP en PHP-FPM testen Om zeker te zijn dat PHP en PHP-FPM correct werken, maak je een testbestand aan en laat je dit serveren via de webserver. In dit voorbeeld gebruiken we Apache: Genereer een PHP-info bestand. Om PHP-instellingen weer te geven via de functie phpinfo(), voer je het volgende uit: mkdir -p /var/www/htmlecho "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php Stel Apache in voor PHP-FPM. Zorg dat Apache compatibel is met PHP-FPM door het configuratiebestand aan te passen (meestal: /etc/apache2/sites-available/000-default.conf) en voeg het volgende toe: <FilesMatch \.php$>   SetHandler "proxy:unix:/var/run/php/php8.3-fpm.sock|fcgi://localhost/"</FilesMatch> Let op: pas de PHP-versie en het socketpad aan volgens je installatie. Activeer PHP en PHP-FPM met deze instructies: sudo apt install libapache2-mod-phpsudo a2enmod proxy_fcgi setenvif Herstart Apache om de wijzigingen toe te passen: sudo systemctl restart apache2 Open vervolgens je browser en ga naar: http://[server_ip]/info.php Vervang [server_ip] door het IP-adres of domein van je server. Je ziet dan de details van je PHP-installatie. Meerdere PHP-versies installeren Voor bepaalde projecten moet je mogelijk verschillende applicaties draaien, die elk andere functionaliteiten vereisen. Zo beheer en gebruik je meerdere PHP-versies op Ubuntu 24.04: Voeg eerst de PHP-repository toe: sudo apt install software-properties-commonsudo add-apt-repository ppa:ondrej/php && sudo apt update Installeer de PHP-versies die je nodig hebt: sudo apt install php8.1 php8.1-fpm Kies welke PHP-versie actief moet zijn: sudo update-alternatives --set php /usr/bin/php8.1 Als je meerdere PHP-versies gebruikt, zorg er dan voor dat je webserver verwijst naar de juiste PHP-FPM-socket. PHP en PHP-FPM beveiligen: Best practices 1. Houd PHP en PHP-FPM up-to-date Zorg ervoor dat je regelmatig controleert op updates en deze toepast zodra ze beschikbaar zijn. Zo voorkom je bekende beveiligingslekken en houd je je systeem veilig. 2. Configureer PHP veilig Schakel onnodige en mogelijk gevaarlijke functies uit in het php.ini-bestand, zoals exec, shell_exec en eval. Gebruik de open_basedir-richtlijn om toegang van PHP tot bepaalde directories te beperken. Zet display_errors uit in productieomgevingen om foutmeldingen niet aan gebruikers te tonen. Beperk de maximale bestandsgrootte voor uploads en stel grenzen aan de uitvoeringstijd van scripts. Laat PHP draaien onder een apart, beperkt gebruikersaccount om escalatie van rechten te voorkomen. Werk PHP regelmatig bij naar de nieuwste stabiele versie. 3. Gebruik veilige foutafhandeling In ontwikkelomgevingen is het nuttig om fouten te tonen, maar in productie moeten foutmeldingen worden verborgen. Zet display_errors uit en log_errors aan zodat fouten veilig worden gelogd zonder informatie aan gebruikers prijs te geven. 4. Valideer invoer correct Controleer alle gebruikersinvoer zorgvuldig. Gebruik prepared statements bij databasequeries om SQL-injecties te voorkomen en zorg ervoor dat alleen verwachte invoer wordt geaccepteerd. 5. Beveilig de PHP-FPM-configuratie Laat PHP-FPM draaien onder een speciaal, beperkt gebruikersaccount. Beperk toegang tot de socket of poort van PHP-FPM zodat alleen je webapplicatie verbinding kan maken. 6. Schakel open_basedir in Gebruik de open_basedir-instelling om te voorkomen dat PHP toegang krijgt tot directories buiten de opgegeven paden. Hiermee voorkom je dat gevoelige gegevens worden blootgesteld via verkeerde requests. 7. Gebruik HTTPS Beveilig alle communicatie via HTTPS om man-in-the-middle-aanvallen en andere bedreigingen te voorkomen. Dwing HTTPS af op alle pagina’s van je applicatie. Conclusie Met deze handleiding heb je PHP en PHP-FPM succesvol geïnstalleerd op Ubuntu 24.04. Je server is nu gereed om dynamische webapplicaties te draaien. Vergeet niet om je systeem en pakketten regelmatig bij te werken om de prestaties en veiligheid te waarborgen. Als je deze instructie nuttig vond, bekijk dan zeker ook onze Cloud Servers om je cloudworkflow te versnellen!
10 July 2025 · 5 min to read

Heb je vragen,
opmerkingen of zorgen?

Onze professionals staan altijd klaar om je te helpen,
of je nu hulp nodig hebt of gewoon niet weet waar te beginnen
E-mail ons
Hostman's Support