Zum Inhalt springen

Bereitstellen von Repovio

Produktionsbereitstellung, TLS-Proxy, Backup, Wiederherstellung, Upgrade und Rollback-Anleitung für Repovio.

Der Compose-Stack von Repovio startet PostgreSQL, wendet Prisma-Migrationen einmal an und startet dann die API und die Webanwendungen. Es beendet TLS nicht. Stellen Sie die Web- und API-Dienste hinter einen Reverse-Proxy, der den öffentlichen Hostnamen und die Zertifikate besitzt.

Voraussetzungen

  • Docker Engine mit Docker Compose v2. – Ein DNS-Eintrag für den öffentlichen Hostnamen. – Ein Reverse-Proxy, der TLS-Zertifikate erhält und erneuert. – Ein privates Serververzeichnis, das nur von Bereitstellungsadministratoren gelesen werden kann.

Der Compose-Stack speichert PostgreSQL-Daten, einschließlich normalisierter Benutzerprofilbilder, in seinem benannten repovio-postgres-Volume. Löschen Sie dieses Volume nicht, es sei denn, Sie möchten absichtlich alle Repovio-Daten entfernen.

Erster Einsatz

Schritt 1: Schauen Sie sich eine veröffentlichte Repovio-Version an und erstellen Sie die private Umgebungsdatei:

cp .env.example .env
chmod 600 .env

Schritt 2: Ersetzen Sie jeden Platzhalter in .env, insbesondere POSTGRES_PASSWORD, beide Datenbank-URLs, AUTH_JWT_SECRET und

TOKEN_ENCRYPTION_KEY. Generieren Sie den Verschlüsselungsschlüssel mit:

openssl rand -base64 32

Schritt 3: Legen Sie die extern sichtbaren URLs fest. Für eine Bereitstellung bei https://repovio.example.com verwenden Sie:

PUBLIC_URL=https://repovio.example.com
OIDC_CALLBACK_URL=https://repovio.example.com/api/v1/auth/oidc/callback
CORS_ORIGIN=https://repovio.example.com
NUXT_PUBLIC_API_BASE_URL=https://repovio.example.com/api/v1
OAUTH_CALLBACK_URL=https://repovio.example.com/api/v1/provider-accounts/oauth/callback

Schritt 4: Binden Sie die Container-Ports an Loopback, wenn der Reverse-Proxy auf demselben Host ausgeführt wird:

REPOVIO_API_PORT=127.0.0.1:3001
REPOVIO_WEB_PORT=127.0.0.1:3000

Beschränken Sie andernfalls den Zugriff auf die Ports 3000 und 3001 mit der Host-Firewall. Legen Sie den PostgreSQL-Behälter niemals frei.

Schritt 5: Stellen Sie REPOVIO_VERSION in .env auf ein exakt freigegebenes Bildpaar ein und starten Sie dann den Stapel:

docker compose pull
docker compose up --detach --wait

Behalten Sie diesen Wert in .env bei, damit jeder spätere Compose-Befehl dieselbe API und Webversion verwendet.

Schritt 6: Bestätigen Sie den API-Gesundheitsendpunkt lokal:

curl --fail http://127.0.0.1:3001/api/health

Schritt 7: Öffnen Sie die öffentliche URL Repovio und vervollständigen Sie die URL einmalige Ersteinrichtung, um die erste zu erstellen

Systemadministrator.

Reverse-Proxy und TLS

Stellen Sie den öffentlichen Webursprung auf Port 3000 und die API- und Socket.IO-Pfade auf Port 3001 um. Beispielsweise kann ein Caddy-Site-Block Folgendes verwenden:

repovio.example.com {
  reverse_proxy /api/* 127.0.0.1:3001
  reverse_proxy /socket.io/* 127.0.0.1:3001
  reverse_proxy /mcp 127.0.0.1:3001
  reverse_proxy 127.0.0.1:3000
}

Der Proxy muss HTTP zu HTTPS umleiten, Upstream-Verbindungen gemäß seiner lokalen Richtlinie validieren und den öffentlichen Hostnamen beibehalten. Konfigurieren Sie OAuth-Anbieter mit derselben HTTPS-Rückruf-URL, die in OAUTH_CALLBACK_URL festgelegt ist.

Upgrade

Migration einer früheren Installation

Befolgen Sie die Anweisungen Branding-Upgrade, bevor Sie den umbenannten Stapel starten. Setzen Sie REPOVIO_POSTGRES_VOLUME auf den genauen vorhandenen Volume-Namen. Behalten Sie die Datenbankanmeldeinformationen und den Verschlüsselungsschlüssel bei. Für das Branding ist kein Kopieren oder Zurücksetzen der Datenbank erforderlich.

Schritt 1: Erstellen und überprüfen Sie eine Datenbanksicherung, bevor Sie Bilder ändern.

Schritt 2: Stellen Sie REPOVIO_VERSION auf die genaue Release-Version in .env ein.

Schritt 3: Ziehen Sie die Entriegelung und wenden Sie sie an:

docker compose pull
docker compose up --detach --wait

Der migrate-Dienst wendet ausstehende Prisma-Migrationen an, bevor die API startet. Überprüfen Sie es nach jedem Update:

docker compose logs migrate

Schritt 4: Überprüfen Sie den Integritätsendpunkt und das vom Proxy bereitgestellte Dashboard, bevor Sie das Update als abgeschlossen betrachten.

Datenbanksicherung

Führen Sie Sicherungen aus dem Bereitstellungsverzeichnis aus. Dadurch wird ein PostgreSQL-Dump im benutzerdefinierten Format auf den Host geschrieben, ohne Anmeldeinformationen zu drucken oder in die Befehlszeile einzugeben:

mkdir -p backups
backup_file="backups/repovio-$(date +%F-%H%M%S).dump"
docker compose exec -T postgres sh -c 'pg_dump -U "$POSTGRES_USER" -Fc "$POSTGRES_DB"' \
  > "$backup_file"
pg_restore --list "$backup_file"

Speichern Sie verschlüsselte Kopien außerhalb des Hosts und testen Sie Wiederherstellungen regelmäßig auf einem separaten System.

Datenbankwiederherstellung

Beim Wiederherstellen werden aktuelle Datenbankobjekte ersetzt. Erstellen Sie zunächst ein neues Backup und planen Sie Ausfallzeiten ein.

docker compose stop api web
docker compose exec -T postgres sh -c 'pg_restore -U "$POSTGRES_USER" --clean --if-exists --no-owner -d "$POSTGRES_DB"' \
  < backups/repovio-YYYY-MM-DD-HHMMSS.dump
docker compose up --detach --wait

Überprüfen Sie anschließend docker compose logs migrate und den API-Integritätsendpunkt. Stellen Sie beim Rollback über Schemaänderungen hinweg einen Speicherauszug wieder her, der von einer kompatiblen Repovio-Version erstellt wurde.

Rollback

Schritt 1: Bewahren Sie die Sicherung auf, die unmittelbar vor dem fehlgeschlagenen Upgrade erstellt wurde.

Schritt 2: Stellen Sie REPOVIO_VERSION in .env auf die letzte als funktionierend bekannte Image-Version ein.

Schritt 3: Führen Sie docker compose pull und docker compose up --detach --wait aus.

Schritt 4: Wenn die neuere Version die Datenbank inkompatibel migriert hat, stoppen Sie API und Web, stellen Sie die kompatible Sicherung wieder her und dann

Starten Sie die vorherige Image-Version erneut.

Verwenden Sie docker compose down --volumes niemals als Update- oder Rollback-Befehl: Dadurch wird das benannte PostgreSQL-Volume entfernt.