
Eigene Dienste auf einem eigenen Server zu betreiben war lange eine Sache für Spezialisten. Wer eine Anwendung samt Datenbank, Webserver und passenden Bibliotheksversionen von Hand installierte, kämpfte schnell mit Abhängigkeiten und mit Updates, die an anderer Stelle etwas kaputt machten.
Ein Container bündelt eine Anwendung mit allem, was sie zum Laufen braucht, und läuft isoliert vom Rest des Systems. Zwei Anwendungen mit unterschiedlichen PHP- oder Datenbankversionen stören einander nicht, und ein misslungenes Update lässt sich zurückdrehen, indem man das vorherige Image wieder startet. Mit Docker Compose beschreibt eine einzige Textdatei, welche Container zusammengehören, welche Ports sie öffnen und wo sie Daten ablegen.
Wie das bei einer konkreten Anwendung aussieht, zeigt die Anleitung Nextcloud mit Docker installieren auf dem Blog von hosting.de. Sie startet Nextcloud und eine MariaDB-Datenbank als zwei Dienste, hängt beide an persistente Volumes und öffnet die Weboberfläche zunächst auf Port 8080. Das Muster aus Anwendung, Datenbank und Volume wiederholt sich bei fast jedem Self-Hosting-Projekt, von Passwortmanagern bis zu Automatisierungsplattformen.
Der Preis dieser Bequemlichkeit ist eine zusätzliche Abstraktionsschicht. Wer ein Problem untersuchen will, muss wissen, ob es im Container, im Netzwerk zwischen Containern oder auf dem Host liegt. Das lässt sich lernen, und die meisten Fehler verraten sich im Protokoll des betroffenen Containers. Für Einsteiger lohnt es sich, zunächst nur einen Dienst mit Datenbank zu betreiben und erst danach weitere Anwendungen auf demselben Server zu ergänzen.
Die Hürde ist niedriger als früher, auch weil Docker zum Standardwerkzeug geworden ist. In der Developer Survey 2025 von Stack Overflow gaben 71 Prozent der Befragten an, Docker zu nutzen, ein Plus von 17 Prozentpunkten gegenüber dem Vorjahr, bei über 49.000 Antworten aus 177 Ländern. Deutschland gehörte zu den zehn Ländern mit den meisten Teilnehmern. Wer Hilfe sucht, findet für fast jede Anwendung ein fertiges Image und eine Compose-Vorlage.
Praktisch braucht es einen Linux-Server mit Root-Zugriff, einen Domainnamen, der auf dessen IP-Adresse zeigt, und genug Arbeitsspeicher. Für Nextcloud nennt die Anleitung mindestens 1 GB RAM als Ausgangsbasis und 2 GB oder mehr für einen reibungslosen Betrieb mit vielen Nutzern oder großen Datenmengen. Dazu kommen Grundkenntnisse in SSH und in der Kommandozeile. Wer beides noch nie benutzt hat, plant für den ersten Nachmittag Zeit zum Üben ein und beginnt mit einer Anwendung ohne wichtige Daten.
Ein Hinweis zur Dimensionierung. Container teilen sich Arbeitsspeicher und CPU des Hosts, und jede zusätzliche Anwendung erhöht den Bedarf. Der Hoster kann die Ressourcen oft nachträglich erhöhen, bei vielen Angeboten genügt der Wechsel auf eine größere Stufe. Plant man mehrere Dienste ein, ist ein Server mit zwei bis vier Gigabyte der realistischere Startpunkt als das Minimum.
Eine Compose-Datei besteht aus Diensten, Volumes und Netzwerken. Jeder Dienst nennt ein Image, etwa nextcloud oder mariadb, dazu Umgebungsvariablen wie Datenbankname und Benutzer sowie die Ports, die nach außen sichtbar sind. Der Abschnitt volumes entscheidet über das Schicksal der Daten, denn Container sind kurzlebig, und alles, was nicht in einem Volume liegt, verschwindet beim Löschen oder Neuerstellen.
Ein häufiger Anfängerfehler betrifft die Zugangsdaten. Beispieldateien enthalten Passwörter wie mysecretpassword, die beim Kopieren unverändert in Produktion landen. Besser ist es, Geheimnisse in eine separate Datei mit dem Namen .env auszulagern, die nicht ins Versionsverwaltungssystem gehört, und lange Zufallswerte zu verwenden. Auch die Versionsangabe verdient einen Blick, denn das Image mit dem Tag latest holt bei jedem Neustart die neueste Version und kann so ungeplant ein Hauptversions-Update einspielen.
Mit dem Befehl docker compose up -d starten die Dienste im Hintergrund, docker ps zeigt die laufenden Container, und docker logs liefert Fehlermeldungen, wenn etwas nicht startet. Die Schreibweise mit Leerzeichen gehört zum Compose-Plugin, das das ältere, eigenständige docker-compose abgelöst hat.
Ein laufender Container ist noch kein sicherer Dienst. Sobald die Anwendung aus dem Internet erreichbar ist, braucht sie verschlüsselte Verbindungen. Üblich ist ein Reverse Proxy wie Nginx oder Traefik, der auf Port 443 lauscht, ein Zertifikat von Let's Encrypt einsetzt und Anfragen an den Container weiterreicht. Die Anleitung von hosting.de beschreibt genau diesen Weg mit Nginx und Certbot.
Bei der Firewall überrascht Docker manche Einsteiger. Veröffentlichte Ports umgehen die Regeln von Werkzeugen wie ufw, weil Docker eigene Einträge in iptables setzt. Wer eine Datenbank nur für andere Container erreichbar machen will, veröffentlicht ihren Port deshalb gar nicht und lässt sie im internen Docker-Netzwerk lauschen. Zusätzlich sollten SSH-Zugänge mit Schlüsseln statt Passwörtern abgesichert werden.
Sinnvoll ist außerdem eine kurze Prüfliste vor dem Livegang. Prüfen Sie, ob der Dienst nur noch über HTTPS erreichbar ist, ob der Admin-Zugang durch ein starkes Passwort und möglichst eine Zwei-Faktor-Authentifizierung geschützt ist und ob eine Überwachung meldet, wenn das Zertifikat abläuft.
Selbst gehostete Dienste brauchen laufende Pflege. Images erscheinen regelmäßig neu, und Sicherheitslücken in Anwendung, Datenbank oder Basis-Image schließen sich nur, wenn jemand die Updates einspielt. Ein fester Rhythmus hilft, etwa ein Update-Termin pro Monat, vorher ein Backup der Volumes und der Datenbank, nachher ein Test, ob Anmeldung und Synchronisierung funktionieren. Ein Backup zählt erst, wenn die Wiederherstellung einmal geklappt hat.
Wer die Vorteile von Nextcloud ohne diesen Aufwand will, kann die Verwaltung abgeben. Der Blog von hosting.de verweist am Ende der Anleitung selbst auf seine Managed-Nextcloud-Angebote, die in Deutschland gehostet werden und die Wartung übernehmen. Für Lernzwecke bleibt der eigene Container trotzdem eine gute Schule, weil er zeigt, welche Arbeit hinter einem fertigen Dienst steckt.
Beachten Sie schließlich die Datenschutzpflichten. Sobald auf dem Server Daten anderer Personen liegen, etwa Kontakte oder Dateien von Kunden, gelten die Regeln der DSGVO auch für den Eigenbetrieb, einschließlich technischer und organisatorischer Maßnahmen. Für rein private Nutzung greift die Ausnahme für persönliche und familiäre Tätigkeiten.