uVersion
Deutsch
Herunterladen →

Wiki

Mit Docker bereitstellen

uVersion-Server und PostgreSQL als Container, schlüsselfertig: Image herunterladen, laden, .env konfigurieren, starten. Speicherort von Daten und Datenbank konfigurierbar.

Eine Alternative zum .deb-Paket: Der uVersion-Server und seine PostgreSQL-Datenbank laufen als Container, gestartet durch ein einziges docker compose up. Ideal, wenn Sie eine containerisierte Bereitstellung bevorzugen oder schnell testen möchten.

Voraussetzungen: Docker Engine 20.10+ mit dem Compose-v2-Plugin (docker compose version) und ein uVersion-Lizenzschlüssel. Der Server verweigert den Start ohne einen gültigen, signierten Schlüssel: Holen Sie ihn aus Ihrem Konto (oder fordern Sie einen über die Registrierungsseite an).

Podman funktioniert ebenfalls Ersetzen Sie docker durch podman in allen Befehlen dieser Seite: podman compose pull, podman load -i, podman compose up -d. Die mitgelieferte docker-compose.yml versieht ihre Mounts bereits mit SELinux-Labels (der auf Red Hat, Rocky, Alma und Fedora standardmäßig aktivierten Zugriffskontrolle), mit dem Suffix :z. Ohne dieses Label wird dem Container der Zugriff auf die eingehängten Verzeichnisse verweigert, und die Meldung sieht eher nach einer beschädigten Datenbank aus als nach einem Rechteproblem.

Installieren

1. Die Compose-Datei und die Umgebungsvorlage holen

Zwei Dateien, in einem neuen Ordner, der zu dem des Stacks wird: die docker-compose.yml und die Vorlage .env.

mkdir uversion && cd uversion
wget -N -O docker-compose.yml https://uversion.io/downloads/server/docker/docker-compose.yml
wget -N -O .env https://uversion.io/downloads/server/docker/env.example

2. Das Image holen

Online genügt die Registry:

docker compose pull

Ohne Internetzugang (isoliertes Netz) laden Sie stattdessen das Archiv herunter und laden es: Es trägt denselben Image-Namen wie die Compose-Datei, sodass der Start es ohne jeden Download findet.

wget -N https://uversion.io/downloads/server/docker/uversion-server_latest_docker.tar.gz
docker load -i uversion-server_latest_docker.tar.gz

3. .env ausfüllen

Zwei Werte sind zwingend: UVERSION_LICENCE__KEY (Ihr Lizenzschlüssel, die lange signierte Zeichenkette, die Sie per E-Mail erhalten haben) und POSTGRES_PASSWORD (ein starkes Passwort für die mitgelieferte Datenbank).

nano .env

Das Geheimnis, das die Sitzungen signiert, wird beim ersten Start erzeugt und im Datenverzeichnis aufbewahrt. Sie müssen nichts eingeben. Es ist Teil der Sicherung: Geht es verloren, muss sich jeder einmal neu anmelden, es geht nichts verloren. Wenn Sie lieber Ihr eigenes festlegen (mindestens 32 Zeichen), tragen Sie UVERSION_SECURITY__JWT_SECRET in .env ein: Es wird tatsächlich an den Container übergeben, der es dann verwendet, statt eines zu erzeugen.

Wählen Sie dieses Passwort ein für alle Mal POSTGRES_PASSWORD wird nur bei der Erstellung der Datenbank angewandt, solange ihr Verzeichnis leer ist. Es später in .env zu ändern, ändert auf der PostgreSQL-Seite nichts, die das alte behält, während der Server das neue vorlegt: Die Verbindung bricht ab, ohne dass die Meldung es erklärt. Um es wirklich zu ändern, ändern Sie es auf beiden Seiten:
# Changer reellement le mot de passe de la base
docker compose exec db psql -U uversion -c "ALTER USER uversion PASSWORD 'nouveau-mot-de-passe'"

# Puis reporter la MEME valeur dans POSTGRES_PASSWORD (.env) et relancer
docker compose up -d
Sichern Sie .env zusammen mit Ihren Daten Sie enthält den Lizenzschlüssel und das Datenbankpasswort und liegt neben der docker-compose.yml, nicht in den Volumes. Verlieren Sie die Maschine und behalten die Datenträger, bleibt eine Datenbank, die niemand ansprechen kann, und eine Lizenz, die neu anzufordern ist: Der bei der Registrierung erhaltene Aktivierungscode ist einmalig und bereits verbraucht, wiederverwendbar ist allein der daraus erzeugte Lizenzschlüssel, und der ist hier. Behandeln Sie diese Datei als Geheimnis: chmod 600, und in derselben Sicherung wie die Datenbank und die Chunks (die Dateibruchstücke, das, was den Platz belegt).

4. Den Stack starten

docker compose up -d

Der Server ist dann unter https://YOUR-HOST:8443 erreichbar. Keine Domain und kein Let’s-Encrypt-Zertifikat sind erforderlich: Das TOFU-Modell übernimmt das, also Vertrauen beim ersten Kontakt, wie SSH, wenn es Sie beim ersten Mal den Fingerabdruck einer Maschine bestätigen lässt.

5. Den Server-Fingerabdruck ablesen

Er wird bei jedem Start neu in die Protokolle geschrieben:

# L'empreinte du serveur, reecrite dans les journaux a chaque demarrage
docker compose logs server | grep -i "TLS fingerprint"

Das ist der Server-Fingerabdruck (SHA-256 seines Zertifikats): Der Server liefert selbstsigniertes HTTPS auf Port 8443 aus, und jeder Client bestätigt ihn bei der ersten Verbindung. Teilen Sie ihn mit Ihrem Team (siehe TLS-Fingerabdruck). Verwechseln Sie ihn nicht mit einer Prüfsumme, die dem Überprüfen einer heruntergeladenen Datei dient: Dieser hier identifiziert Ihren Server.

6. Das anfängliche Admin-Passwort ablesen

Melden Sie sich als admin mit diesem Passwort an und ändern Sie es dann. Die Datei wird gelöscht, sobald Sie es ändern.

# Le mot de passe admin initial (le fichier disparait des que vous le changez)
docker compose exec server cat /data/initial-admin-password

Um den Start live zu verfolgen, eignet sich docker compose logs -f server, aber setzen Sie es nicht mitten in eine Befehlsfolge: Das -f folgt den Protokollen unbegrenzt und gibt die Kontrolle nie zurück (Ctrl + C zum Beenden).

Daten und Datenbank

Der gesamte Zustand des Servers (Chunk-Speicher, TLS-Zertifikat und damit der Fingerabdruck, Serveridentität) lebt in einem Host-Verzeichnis und die PostgreSQL-Datenbank in einem anderen. Beide werden in .env eingestellt:

# Dans .env : placer les donnees et la base sur un disque large et sauvegarde
UVERSION_DATA_DIR=/srv/uversion/data      # chunks, cert TLS, identite serveur
UVERSION_DB_DIR=/srv/uversion/db          # PostgreSQL fourni

Für eine echte Bereitstellung richten Sie UVERSION_DATA_DIR auf eine große, gesicherte Platte: Die binären Chunks eines Unreal-Projekts können umfangreich sein. Der Container passt die Rechte des eingehängten Verzeichnisses von selbst an (er startet nur so lange als root, wie er den Besitz korrigiert, und steigt dann auf einen unprivilegierten Benutzer ab), Sie müssen also vorab nichts mit chown tun.

Längerer erster Start, wenn SELinux aktiv ist Die Engine kennzeichnet die eingehängten Verzeichnisse dann rekursiv neu, ein einziges Mal. Auf einer frischen Bereitstellung ist das augenblicklich, aber rechnen Sie bei einem bereits umfangreichen Repository mit mehreren Minuten. Die folgenden Starts zahlen diese Kosten nicht erneut.

Um ein bereits vorhandenes externes PostgreSQL zu nutzen, tragen Sie UVERSION_DATABASE__URL in .env ein und entfernen dann den Dienst db sowie den Block depends_on in der docker-compose.yml.

# Dans .env : brancher un PostgreSQL existant
UVERSION_DATABASE__URL=postgres://user:motdepasse@db.interne:5432/uversion

Daten und Datenbank verschieben

Der einfachste Fall ist, beide Variablen vor dem ersten up zu setzen: Noch existiert nichts, es gibt nichts zu kopieren. Läuft der Stack bereits, müssen Sie ihn anhalten und die Verzeichnisse von Hand kopieren, wobei die Besitzer erhalten bleiben.

1. Den Stack anhalten

Während des Kopierens darf nichts schreiben:

docker compose down

2. Die beiden Verzeichnisse kopieren

Es ist das -a, das Besitzer und Rechte erhält:

sudo rsync -a ./data/server/ /srv/uversion/data/
sudo rsync -a ./data/db/     /srv/uversion/db/

3. .env auf den neuen Ort richten

# Dans .env, LES DEUX lignes, pas une seule
UVERSION_DATA_DIR=/srv/uversion/data
UVERSION_DB_DIR=/srv/uversion/db

4. Neu starten

docker compose up -d
Verschieben Sie beide oder keines Die Datenbank enthält nicht Ihre Dateien: Sie enthält die Metadaten, die die Chunks (die Dateibruchstücke) über ihren Fingerabdruck bezeichnen. Die Daten ohne die Datenbank zu verschieben, oder umgekehrt, hinterlässt eine Datenbank, die auf unauffindbare Chunks verweist. Und ein UVERSION_DB_DIR, das auf ein leeres Verzeichnis zeigt, ergibt eine leere Datenbank: PostgreSQL initialisiert sie ohne mit der Wimper zu zucken, und Sie erhalten einen vollen Chunk-Speicher, gekoppelt an eine Datenbank ganz ohne Metadaten.

Drei Pfadfallen, alle erlebt:

  • Ein relativer Pfad wird relativ zur Compose-Datei aufgelöst, nicht relativ zu dem Verzeichnis, aus dem Sie den Befehl ausführen. ./data/server bezeichnet immer den Nachbarn der docker-compose.yml.
  • Eine Netzwerkfreigabe (NFS, CIFS, eine Windows-Freigabe) verweigert in der Regel das chown, das der Container beim Start ausführt. Der Container beendet sich dann sofort mit einem Rechtefehler, der weder uVersion noch den Speicher erwähnt. Verwenden Sie eine lokale Platte oder ein Block-Volume.
  • rsync -a ist das, was Besitzer und Rechte erhält. Eine Kopie mit cp ohne Optionen oder aus einem Dateimanager setzt alles auf das aktuelle Konto zurück, und PostgreSQL verweigert dann den Start auf seinem eigenen Verzeichnis.

Betrieb

Sichern: die Datenbank

Sie trägt die Metadaten: Dateien, Revisionen, Benutzer, Sperren.

docker compose exec db pg_dump -U uversion uversion > uversion-db.sql

Sichern: die Serverdaten

Das ist das von UVERSION_DATA_DIR bezeichnete Host-Verzeichnis. Beide Sicherungen zählen: die eine ohne die andere stellt nichts wieder her.

# .env n'est pas charge dans votre shell, chargez-le pour reutiliser la variable
set -a; . ./.env; set +a
DATA_DIR="$UVERSION_DATA_DIR"
[ -n "$DATA_DIR" ] || DATA_DIR=./data/server      # valeur par defaut

tar czf uversion-data.tar.gz -C "$DATA_DIR" .

Aktualisieren

Die Daten und die Datenbank werden nicht angetastet, die Migrationen greifen beim Start.

docker compose pull
docker compose up -d   # les migrations s'appliquent au demarrage

In einem isolierten Netz laden Sie stattdessen ein neueres Archiv:

wget -N https://uversion.io/downloads/server/docker/uversion-server_latest_docker.tar.gz
docker load -i uversion-server_latest_docker.tar.gz
docker compose up -d

Anhalten

docker compose stop hält die Container an, docker compose down entfernt sie. In beiden Fällen bleiben Ihre Daten an Ort und Stelle.

down -v löscht hier nichts Die veröffentlichte Compose-Datei verwendet kein benanntes Volume: Ihre Daten und Ihre Datenbank liegen in den beiden von .env bezeichneten Host-Verzeichnissen. Weder down noch down -v rührt sie an. Um wirklich bei null zu beginnen, müssen Sie diese Verzeichnisse selbst löschen. Das ist wichtig zu wissen: Der Reflex nach einem fehlgeschlagenen Login ist, down -v und dann up auszuführen, und das kehrt mit derselben Datenbank und demselben Passwort genau zum selben Fehler zurück.