Loading...
Mehrere Apps auf einem VPS mit Docker bereitstellen

Mehrere Apps auf einem VPS mit Docker bereitstellen

Lukas Mauser - Co-Founder von sliplane.ioLukas Mauser
5 min

Die Kosten für virtuelle private Server (VPS) sind niedrig. Du kannst einen kleinen Server für etwa 5€ pro Monat mieten. (Hier findest du einige günstige VPS-Anbieter)

Du bekommst vorhersehbare Preise, hohe Rechenleistung, und mit Docker wird es super einfach, mehrere Anwendungen auf einem einzigen Server laufen zu lassen.

Aber ist es sicher, mehrere Apps auf einer Maschine mit Docker zu betreiben? Wie viele Apps passen auf einen Server? Und was solltest du beachten?

Inhaltsverzeichnis

Ist es sicher, mehrere Apps auf einem Host zu betreiben?

Docker-Container laufen ziemlich isoliert voneinander und vom Host-System. Wenn du einige grundlegende Sicherheits-Best-Practices befolgst, kann es als sicher angesehen werden, mehrere Apps auf einem einzigen Host zu betreiben.

Das gesagt, ist es wahrscheinlich riskanter, als jede Anwendung auf einem dedizierten Host laufen zu lassen. Ausfälle und Sicherheitsverletzungen betreffen potenziell mehrere Apps und deren Daten.

Das Hauptproblem, das ich erlebt habe, war, dass einzelne Container die gesamte CPU und den Speicher beanspruchten, wodurch alle anderen Apps darunter litten.

Es kommt letztendlich auf die Auswirkungen potenzieller Ausfälle an. Du brauchst wahrscheinlich keine 99,999% Verfügbarkeit für einen News-Aggregator oder ein Hobbyprojekt. Und wenn du keine wichtigen Daten speicherst, ist der Schaden durch Datenverlust ebenfalls gering.

Dieses Setup eignet sich gut für:

  • risikoarme Anwendungen mit wenig Traffic
  • Hintergrundjobs
  • Entwicklungsumgebungen
  • ein Homelab
  • Indie-Hacking-Projekte
  • interne Tools
  • Open-Source-Tools

Oder kurz gesagt: alles, was keine enterprise-grade Verfügbarkeit und Sicherheit benötigt.

Wie viele Anwendungen passen auf einen Server?

Das hängt natürlich stark von deinen Anwendungen ab.

Um dir eine grobe Vorstellung zu geben:

Ich hatte eine Mischung aus kleinen Websites, APIs und Datenbanken (insgesamt etwa 15 verschiedene Anwendungen) über mehrere Monate hinweg ohne Probleme auf einem VPS mit 2 GB RAM, 2 geteilten vCPUs und 40 GB Festplatte laufen.

Das ist eine der kleinsten Maschinen, die mein Host anbietet, aber um fair zu sein, sind diese Apps ziemlich leichtgewichtig, bekommen kaum Traffic und benötigen daher kaum Ressourcen.

Du kannst Dutzende solcher kleinen Anwendungen auf einem einzigen Server betreiben. Andererseits kann eine einzelne App deine Maschine überlasten, wenn sie mehr Traffic bekommt.

Es ist sehr schwer, Ressourcenverbrauch ohne Daten zu schätzen. Aber vielleicht hilft dir etwas allgemeine Weisheit:

  • mehr Anfragen = mehr Ressourcen nötig
  • schwere Daten = mehr Ressourcen nötig. Bilder oder Videos durch deinen Server zu leiten erfordert mehr CPU und Speicher als die Verarbeitung von Text oder kleinen JSON-Objekten.
  • einige Algorithmen benötigen mehr Ressourcen als andere, beispielsweise Verschlüsselung oder Training von KI-Modellen.
  • Anwendungen (wie Datenbanken) könnten Speicher für Puffer und Caches zuweisen und verbrauchen daher erheblich mehr RAM, obwohl der Traffic möglicherweise gering ist. Manchmal kannst du sie optimieren, um mit weniger Ressourcen zu laufen.

Herausforderungen beim Hosting mehrerer Apps auf einem Server

Im einfachsten Setup brauchst du nur Zugriff auf einen VPS, installierst Docker, und schon kann's losgehen!

Das Betreiben mehrerer Docker-Apps auf einem einzigen Server wird etwas kniffliger, wenn du die Details ausarbeitest. Hier sind einige Herausforderungen, auf die ich gestoßen bin:

  • Wie behält man den Überblick über Debugging-Logs
  • Wie verhindert man, dass Logs den gesamten Festplattenspeicher auffressen
  • Verwaltung von Secrets
  • Wie bekommt man Apps und Code-Änderungen auf den Server (CI/CD)
  • Wo soll der Build-Prozess laufen (benötigt viele Ressourcen)
  • Wo sollen Docker-Images gespeichert werden
  • Zugriffssteuerung, wenn mehrere Personen beteiligt sind
  • Wie überwacht man Server- und Anwendungslast
  • Wie verhindert man, dass Images und Docker-Cache den gesamten Festplattenspeicher auffressen

Wenn du Interesse hast, DevOps zu lernen, ermutige ich dich, ins Abenteuer einzutauchen und es selbst umzusetzen. Es gibt keinen besseren Weg, um dein Wissen zu erweitern, als selbst aktiv zu werden.

Wenn du dir etwas Mühe sparen möchtest, gibt es einige Tools, die die Arbeit erleichtern.

Tools zur Vereinfachung des Betriebs mehrerer Apps auf einer Maschine

Sliplane

Sliplane ist eine vollständig verwaltete Container-Hosting-Lösung, mit der du mehrere Anwendungen auf einem einzigen Server bereitstellen kannst. Wenn du dich nicht viel mit DevOps beschäftigen möchtest, ist dies der schnellste und einfachste Weg. Im Vergleich zu anderen Anbietern bietet es mehr High-Level-Funktionen und enthält auch Domains, vertikale Skalierung, SSL, Sicherheitsupdates und mehr. (Hinweis: Ich bin Mitgründer des Projekts)

Dokku

Dokku ist eine Open-Source-PaaS-Alternative. Es hilft dir, eine Deployment-Pipeline einzurichten und bietet die Tools, um mehrere Anwendungen zu erstellen und zu verwalten. Es nutzt auch Heroku Buildpacks, um deinen Stack automatisch zu erkennen und ohne Dockerfiles zu deployen.

Portainer

Portainer, auch als Open Source verfügbar, ist als Container-Management-Plattform konzipiert. Im Vergleich zu Sliplane und Dokku kümmert es sich nicht um die Build-Prozesse, bietet aber Funktionen zur Verwaltung fortgeschrittenerer Cluster-Setups.

Vergleich

SliplaneDokkuPortainer
Mehrere Container verwalten
Kümmert sich um Build-Prozesse
Kontinuierliche Deployments mit "git push"
Dedizierter Build-Server
Mehrere Hosts verwalten
Open-Source-Version?
BenutzeroberflächeWeb-basierte UICLIWeb-basierte UI
Container-Logs anzeigen
Server-Metriken anzeigen
Domain-Management
Cluster verwalten (Kubernetes, Docker Swarm)
Server skalieren
Automatische Backups
Automatische Sicherheitsupdates

Zusammenfassung

Docker ermöglicht das Hosting mehrerer Apps auf einem einzigen Server, was es zu einer kostengünstigen Lösung für das Deployment kleiner Projekte macht.

Es ist generell sicher, Docker zu verwenden, um mehrere Apps auf einem einzigen Server zu betreiben, sollte aber auf Anwendungen mit wenig Traffic und geringem Risiko beschränkt werden.

Je nachdem, welche Art von Apps du betreibst, kannst du Dutzende von Projekten auf einem einzigen Server unterbringen.

Wenn du tief in DevOps eintauchen möchtest, kannst du den Weg des Self-Hostings gehen. Ansonsten gibt es Tools wie Sliplane, Dokku und Portainer, die den Prozess vereinfachen.

Als vollständig verwaltete Lösung ist Sliplane der schnellste und einfachste Weg.

Dokku ist Open Source. Der Fokus liegt darauf, Deployments mit einem einfachen "git push" zu erleichtern. Die Benutzeroberfläche ist eine CLI.

Portainer bietet ebenfalls eine Open-Source-Version an. Im Vergleich zu Sliplane und Dokku fehlt eine Deploy-Pipeline. Es kommt mit einer webbasierten Benutzeroberfläche und bietet einige Funktionen zur Verwaltung fortgeschrittenerer Cluster-Setups.

Willkommen in der Container-Cloud

Sliplane macht es einfach, Container in der Cloud zu deployen und bei Bedarf zu skalieren. Probier es jetzt aus!