Zum Inhalt springen

Installation

Envoryx ist ein einzelner Container. Du brauchst nur einen Linux-Rechner mit Docker - Homeserver, NAS, VM oder ein kleiner Cloud-Server, egal ob x86 oder ARM. (Auf Unraid geht es mit dem Template einfacher.)

Nimm den Weg, der dir lieber ist. Am Ende läuft derselbe Container.

Das kannst du genau so einfügen. mkdir legt die beiden Ordner als dein Benutzer an, und $(id -u) / $(id -g) setzen deine Benutzer- und Gruppen-ID ein - die Projektdateien gehören dann dir.

Terminal-Fenster
mkdir -p ~/envoryx/config ~/envoryx/projects
docker run -d --name envoryx --restart unless-stopped --stop-timeout 90 \
-p 8787:8787 -p 80:80 -p 443:443 -p 2222:2222 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v ~/envoryx/config:/config -v ~/envoryx/projects:/projects \
-e PUID=$(id -u) -e PGID=$(id -g) -e ENVORYX_SHUTDOWN_GRACE=80s \
ghcr.io/envoryx/envoryx:latest

Ein paar Sekunden warten, dann http://<dein-server>:8787 öffnen. Als Erstes legst du dort dein Admin-Konto an.

Das Einrichtungsformular von Envoryx mit Feldern für Benutzername, Passwort und Passwort-Bestätigung und dem Button „Konto erstellen“Das Einrichtungsformular von Envoryx mit Feldern für Benutzername, Passwort und Passwort-Bestätigung und dem Button „Konto erstellen“

Port 80 und 443 sind oft schon vergeben, etwa durch einen Webserver oder einen anderen Proxy. Das macht nichts. Nimm andere, zum Beispiel -p 8080:80 -p 8443:443, oder lass die beiden ganz weg, solange du keine schönen Domainnamen brauchst. Envoryx schaut sich seine eigenen Port-Zuordnungen an und baut seine Links danach. Wofür die Ports gut sind, steht unter Domains und HTTPS.

Für 8787 und 2222 gilt dasselbe: Links vom Doppelpunkt geht jeder freie Port.

Über den Docker-Socket (/var/run/docker.sock) legt Envoryx die Container für deine Projekte an. Über diesen Punkt lohnt es sich kurz nachzudenken: Wer den Socket hat, hat Docker auf dem Rechner im Griff. Envoryx fasst nur Container, Netzwerke und Volumes an, die es selbst angelegt hat - aber betreib es nur auf einem Rechner, bei dem das für dich in Ordnung ist.

In config liegen die Datenbank von Envoryx, Zertifikate, Schlüssel und deine Einstellungen. Projekt-Backups landen auch dort, außer du gibst ihnen mit einem zusätzlichen -v /irgend/wo:/backups einen eigenen Platz. In projects liegt der Code deiner Projekte - das ist der Ordner, den du im Editor öffnest.

Beides müssen echte Ordner auf dem Host sein, keine benannten Docker-Volumes. Die Projekt-Container binden Pfade darin ein, und Envoryx findet die passenden Host-Pfade selbst.

PUID und PGID bestimmen, wem die Dateien gehören, die Envoryx schreibt. Mit deinen eigenen IDs kannst du alles ohne sudo bearbeiten.

Die 90 Sekunden Stopp-Timeout und ENVORYX_SHUTDOWN_GRACE gehören zusammen: Stoppst du Envoryx mitten in einem Backup oder einem Image-Download, hat es 80 Sekunden Zeit, das zu Ende zu bringen, bevor Docker den Stecker zieht.

Alles, was sich sonst noch einstellen lässt, findest du unter Konfiguration.

Ein zweites Envoryx kann auf demselben Docker-Host laufen wie das erste, etwa eine Testinstanz neben der Produktion oder zwei Instanzen auf einem Unraid-Server. Gib ihm eigene Ordner, einen eigenen Containernamen und andere Host-Ports auf der linken Seite (-p 9787:8787 und so weiter). Ich würde jeder Instanz außerdem einen eigenen Bereich für Projekt-Ports geben, mit ENVORYX_PORT_RANGE_START und ENVORYX_PORT_RANGE_END: Ein neues Projekt meidet zwar die Ports, die laufende Container veröffentlichen, die Ports der gestoppten Projekte der anderen Instanz sieht es aber nicht. Der Netzwerk-Pool ist kein Problem, beide dürfen denselben ENVORYX_NETWORK_POOL nutzen.

Dass sich die beiden nicht in die Quere kommen, liegt an einer ID, die jede Instanz hat. Sie entsteht beim ersten Start in /config/instance-id, und Envoryx klebt sie als Label envoryx.instance an jeden Container, jedes Netzwerk und jedes Volume, das es anlegt. Was die andere Instanz gelabelt hat, wird nie als eigenes geführt, gestoppt, geändert oder entfernt; es taucht nur bei den fremden Containern auf der Seite Docker auf.

Nur die Namen teilen sie sich noch. Container, Netzwerke und Volumes heißen nach dem Projekt, Projekte auf den beiden Instanzen brauchen also verschiedene Namen. Gehört ein Name schon der anderen Instanz, scheitert das Anlegen mit der Name gehört einer anderen Envoryx-Instanz auf diesem Docker-Host. Volumes aus der Zeit vor 0.18 tragen allerdings kein Instanz-Label, und die lassen sich nicht auseinanderhalten: Ein Projekt mit gleichem Namen würde sie übernehmen. Was ein älteres Envoryx ohne Label angelegt hat, bleibt bei der Instanz, die das Projekt kennt, und bekommt das Label, sobald es ohnehin neu erstellt wird. Verwaiste Ressourcen ohne Label räumt Envoryx nie von selbst weg, siehe Fehlersuche.

Die Instanz-ID steckt nicht in den Instanz-Backups, genau wie der Secret Key, und eine Wiederherstellung behält die aktuelle. Spielst du ein Backup der Produktion in eine Testinstanz ein, beansprucht sie deshalb nicht die Container der Produktion.

Geht /config/instance-id verloren, legt Envoryx eine neue ID an und behandelt seine alten Container als die einer anderen Instanz. Hol dir die alte ID aus dem Label envoryx.instance eines Containers (docker inspect), schreib sie zurück und starte Envoryx neu.

Deine Daten liegen in den beiden Ordnern, der Container selbst ist also austauschbar.

Mit Compose:

Terminal-Fenster
cd ~/envoryx
docker compose pull && docker compose up -d

Mit docker run: neues Image holen, alten Container entfernen und denselben Befehl wie vorher noch einmal ausführen:

Terminal-Fenster
docker pull ghcr.io/envoryx/envoryx:latest
docker rm -f envoryx
# danach wieder der docker-run-Befehl von oben

:latest zeigt immer auf die neueste Version. Willst du lieber bei einer bestimmten bleiben, nimm ihr Tag, etwa :0.12.0. (:main ist der Entwicklungszweig - spannend zum Ausprobieren, aber nichts für die tägliche Arbeit.) Envoryx schaut einmal am Tag nach, ob es etwas Neues gibt, und sagt es dir auf dem Dashboard. Bevor eine neue Version ihre Datenbank umbaut, sichert sie diese vorher - der Weg zurück bleibt also offen.

Envoryx ist freie Software unter der AGPL-3.0 und kommt ohne Gewährleistung.

Zeit für dein erstes Projekt. Und wenn das läuft, lohnen sich Domains und HTTPS - dann heißen deine Projekte https://shop.test statt Portnummer.

Das Dashboard von Envoryx mit der Projektliste, Zustand und Verbrauch der Projekte, der Systemkarte rechts und dem Button „Neues Projekt“ obenDas Dashboard von Envoryx mit der Projektliste, Zustand und Verbrauch der Projekte, der Systemkarte rechts und dem Button „Neues Projekt“ oben
Das Dashboard, sobald ein paar Projekte da sind.