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.
mkdir -p ~/envoryx/config ~/envoryx/projectsdocker 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:latestLeg einen Ordner für Envoryx an, mit zwei leeren Ordnern darin:
mkdir -p ~/envoryx/config ~/envoryx/projects && cd ~/envoryxSpeichere das dort als compose.yml. Ersetz die beiden 1000 durch das, was id -u und
id -g bei dir ausgeben (auf den meisten Rechnern mit einem Benutzer ist es ohnehin 1000).
services: envoryx: image: ghcr.io/envoryx/envoryx:latest container_name: envoryx ports: - "8787:8787" # die Weboberfläche - "80:80" # deine Projekte per Domain (optional) - "443:443" # dasselbe mit HTTPS (optional) - "2222:2222" # SSH für deine IDE (optional) volumes: - /var/run/docker.sock:/var/run/docker.sock - ./config:/config - ./projects:/projects environment: PUID: 1000 PGID: 1000 ENVORYX_SHUTDOWN_GRACE: 80s stop_grace_period: 90s restart: unless-stoppeddocker compose up -dEin paar Sekunden warten, dann http://<dein-server>:8787 öffnen. Als Erstes legst du dort dein
Admin-Konto an.


Ports schon belegt?
Abschnitt betitelt „Ports schon belegt?“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.
Was die einzelnen Teile machen
Abschnitt betitelt „Was die einzelnen Teile machen“Ü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.
Mehrere Instanzen auf einem Host
Abschnitt betitelt „Mehrere Instanzen auf einem Host“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.
Aktualisieren
Abschnitt betitelt „Aktualisieren“Deine Daten liegen in den beiden Ordnern, der Container selbst ist also austauschbar.
Mit Compose:
cd ~/envoryxdocker compose pull && docker compose up -dMit docker run: neues Image holen, alten Container entfernen und denselben Befehl wie vorher
noch einmal ausführen:
docker pull ghcr.io/envoryx/envoryx:latestdocker 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.
Wie geht’s weiter?
Abschnitt betitelt „Wie geht’s weiter?“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.

