Communityoplossing

Een website hosten op ZimaOS met Docker

A July 2026 community discussion proposed running Apache in a Docker container on ZimaOS instead of adding a built-in web-hosting stack to the operating system.

Je kunt een website op ZimaOS hosten zonder de eigen webstack van het besturingssysteem aan te passen: draai Apache, Nginx of een andere webserver in een geïsoleerde Docker-container en publiceer een aparte hostpoort, zoals 8080. Zo blijft de configuratie van je website onafhankelijk van de beheerinterface van ZimaOS.

Het communityvoorbeeld laat dat basispatroon zien, maar één detail moet worden gecorrigeerd: in het Dockerfile wordt poort 10000 beschikbaar gesteld, maar Webmin wordt niet geïnstalleerd. Een poort beschikbaar stellen creëert geen achterliggende service.

Gebruik een container in plaats van ZimaOS zelf opnieuw te configureren

ZimaOS gebruikt al webservices voor zijn eigen interface. Het vervangen of opnieuw configureren van die hostservices brengt onnodige risico's met zich mee op het gebied van upgrades en poortconflicten. Een afzonderlijke container krijgt een eigen bestandssysteem, pakketten en poorten.

ZimaOS ondersteunt aangepaste apps op basis van Docker en de actuele Docker Compose-referentie voor apps maakt onderscheid tussen normale Compose-runtime-instellingen en ZimaOS App Store-metadata.

Een eenvoudiger Apache-patroon

Voor een statische of eenvoudige lokale website hoef je niet eerst een volledige Ubuntu-image te bouwen. Met een minimale Compose-service kun je de sitemap koppelen aan een Apache-image:

services:
  web:
    image: httpd:2.4
    restart: unless-stopped
    ports:
      - "8080:80"
    volumes:
      - /path/to/www:/usr/local/apache2/htdocs:ro

Ga vervolgens op het LAN naar http://SERVER-IP:8080. Gebruik een permanente hostmap voor je sitebestanden. Als je PHP, een database, een reverse proxy of een beheerinterface nodig hebt, voeg je die expliciet als services toe in plaats van ervan uit te gaan dat een beschikbare poort ze automatisch levert.

Waarom poort 10000 niet betekende dat Webmin was geïnstalleerd

Het Dockerfile uit het forum installeerde Apache en verschillende hulpprogramma's en declareerde vervolgens EXPOSE 80 443 10000. De poortdeclaratie van Docker is alleen metadata. De image heeft nog steeds een proces nodig dat op 10000 luistert. Omdat Webmin in dat Dockerfile niet werd geïnstalleerd of gestart, kan alleen -p 10000:10000 publiceren geen Webmin-dashboard opleveren.

De documentatie over het publiceren van Docker-poorten legt uit dat gepubliceerde poorten verkeer doorsturen naar een containerservice; ze maken de applicatie zelf niet aan.

Lokale ontwikkeling en publieke hosting hebben verschillende risiconiveaus

Een website die alleen binnen het LAN beschikbaar is, is eenvoudig. Hosting op het openbare internet brengt TLS, DNS, authenticatie, patchbeheer, logging, reverse-proxyconfiguratie en blootstelling via router en firewall met zich mee. Stuur een onbeveiligde beheerinterface zoals Webmin niet door naar het internet alleen omdat de container de poort kan publiceren.

Als het doel een zelfgehoste stack is die altijd actief is, kan een kleine zelfhostende server de werklast uitvoeren, maar de openbare beveiliging blijft afhankelijk van de softwarearchitectuur en netwerkcontroles, niet van het hardwaremodel.

Samengevat

Draai de website als een afzonderlijke Docker-service en publiceer een poort die niet conflicteert. Gebruik doelgerichte images of een duidelijk gedefinieerde Compose-stack, bewaar de sitegegevens buiten de container en voeg Webmin, databases of TLS alleen toe wanneer je die services daadwerkelijk installeert en configureert.