Zum Inhalt springen

netcup Dokumentation

Server

Apps

Erfahre, wie du Apps im Server Control Panel (SCP) verwaltest.

1. Fertige Apps mit einem Klick installieren

Unter Apps findest du eine Sammlung vorkonfigurierter Anwendungen (Webanwendungen, Datenbanken, Tools und Dienste), die du auf deinem Server bereitstellen kannst, ohne eine Zeile YAML zu schreiben oder die Kommandozeile zu benutzen. Jede App ist bereits verpackt, getestet und mit sinnvollen Standardwerten versehen, sodass die Installation nur einen Klick auf Installieren erfordert.

2. Ein App-kompatibles Image installieren

Apps benötigen ein Docker-basiertes Image auf deinem Server. Der Menüpunkt Apps bleibt in jedem Fall sichtbar. Solange kein kompatibles Image läuft, wird eine entsprechende Meldung angezeigt.

 

  1. Melde dich im Server Control Panel (SCP) an.
  2. Gehe zu deinem Server und öffne Medien › Images.
  3. Gehe in die Registerkarte App-Images.
  4. Installiere eines der aufgelisteten Images auf deinem Server.

Beachte, dass diese Installation nur einmal pro Server nötig ist. Läuft bereits ein App-kompatibles Image, kannst du direkt eine App installieren.

3. App installieren

Wenn du Apps im SCP zum ersten Mal benutzt, gelangst du in den Menüpunkt Apps installieren. Hier siehst du eine Liste mit den Apps, die du installieren kannst, jeweils inklusive einer kurzen Beschreibung. Klicke auf die Schaltfläche der App, die du installieren möchtest. Falls du eine bestimmte App suchst, kannst du hierfür die Suchleiste rechts verwenden.

Hervorgehobene Menüpunkte "Apps [Beta]" und "Apps installieren" im Server Control Panel (SCP).

Beachte, dass die mit einem Sternchen gekennzeichneten Pflichtfelder je nach App-Installation variieren. Wenn du keine Passwörter festlegst, werden automatisch welche generiert.

Die folgenden Screenshots zeigen die Installation einer App mit folgenden Pflichtfeldern:

Pflichtfeld

Beschreibung

Admin Email

E-Mail-Adresse des initialen App-Administratorkontos

Admin Name

Name des initialen App-Administratorkontos

Basiskonfiguration

In der Registerkarte Basiskonfiguration kannst du neben den Pflichtfeldern optional einen Spitz- und Hostnamen für deine App eingeben, um sie leichter zu unterscheiden. Für Hostnamen kannst du optional eine SSL-Verschlüsselung per Schieberegler aktivieren.

Hervorgehobene Registerkarte "Basiskonfiguration" mit auszufüllenden Feldern.

Ein Standard-Hostname wird immer automatisch vergeben und ist damit sofort erreichbar. Ein eigener Hostname (z. B. app.example.com) ist hier optional und kann jetzt oder später hinzugefügt werden.

Erweiterte Konfiguration

In der Registerkarte Erweiterte Konfiguration kannst du weitere Einstellungen vornehmen, welche aber nicht unbedingt erforderlich sind.

Hervorgehobene Registerkarte "Erweiterte Konfiguration" mit auszufüllenden Feldern.

Benutzerdefinierte Konfiguration

In der Registerkarte Benutzerdefinierte Konfiguration kannst du deinen Containern benutzerdefinierte Variablen hinzufügen. Klicke hierfür rechts auf Hinzufügen und trage in den entsprechenden Feldern Variablenname und Wert ein. Zudem kannst du sie hier wieder löschen.

Hervorgehobene Registerkarte "Benutzerdefinierte Konfiguration" und auszufüllende Werte für Variablen.

Nachdem du alle Pflichtfelder und die von dir gewünschten Felder ausgefüllt sowie unten rechts auf Installieren geklickt hast, wird dir folgender Hinweis angezeigt:

App-Installations-Pop-up mit Hinweisen und den Schaltflächen "Abbrechen" und "OK".

Klicke unten rechts auf OK, wenn du damit einverstanden bist, die Sicherheit, Konfiguration und den Betrieb der App selbst zu übernehmen.

 

Anschließend startet der Download und du springst automatisch in den Menüpunkt Übersicht, wo dir die installierte App angezeigt wird. Der Ladebalken oben rechts zeigt dir den Downloadfortschritt an.

Direkt nach der Installation kann die App kurzzeitig nicht erreichbar sein, während sie startet. Sobald sie erreichbar ist, erscheint die Schaltfläche Öffnen. Beachte, dass nicht jede App eine Weboberfläche bietet. Dafür zeigt Öffnen stattdessen eine Meldung an.

Jede App hat einen eigenen Bedarf an CPU, RAM und Speicherplatz. Beim Klick auf Installieren prüft SCP, ob dein Server noch genügend nicht reservierte Kapazität dafür hat. Nach der Installation reserviert SCP RAM und Speicherplatz für die App, solange sie installiert ist. Das gilt unabhängig davon, ob die App diese Kapazität gerade tatsächlich nutzt. Die verfügbare Kapazität kann daher niedriger sein, als eine Live-Auslastungsanzeige vermuten lässt. Lösche bei knappen Ressourcen eine nicht mehr benötigte App, um Kapazität freizugeben.

4. Übersicht

Im Menüpunkt Übersicht werden dir deine installierten Apps angezeigt. Hier werden dir je App Name, Instanz, Spitzname, Status, Aktualisierungsstatus und Aktionen angezeigt.

 

Jede Installation erhält eine eigene Instanz-ID (z. B. a63o), sodass du mehrere Installationen derselben App unterscheiden kannst.

Hervorgehobener Menüpunkt "Übersicht" und App-Aktionen.

Aktionen

Öffnen

  1. Klicke auf Öffnen.
  2. Klicke im sich anschließend öffnenden Pop-up-Fenster Anmeldeinformationen unten rechts auf Weiter zur App. Hier werden dir ebenfalls deine vorher angegebenen Pflichtfelder wie z. B. Admin Name, Admin Email und Admin Password angezeigt.
Pop-up "Anmeldeinformationen" mit vorher ausgefüllten Feldern sowie den Schaltflächen "Weiter zur App" und "Schließen".

3. Folge den weiteren Anweisungen in der App.

Beachte, dass die dir angezeigten Inhalte je nach App variieren. Die Weboberfläche der App wird immer über ihren Standard-Hostnamen geöffnet. 

Konfiguration

Klicke auf Konfiguration, um deine eingetragenen Daten einzusehen. Hier werden dir erneut die 3 Registerkarten Basiskonfiguration, Erweiterte Konfiguration und Benutzerdefinierte Konfiguration angezeigt. In der Registerkarte Basiskonfiguration kannst du Spitz- und Hostname deiner App ändern sowie in der Registerkarte Benutzerdefinierte Konfiguration Variablen hinzufügen. Konfiguration ist deaktiviert, solange ein Update für die App verfügbar ist.

 

Bestätige deine Änderungen mit einem Klick auf Speichern & Neustarten unten rechts. Zudem kannst du über die entsprechenden Schaltflächen die Logs und die App öffnen.

Nachdem du auf Speichern & Neustarten geklickt hast, werden die App neu startet und aktive Verbindungen kurz unterbrochen.

Konfigurationsseite in der Registerkarte "Basiskonfiguration" mit hervorgehobenem Spitz- und Hostname sowie den Schaltflächen "Logs", "Öffnen" und "Speichern & Neustarten".

Logs

Klicke auf Logs, um den Live-Log der Container einzusehen, die auf deinem Server laufen. Hier kannst du ebenfalls mithilfe des Drop-down-Menüs nach Container filtern sowie zur neuesten Zeile scrollen und Zeitstempel anzeigen lassen, indem du die jeweiligen Schieberegler aktivierst. 

Logs-Seite mit hervorgehobenem Filter und Schiebereglern.

Aktualisieren

Klicke auf Aktualisieren, um deine App zu aktualisieren.

Beachte, dass die Schaltfläche erst anklickbar ist, wenn eine neue Version verfügbar ist. Ein Update kann zu Datenverlust oder Inkompatibilitäten führen, erstelle daher vorher eine Sicherung.

Löschen

Klicke auf Löschen, um deine App zu löschen.

Beachte, dass die App standardmäßig nur undeployt wird, deine Daten blieben erhalten. Du kannst den Schieberegler im sich anschließend öffnenden Pop-up-Fenster aktivieren, um alle Daten (Docker-Volumes) zu löschen und zusätzlich Speicherplatz freizugeben. Dies löscht die Daten der App endgültig und kann nicht rückgängig gemacht werden.

Löschen-Pop-up mit hervorgehobenem Schieberegler, um alle Daten zu löschen und den Schaltflächen "Abbrechen" und "Löschen".

5. Funktionsweise von Apps im Hintergrund

Die folgenden Abschnitte beschreiben, wie Apps im Hintergrund funktionieren. Für die Installation oder Verwaltung von Apps benötigst du das nicht. Es ist jedoch nützlich, wenn du dich für die Architektur interessierst oder das Docker-Setup deines Servers direkt untersuchst.

Grafik über das Verhältnis SCP – Docker – Browser.

Was ist SCP Server Satellite?

SCP Server Satellite ist der kleine Agent, der deinen Server mit SCP verbindet und App-Deployments in dessen Auftrag ausführt. Er besteht aus 2 zusammenarbeitenden Containern.

  • server-satellite-vsock-proxy: Er lauscht auf der vsock-Schnittstelle und leitet den Datenverkehr über eine lokale Verbindung an den Agenten weiter. Nur dieser Teil greift direkt auf vsock zu.
  • server-satellite: Dies ist der eigentliche Agent. Er empfängt die weitergeleiteten Anfragen, spricht mit der lokalen Docker-Swarm-Engine, um Apps bereitzustellen, zu aktualisieren oder zu entfernen und meldet Status, Zustand und Logs an SCP zurück.

Beachte, dass diese Container nicht manuell gestoppt, entfernt oder verändert werden sollten. Andernfalls wird dein Server von Apps und anderen SCP-Verwaltungsfunktionen getrennt.

Was ist die KVM-vsock-Verbindung und ist sie sicher?

vsock (virtio-vsock) ist ein Kommunikationskanal, der nur zwischen dem KVM-Hypervisor (dem Host) und deinem Server besteht. Er ist keine Netzwerkverbindung und weder aus dem Internet noch von anderen Servern erreichbar. SCP nutzt diesen Kanal, um Verwaltungsbefehle an SCP Server Satellite zu senden, sodass App-Deployment und -Verwaltung nicht von der Netzwerkkonfiguration, den Firewall-Regeln oder der Erreichbarkeit der öffentlichen IP deines Servers abhängen.

Was ist der Docker-Swarm-Modus und warum wird er verwendet?

Docker Swarm ist die in Docker integrierte Cluster- und Orchestrierungs-Engine. Statt eines einzelnen Containers per docker run werden Apps als Services bereitgestellt.

  • Selbstheilung: Stürzt ein Container ab, startet Swarm ihn automatisch neu.
  • Rolling Updates: Swarm kann Container bei einem Update nacheinander austauschen, statt die ganze App abzuschalten.
  • Deklarative Konfiguration: Der Sollzustand der App (Image, Replikate, Ports, Volumes) wird als Service-Definition gespeichert.
  • Isolation: Jede App läuft in ihrem eigenen Swarm-Stack/-Netzwerk und beeinflusst andere Apps standardmäßig nicht.

Dein Server wird bei Aktivierung von Apps automatisch als Einzelknoten-Swarm initialisiert. Du musst den Swarm-Cluster nicht selbst verwalten.

Wie ein Deployment tatsächlich abläuft

  1. Du konfigurierst und übermittelst eine App über Apps [Beta] in SCP.
  2. SCP sendet die Deployment-Anfrage über den privaten KVM-vsock-Kanal an deinen Server.
  3. server-satellite-vsock-proxy empfängt sie auf der vsock-Seite und leitet sie über eine lokale Verbindung an server-satellite weiter.
  4. server-satellite übersetzt die Anfrage in eine Docker-Swarm-Service-Definition und stellt sie bereit.
  5. Die Docker-Engine deines Servers im Swarm-Modus plant die Container der App, kümmert sich um Neustarts und hält sie am Laufen.
  6. server-satellite meldet Status, Zustand und Logs an SCP zurück. Das siehst du in Apps [Beta].

Hostnamen und TLS-Terminierung

Apps werden über einen Reverse-Proxy auf deinem Server (Traefik) veröffentlicht. Dadurch ist der Standard-Hostname sofort über HTTPS erreichbar und Traefik übernimmt die Let’s-Encrypt-Zertifikatsausstellung für jeden zusätzlichen Hostnamen. Ein eigener Hostname muss ein vollqualifizierter Domainname sein (z. B. app.example.com). Traefik nutzt ihn, um eingehende Anfragen an die richtige App weiterzuleiten. Wenn du einen eigenen Hostnamen hinzufügst und Let’s Encrypt dafür deaktivierst, fordert Traefik kein Zertifikat automatisch an. Du bist dann selbst für die Zertifikatskonfiguration auf dem Server unter /opt/apps/traefik/conf/ssl-certs.yaml verantwortlich.

Netzwerk-Interna

  • Die interne Kommunikation zwischen den Containern einer App (z. B. einer App und ihrer Datenbank) läuft über ein privates, für diese App angelegtes Docker-Swarm-Netzwerk und ist nicht aus dem Internet erreichbar, sofern die App keinen Port explizit veröffentlicht.
  • SCP selbst erreicht deine App nie direkt über das Internet, um sie zu verwalten. Der Verwaltungsverkehr läuft über den vsock-Kanal zu SCP Server Satellite, der dann in deinem Auftrag mit der lokalen Docker-Swarm-API spricht.

Die Lizenz des Container-Images anzeigen

Das Image enthält seine Lizenz unter /licenses/LICENSE, entsprechend der Red-Hat-UBI-Konvention für die Platzierung von Lizenzen. Da der ENTRYPOINT des Images die Anwendung selbst startet, lies die Datei über docker create/docker cp, ohne die Anwendung zu starten:

COMPOSE_FILE=/opt/docker/scp-server-satellite/docker-compose.yml IMAGE=$(docker compose -f "$COMPOSE_FILE" config --images server-satellite) id=$(docker create "$IMAGE") docker cp "$id":/licenses/LICENSE - docker rm "$id" >/dev/null

(docker cp ... - streamt die Datei als Tar-Stream nach stdout. Leite sie durch tar -O -x, wenn du den reinen Text möchtest: docker cp "$id":/licenses/LICENSE - | tar -Ox.)

 

Das Image gibt seine Lizenz zusätzlich maschinenlesbar über das OCI-Label org.opencontainers.image.licenses an:

COMPOSE_FILE=/opt/docker/scp-server-satellite/docker-compose.yml IMAGE=$(docker compose -f "$COMPOSE_FILE" config --images server-satellite) docker inspect --format '{{ index .Config.Labels "org.opencontainers.image.licenses" }}' "$IMAGE"

Den mitgelieferten Quellcode extrahieren

Das Image enthält den exakten Quellcode, aus dem es gebaut wurde, als Archiv unter /usr/share/doc/server-satellite/source.tar.gz: mvnw, pom.xml, .mvn/ und src/. Dies dient der MIT-Attribution/Auditierung und wird für den Betrieb der Anwendung nicht benötigt.

COMPOSE_FILE=/opt/docker/scp-server-satellite/docker-compose.yml IMAGE=$(docker compose -f "$COMPOSE_FILE" config --images server-satellite) id=$(docker create "$IMAGE") docker cp "$id":/usr/share/doc/server-satellite/source.tar.gz ./source.tar.gz docker rm "$id" >/dev/null mkdir -p scp-server-satellite tar xzf source.tar.gz -C scp-server-satellite

Das Container-Image mithilfe seiner mitgelieferten SBOM auf Schwachstellen prüfen

Wird das Image mit docker buildx build --sbom=true gebaut, wird eine SPDX-SBOM direkt als native OCI-Attestierung in das veröffentlichte Image eingebettet. Da diese SBOM bereits existiert, musst du das Dateisystem des Images nicht erneut scannen, um es auf bekannte Schwachstellen zu prüfen. Extrahiere stattdessen die mitgelieferte SBOM und prüfe diese.

1. Die mitgelieferte SBOM extrahieren

COMPOSE_FILE=/opt/docker/scp-server-satellite/docker-compose.yml IMAGE=$(docker compose -f "$COMPOSE_FILE" config --images server-satellite) docker buildx imagetools inspect "$IMAGE" --format '{{ json .SBOM.SPDX }}' > sbom.json

Dies liest die zur Build-Zeit angehängte SBOM-Attestierung. Dabei werden weder die Layer des Images geladen noch dessen Dateisystem untersucht. Beachte das .SPDX am Ende: docker buildx imagetools inspect verschachtelt das eigentliche SBOM-Dokument unter einem .SPDX-Schlüssel innerhalb von .SBOM (BuildKits Standard-SBOM-Generator erzeugt SPDX, kein CycloneDX.). Wird nur .SBOM ohne .SPDX extrahiert, entsteht ein Wrapper-Objekt, das Trivy nicht parsen kann ("Detected SBOM format format=unknown"). Bei einem Multi-Plattform-Image zuerst nach Plattform indizieren: {{ json (index .SBOM "linux/amd64").SPDX }}.

2. Eine Schwachstellenprüfung anhand der extrahierten SBOM ausführen

docker run --rm -e TRIVY_NO_PROGRESS=true -v "$(pwd)/sbom.json:/sbom.json:ro" \  anx-cr.io/hub.docker.com/aquasec/trivy:0.72.0 \  sbom /sbom.json

trivy sbom gleicht die bereits in sbom.json aufgeführten Pakete mit der Schwachstellendatenbank von Trivy ab, das Container-Image selbst wird dabei nie berührt. Das unterscheidet sich von trivy image ..., das eine eigene, unabhängige Prüfung des Dateisystems des Images durchführt und dabei eine separate (meist aber ähnliche) Paketliste erzeugt.

Häufig gestellte Fragen (FAQ)

Zuletzt aktualisiert: 19. Oktober 2026

War dieser Artikel hilfreich?