SubLaneSubLane

Bereitstellung und Upgrades

SubLane Leitfaden: Bereitstellung und Upgrades.

Für Ihr erstes lokales Setup folgen Sie Erster AntragVerwenden Sie diese Seite, wenn Sie eine Bereitstellungsmethode auswählen, eine Remote-Instanz konfigurieren oder ein Upgrade durchführen.

SubLane läuft als ein Prozess mit eingebettetem Frontend und SQLite. Die Produktion erfordert keine Node.js, Redis oder einen separaten Proxy-Dienst. Führen Sie eine Instanz für jedes Datenverzeichnis aus.

Veröffentlicht Docker Bilder

Verschlagwortet mit Releases Publishing ghcr.io/murongg/sublane für linux/amd64 und linux/arm64. Docker die Host-Architektur auswählt. Bilder sind öffentlich und können ohne Anmeldung bei GHCR gezogen werden. Docker mit Compose; Es ist keine Quellauscheckung, Go, Node.js oder ein lokaler Bildaufbau erforderlich.

Das Handbuch Compose Beispiele unten pin die veröffentlichten 0.1.0-rc.1 Vorabversion. Set SUBLANE_IMAGE explizit für manuelle Einsätze: die Compose Standard ist latest, die nur mit einem stabilen Release veröffentlicht wird.

TagBedeutung
0.1.0Beispiel einer festen stabilen Version; verwenden Sie eine tatsächlich veröffentlichte Version
0.1.0-rc.1Veröffentlichte Vorabversion; aktualisiert nicht latest
latestNeueste erfolgreich beworbene stabile Version
0.1.0-amd64 / 0.1.0-arm64Per-Architektur Release Bilder

Verwenden Sie eine feste Version oder Digest für wiederholbare Deployments: Ein neues Bild, das im GHCR erscheint, aktualisiert einen laufenden Container nicht automatisch.

Installieren Sie das Skript

Führen Sie den Installer von einem Terminal aus aus, um zu wählen Docker oder eine veröffentlichte Linux-Binärdatei, eine normale Instanz oder eine schreibgeschützte Demo, dann kein Proxy, Caddy oder Nginx:

Verwenden Sie Up/Down oder einen Zahlenschlüssel, um eine Option hervorzuheben, und geben Sie dann ein, um zu bestätigen. Die erste Option wird standardmäßig ausgewählt. Grundlegende Terminals verwenden nummerierte Textaufforderungen. Die Domäne bleibt eine Texteingabe, und das Installationsprogramm zeigt die generierte Konfiguration zur Bestätigung vor der Bereitstellung an. Zugestellte Flags überspringen ihre entsprechenden Auswahlmöglichkeiten. --non-interactive Deaktiviert alle Aufforderungen.

Install script · 1
curl -fsSL https://raw.githubusercontent.com/murongg/SubLane/main/scripts/install.sh | bash

ohne --versionDas Skript wählt GitHubErst wenn kein stabiles Release existiert, wählt es das zuletzt veröffentlichte Vorab-Release aus, ohne Entwürfe. Die ausgewählte konkrete Version wird in der generierten Konfiguration gespeichert, so dass Neustarts nicht stillschweigend Versionen ändern. GitHub API Fehler stoppen die Installation, anstatt einen Kanalfallback auszulösen.

Das Skript überprüft das ausgewählte Release-Artefakt gegen SHA256SUMS Bevor Sie es in einem neuen ./sublane Verzeichnis. Bash, curl und entweder sha256sum oder shasum sind erforderlich; die automatische Versionsauswahl erfordert zusätzlich jq. Docker Modus erfordert Docker Compose Binär-Modus unterstützt Linux amd64/arm64, erfordert einen funktionierenden systemd Benutzer-Manager, ermöglicht einen Benutzer-Service und wartet auf /readyzEs wird nicht installiert Docker, Caddy oder Nginx, und baut nicht aus der Quelle.

So wählen Sie eine veröffentlichte Version, ein neues Verzeichnis und einen Host-Port ohne Aufforderungen aus:

Install script · 2
curl -fsSL https://raw.githubusercontent.com/murongg/SubLane/main/scripts/install.sh | bash -s -- \
  --version 0.1.0-rc.1 --dir ./team-gateway --port 8088 --runtime docker --proxy none --non-interactive

Versions-Tags können die führenden vDer Backend-Port bleibt an 127.0.0.1Wenn kein Terminal verfügbar ist, verwendet eine normale Instanz Docker Ohne Proxy bleibt der Default; pass --runtime, --proxy, oder --demo Um andere Modi auszuwählen, verwenden Sie für einen Remote-Server einen SSH-Tunnel für die Ersteinrichtung oder konfigurieren Sie den HTTPS Reverse-Proxy-Proxy.

Der Installateur verwendet ss (aus iproute2) oder lsof Wenn ein Loopback- oder Platzhalter-Hörer diesen Port bereits verwendet, stoppt er und fordert Sie auf, einen unbenutzten Port mit --port, z.B. --port 8088Ein vorhandener Proxy an den Ports 80 oder 443 blockiert eine Installation nicht über den Backend-Port 8080. Die Überprüfungen können den Port nicht reservieren; die Startzustandsüberprüfungen fangen immer noch Konflikte auf, die danach auftreten.

Wählen Sie zum Beispiel die veröffentlichte Binärdatei und generieren Sie eine Caddyfile für eine Public Domain:

curl -fsSL https://raw.githubusercontent.com/murongg/SubLane/main/scripts/install.sh | bash -s -- \
  --runtime binary --proxy caddy --domain sublane.example.com

--domain ist optional mit Caddy oder Nginx. 127.0.0.1:80 über HTTP und SUBLANE_PUBLIC_URL Mit einer Domäne setzt der Installer SUBLANE_PUBLIC_URL=https://<domain> und erzeugt eine HTTPS Proxy-Konfiguration. Es zeigt die Konfiguration vor der Installation, aber kopiert es nicht in den Proxy-Dienst oder lädt ihn neu. Überprüfen Sie die generierten Caddyfile oder nginx.conf und wenden Sie es selbst an; die Nginx-Vorlage übernimmt Zertifikatsdateien unter /etc/letsencrypt/live/<domain>/.

für Docker, schreibt der Installateur das ausgewählte Bild, Port und ein Unique Compose Projektname to .envBehalten Sie es mit docker.compose.yaml; es identifiziert das Datenvolumen des Einsatzes. Für den Binärmodus erzeugt es sublane.env, start.sh und eine verknüpfte systemd Benutzereinheit; Daten bleiben in einem privaten data/ Verzeichnis: Ein Systemd-User-Service kann aufhören, wenn sich der Benutzer abmeldet, es sei denn, das Verweilen ist aktiviert; check loginctl show-user "$USER" -p Linger Neue Installationen verweigern vorhandene Verzeichnisse und Symlinks. Eine vorhandene Skript-verwaltete Installation kann mit dem gleichen Skript aktualisiert werden, wie unten beschrieben.

Aktualisieren einer Script-verwalteten Installation

Erster Exportieren und Verifizieren eines Datenbank-Backups, und lesen Sie die Notizen zur Zielveröffentlichung. Führen Sie das Skript aus dem übergeordneten Installationsverzeichnis aus. Aktualisieren der vorhandenen Instanz und bittet um Bestätigung vor dem Einsatz.

Update an existing installation
curl -fsSL https://raw.githubusercontent.com/murongg/SubLane/main/scripts/install.sh | bash -s -- \
  --update --dir ./sublane

ohne --versionUpdates verwenden die gleiche stabile / Prerelease-Auswahl wie die Installation. --version <published-version> um eine Freigabe zu befestigen, --wait-timeout 120 die Bereitschaftswarte zu ändern, oder --non-interactive Bestätigung überspringen. Das Skript erkennt die vorhandene Laufzeit; reine Installations-Flags wie --runtime, --port, --proxy und --demo werden bei Updates abgelehnt.

Docker Updates bewahren die Compose Datei und Projektname, nur ändern SUBLANE_IMAGE in .envBinäre Updates überprüfen das Archiv, ersetzen die ausführbaren und verpackten Dokumentations- / Lizenzierungsdateien, starten die vorhandene systemd Benutzereinheit neu und warten auf /readyzUmgebungsdateien, Launcher, Benutzereinheit, Proxy-Konfiguration und Datenpfade bleiben erhalten. Der vorhandene Port des Dienstes wird voraussichtlich besetzt sein, so dass Updates keine Portüberprüfungen für neue Installationen ausführen.

Download-, Prüfsummen-, Konfigurations- und Image-Pull-Fehler lassen die bereitgestellten Dateien unverändert. .update-backup.* Verzeichnis innerhalb der Installation und druckt seinen Pfad. Diese Dateien sind kein Datenbank-Backup. Der fehlgeschlagene Start speichert sie und aktuelle Bereitstellungsdaten zur Inspektion, meldet Fehler und führt eine ältere Version nicht automatisch mit einer potenziell migrierten Datenbank aus. Rückforderung und Rollback Eine gleichzeitige Aktualisierung wird abgelehnt; wenn der Prozess gewaltsam beendet wurde, entfernen Sie .update-lock erst nach Bestätigung bleibt kein Update aktiv.

Dieser Aktualisierungspfad unterstützt Installationen, die durch das Skript erstellt wurden. Manuelle Bereitstellungen und Bereitstellungen, die zusätzliche erfordern Compose Override-Dateien sollten die manuelle Aktualisierung, einschließlich aller Overrides bei nachfolgenden Starts.

Um das Skript vor dem Ausführen zu überprüfen, laden Sie es mit curl -fsSL https://raw.githubusercontent.com/murongg/SubLane/main/scripts/install.sh -o install.sh, dann laufen bash install.sh --help oder bash install.sh Nach der Überprüfung.

Handbuch Compose Einsatz

Erstellen eines Bereitstellungsverzeichnisses und Downloaden docker.compose.yaml aus dem ausgewählten GitHub Freigabe:

Manual Compose deployment · 3
mkdir sublane && cd sublane
curl -fsSL https://github.com/murongg/SubLane/releases/download/v0.1.0-rc.1/docker.compose.yaml -o docker.compose.yaml

In diesem Verzeichnis erstellen Sie eine Compose .env Datei, um die ausgewählte Bildversion über Neustarts und Upgrades hinweg zu halten:

Manual Compose deployment · 4
SUBLANE_IMAGE=ghcr.io/murongg/sublane:0.1.0-rc.1
SUBLANE_BIND_ADDRESS=127.0.0.1
SUBLANE_PORT=8080
SUBLANE_LOG_LEVEL=info
# Add this when using an HTTPS reverse proxy:
# SUBLANE_PUBLIC_URL=https://sublane.example.com
# In Docker, first identify the proxy source IP as seen inside the container:
# SUBLANE_TRUSTED_PROXIES=<proxy-source-ip>/32

Compose Lesewerte .env für Interpolation; die eigenständige Go-Anwendung wird nicht geladen .env Ein unveränderlicher Digest kann als Ganzes verwendet werden. SUBLANE_IMAGE Wert anstelle eines Tags.

Manual Compose deployment · 5
docker compose -f docker.compose.yaml pull
docker compose -f docker.compose.yaml up -d
docker compose -f docker.compose.yaml ps
docker compose -f docker.compose.yaml logs --tail=100 sublane

Offen http://127.0.0.1:8080 Für einen Remote-Host verwenden Sie für die Ersteinrichtung einen SSH-Tunnel. Compose Mapping bleibt auf Loopback; Publishing 0.0.0.0 ist eine explizite Operator-Wahl.

Das Bild läuft als bestehende Alpine sublane Service-Konto, enthält CA-Zertifikate und Lizenzbenachrichtigungen, und Prüfungen /readyz. Compose verwendet ein schreibgeschütztes Root-Dateisystem, ein beschreibbares 64 MiB /tmp tmpfs für SDK Scratch-Dateien, fallen gelassene Linux-Fähigkeiten, begrenzte Container-Logs und eine 30-Sekunden-Stop-Gym-Periode. Der Container hört Port 8080; passt den Host-Port durch SUBLANE_PORTWenn Sie den internen Abhöranschluss selbst überschreiben, ändern Sie auch den Gesundheitscheck und die Portzuordnung.

Persistente Daten

Die benannte sublane-data Volumenspeicher /data/sublane.dbseine WAL-Dateien und /data/credentials.keyBewahren Sie den Verschlüsselungsschlüssel in der Datenbank auf. Compose Service/Volume-Schlüssel bleiben erhalten, so dass Upgrades von früheren Quell-Builds das gleiche Volume verwenden, wenn sie aus demselben ausgeführt werden. Compose Projekt.

Halten Sie die Compose Projektname/Verzeichnis konsistent Ändern es erzeugt ein anderes benanntes Volume und kann eine vorhandene Instanz uninitialisiert erscheinen lassen. docker compose -f docker.compose.yaml down -v beim Upgrade oder Wiederherstellen: Das entfernt das Datenvolumen. Bind-Mounts werden unterstützt, aber ihre Host-Berechtigungen müssen es dem Nicht-Root-Konto des Bildes ermöglichen, das eingebundene Verzeichnis zu schreiben. Bevorzugt das standardmäßige benannte Volume, es sei denn, der Hostpfad ist beabsichtigt.

Bauen Sie aus der Quelle

Um stattdessen lokal zu bauen, klonen Sie das Repository und verwenden Sie den Source-Build-Override:

Build from source · 6
git clone https://github.com/murongg/SubLane.git
cd SubLane
docker compose -f docker.compose.yaml -f docker.compose.build.yaml up --build -d

Verwenden Sie beide Dateien für nachfolgende Befehle gegen diese Bereitstellung, um Build-Metadaten festzulegen:

Build from source · 7
VERSION=0.1.0-dev REVISION=$(git rev-parse HEAD) \
  docker compose -f docker.compose.yaml -f docker.compose.build.yaml build

Die Dockerfile-Compilations Go for TARGETOS/TARGETARCH ARM64 auf x86-64 zu bauen, emuliert also nicht den Compiler oder Frontend Build. Ein Multi-Plattform-Image kann mit einem konfigurierten Buildx Builder erstellt werden:

Build from source · 8
docker buildx build --platform linux/amd64,linux/arm64 \
  --build-arg VERSION=0.1.0-dev --output type=oci,dest=dist/sublane.oci.tar .

Schaffen dist Ein regulärer lokaler Build/Load zielt normalerweise auf eine Plattform ab. Docker's Querkompilationsführung.

Standalone Linux Binär

Laden Sie das Archiv herunter, das zu Ihrem Computer passt, und SHA256SUMS aus demselben Release:

  • sublane_VERSION_linux_amd64.tar.gzx86-64.
  • sublane_VERSION_linux_arm64.tar.gzAArch64.

Überprüfen Sie unter Linux die heruntergeladenen Dateien, extrahieren Sie das Archiv in ein neues versioniertes Verzeichnis und führen Sie Folgendes aus:

Standalone Linux binary · 9
sha256sum --check --ignore-missing SHA256SUMS
./sublane --version
SUBLANE_ADDR=127.0.0.1:8080 SUBLANE_DATA_DIR=/srv/sublane/data ./sublane

Das Archiv enthält die ausführbaren AGPL- und Drittlizenztexte, die Compose Datei, ein Umgebungsbeispiel und Bereitstellungs-/Backup-Dokumentation. Speichern Sie das Datenverzeichnis außerhalb des versionierten ausführbaren Verzeichnisses, machen Sie es privat und vom Dienstbenutzer beschreibbar und verwenden Sie einen Prozessbetreuer für den dauerhaften Betrieb. Das geführte Installationsprogramm kann diese Einrichtung mit einem systemischen Benutzerdienst durchführen. Führen Sie das Gateway nicht als root aus.

Demo-Modus

Der Installateur bietet Normale Instanz oder Read-Only-Demo Nach der Auswahl der Laufzeit ist der normale Modus standardmäßig, wenn der Demo-Modus direkt gewählt wird:

Install a read-only demo
curl -fsSL https://raw.githubusercontent.com/murongg/SubLane/main/scripts/install.sh | bash -s -- --demo

--demo Arbeitet mit beiden --runtime docker und --runtime binary. Hinzufügen --non-interactive um Standardeinstellungen für die verbleibenden Auswahlmöglichkeiten zu verwenden. SUBLANE_DEMO=true bis .env für Compose oder sublane.env für den binären Dienst, und zeigt die öffentliche Demo-Login nach der Installation. SUBLANE_DEMO nicht den gewählten Modus des Installateurs außer Kraft setzt.

Demo-Unterstützung muss in der verifizierten Konfiguration des ausgewählten Releases vorhanden sein.Der Installateur lehnt ältere Releases ab, bevor er Container zieht/startet oder einen Dienst aktiviert; --version um ein Release auszuwählen, das Demo-Unterstützung enthält. Es greift nicht auf eine normale Instanz zurück.

Starten Sie in einem Build mit Demo-Unterstützung eine Read-Only-Demonstration mit:

Start a disposable demo
SUBLANE_DEMO=true ./sublane

Öffnen Sie die übliche Serveradresse und wählen Sie Erkunden Sie Demooder melden Sie sich mit Benutzername an demo und Passwort sublane-demo. Der Antrag enthält eindeutig gekennzeichnete Musterabonnementkonten, -pools, -mitglieder, API Schlüsselmetadaten, Anfrageverlauf und 30 Nutzungstage. Navigation, Filter, Sprache und Themenpräferenzen funktionieren normal. Formulare können inspiziert werden, schreiben aber, Offenlegung von Anmeldeinformationen, OAuthBackups und alle Gateway Calls (einschließlich WebSocket) sind blockiert; Login und Logout bleiben verfügbar.

Jeder Start erstellt eine neue private temporäre Datenbank und einen Verschlüsselungsschlüssel. Demo-Modus wird nicht geöffnet SUBLANE_DATA_DIR, Preis-Caches, oder echte Anmeldeinformationen, und kontaktiert keine Anbieter oder Release / Preis-Services. Graceful Shutdown entfernt die temporären Dateien; ein abrupter Kill kann eine sublane-demo-* Verzeichnis im temporären Verzeichnis des Betriebssystems. Neustarten erstellt die Beispiele mit aktuellen Daten. Stoppen Sie die Demo und deaktivieren Sie SUBLANE_DEMO um eine normale Installation wieder aufzunehmen.

Für die Entwicklung, Verwendung SUBLANE_DEMO=true make devMit dieser Version Compose Datei, Set SUBLANE_DEMO=true in .env Bestehende veröffentlichte Versionen ohne Demo-Unterstützung müssen zuerst aktualisiert oder neu erstellt werden. Die normalen Listen-Adresse-, Extern-Original- und Trusted-Proxy-Einstellungen gelten weiterhin.

Laufzeitkonfiguration

Der Standalone-Dienst liest diese Prozessumgebungsvariablen; .env.example Es werden keine Beispiele geladen. .env Datei automatisch. Compose Lesewerte .env zur eigenen Interpolation und leitet die konfigurierte Umgebung in den Container.

VariabelStandalone-StandardZweck
SUBLANE_ADDR127.0.0.1:8080HTTP Abhöradresse
SUBLANE_DATA_DIR./dataSQLite Datenbank und Verschlüsselungsschlüsselverzeichnis
SUBLANE_CREDENTIALS_KEY_FILE—Optionale private Schlüsseldatei außerhalb des Datenverzeichnisses; ohne Angabe bleibt der bisherige Pfad
SUBLANE_DEMOfalsetrue Startet eine isolierte, wegwerfbare, schreibgeschützte Demo; akzeptiert nur true oder false
SUBLANE_LOG_LEVELinfodebug, info, warn oder error
SUBLANE_MAX_REQUEST_BODY_MB128Modellanforderung und Rekonstruktion WebSocket Kontextlimit in MiB; positive Ganzzahl
SUBLANE_GATEWAY_CAPACITY128Betrieb von Arbeitsplätzen
SUBLANE_GATEWAY_QUEUE_LIMIT100Kellner pro Gruppe
SUBLANE_GATEWAY_QUEUE_TIMEOUT30sAbwarten der Kapazität
SUBLANE_GATEWAY_REQUEST_TIMEOUT30mGesamtanforderung/Umdrehungsfrist
SUBLANE_GATEWAY_STREAM_IDLE_TIMEOUT0sVorgelagerte Leerlauffrist; 0s deaktiviert
SUBLANE_GATEWAY_KEEPALIVE_INTERVAL10sSSE Herzschlag kommentieren; 0s deaktiviert
SUBLANE_GATEWAY_RETRIES2Retrie vor einer erfolgreichen Antwort
SUBLANE_GATEWAY_RETRY_DELAY500msAnfängliche Verzögerung des Versuchs
SUBLANE_GATEWAY_TRANSIENT_THRESHOLD3Modellfehlerschwelle; 0 Deaktivierungen
SUBLANE_GATEWAY_TRANSIENT_WINDOW2mFenster zur Zählung von Modellfehlern
SUBLANE_GATEWAY_TRANSIENT_COOLDOWN10sAbkühlung des ersten Modells
SUBLANE_GATEWAY_RATE_LIMIT_COOLDOWN5sFehlende Retry-After Fallback
SUBLANE_INFERENCE_HEADER_TIMEOUT5mInference Response-Header warten; 0s deaktiviert; Metadaten Timeout bleibt getrennt
SUBLANE_PUBLIC_URLUnscharfExakte äußere Herkunft; HTTPS Sichere Sitzungs-Cookies ermöglichen
SUBLANE_TRUSTED_PROXIESUnscharfComma-getrennte CIDRs von Reverse Proxies, die vertrauenswürdig sind X-Forwarded-For für Authentifizierungsgrenzwerte

Die Docker Bild überschreibt die Listening-Adresse 0.0.0.0:8080 und Datenverzeichnis zu /data. SUBLANE_IMAGE, SUBLANE_BIND_ADDRESS und SUBLANE_PORT Stellt fest Compose nur. SQLite initialisiert das konsolidierte Schema in einer neuen Datenbank und verwendet eine einzelne Datenbankverbindung.

Beim Start werden neue Datenbanken initialisiert und fehlende Migrationen der Reihe nach auf unterstützte bestehende Datenbanken angewendet. Die frühe inkompatible Vorabstruktur mit 001_settings.sql wird abgelehnt; bewahren Sie deren Verzeichnis auf und beginnen Sie mit einem neuen. Exportieren und prüfen Sie vor Aktualisierungen ein Backup. Ein Image-Wechsel allein setzt migrierte Daten nicht zurück.

SUBLANE_MAX_REQUEST_BODY_MB Gilt für Gateway HTTP Ersuchen, WebSocket Nachrichten und rekonstruierter konversationskontext. Responses Stream-Ereignisse behalten ihre separaten 8 MiB-Limits bei. Starten Sie den Standalone-Dienst neu oder erstellen Sie den Container nach Änderung des Anforderungslimits neu und richten Sie alle Reverse-Proxy-Body-Limits an den neuen Wert aus.

Wenn Sie außer Kraft setzen SUBLANE_PRICING_URL, auch gesetzt SUBLANE_PRICING_HASH_URL Eine benutzerdefinierte Preis-URL ohne Hash-URL wird abgerufen und analysiert, aber nicht hash-verifiziert.

Gateway-Laufzeitänderungen erfordern einen Neustart oder Container-Recreation. Compose Datei führt diese Variablen durch. Script-verwaltete Updates bewahren bestehende Compose Dateien; fügen Sie die neuen Umgebungseinträge zu einem älteren gespeicherten Compose Datei, bevor Sie sich auf .env Konto-/Mitgliederkonkurrenzeinstellungen bleiben getrennt bestehen.

HTTPS Reverse-Proxy-Proxy

Setz SUBLANE_PUBLIC_URL zum exakten äußeren Ursprung, wie z.B. https://sublane.example.com, und erstellen Sie den Dienst, damit die Umgebungsänderungen wirksam werden. Dies wird hinter einem Reverse-Proxy benötigt, da das Fallback den Ursprung aus dem Host-Header der Anfrage ableitet. Der konfigurierte Ursprung wird für Browser-Request-Checks und sichere Sitzungscookies verwendet. WebSocket Upgrades.

Setz SUBLANE_TRUSTED_PROXIES zu den CIDR-Adressen der eigenen Proxy-Hops. SubLane Binär erreicht über IPv4-Loopback, Verwendung 127.0.0.1/32 (Zusatz) ::1/128 für IPv6-Loopback. A Docker Container kann den Host-Proxy als Brückenadresse anstelle von Loopback sehen; der Installer lässt diesen Wert leer in Docker Modus, es sei denn, Sie gehen --trusted-proxies mit der Anschrift SubLane Für einen Proxy-Container verwenden Sie dessen feste Adresse oder ein dediziertes, eng umschlossenes privates Subnetz. SubLane Ignoriert X-Forwarded-For Wenn der direkte Peer nicht mit dieser Liste übereinstimmt, verwendet er die rechteste nicht vertrauenswürdige IP in der Kette für die Anmeldegrenzen. SubLane Wenn dieser Proxy konfiguriert ist, teilen sich alle Benutzer hinter einem Proxy das Anmeldelimit des Proxys.

Für einen Caddy-Proxy, der auf demselben Host ausgeführt wird:

Caddyfile
sublane.example.com {
    reverse_proxy 127.0.0.1:8080
}

Caddy handhabt TLS und WebSocket Upgrades und Flushes SSE Antworten automatisch. Das Standard-Flush-Verhalten beibehalten, damit Client-Disconnects die vorgelagerte Arbeit abbrechen können; negativ flush_interval Ändert das Annullierungsverhalten Caddy Reverse Proxy ReferenzWenn der Proxy ein anderer Container ist, verwenden Sie Compose Name des Dienstes sublane:8080 in einem gemeinsamen Netz; 127.0.0.1 innerhalb des Proxy-Containers bezieht sich auf diesen Container selbst.

Für eine bestehende Nginx-Installation legen Sie die Karte in die http Kontext und verwenden Sie diese Orte innerhalb seiner HTTPS Serverblock:

HTTPS reverse proxy · 11
map $http_upgrade $sublane_connection {
    default upgrade;
    ''      close;
}

location / {
    proxy_pass http://127.0.0.1:8080;
    proxy_http_version 1.1;
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $sublane_connection;
    proxy_buffering off;
    proxy_read_timeout 650s;
    proxy_send_timeout 650s;
    client_max_body_size 128m;
}

# Web backup uploads/downloads can be larger and last up to 15 minutes.
location /api/settings/backup/ {
    proxy_pass http://127.0.0.1:8080;
    proxy_http_version 1.1;
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_request_buffering off;
    proxy_buffering off;
    proxy_read_timeout 950s;
    proxy_send_timeout 950s;
    client_max_body_size 256m;
}

Konfigurieren Sie die HTTPS Zertifikat im übergeordneten Nginx-Server. Nginx WebSocket Führung Limits müssen auch die Anforderungs-/Backup-Größen auf jeder anderen Proxy-Schicht zulassen, die eigenen Berechtigungs- und Body-Limits des Gateways bleiben in Kraft.

Upgrade

  1. Überprüfen Sie die Release Notes und notieren Sie die aktuelle Bildversion / Verdauung.

  2. Exportieren Sie ein konsistentes Backup und kopieren Sie es aus dem Datenvolumen:

    Upgrade · 12
    docker compose -f docker.compose.yaml exec sublane sh -c 'mkdir -p /data/backups'
    docker compose -f docker.compose.yaml exec sublane sublane backup --output /data/backups/pre-upgrade.sublane-backup.tar.gz
    docker compose -f docker.compose.yaml exec sublane sublane backup verify --input /data/backups/pre-upgrade.sublane-backup.tar.gz
    docker compose -f docker.compose.yaml cp sublane:/data/backups/pre-upgrade.sublane-backup.tar.gz ./pre-upgrade.sublane-backup.tar.gz
    chmod 600 ./pre-upgrade.sublane-backup.tar.gz

    Verwenden Sie für jedes Upgrade einen neuen Dateinamen; bestehende Backups werden nie überschrieben. Das Archiv enthält den Verschlüsselungsschlüssel und gehört in den privaten Speicher.

  3. Änderung SUBLANE_IMAGE in .env auf die ausgewählte Version, dann ziehen und neu erstellen:

    Upgrade · 13
    docker compose -f docker.compose.yaml pull
    docker compose -f docker.compose.yaml up -d
    docker compose -f docker.compose.yaml ps
    docker compose -f docker.compose.yaml logs --tail=100 sublane
  4. Bestätigen Sie Gesundheit, Anmelden, erwartete Konten/Pools/Schlüssel und einen ausdrücklich autorisierten Kundenanruf. SQLite Bildzustand überprüft Prozess-/Datenbankbereitschaft, nicht echte Anbieterautorisierung.

Rückforderung und Rollback

Das Ändern eines Image-Tags allein ist kein Rollback der Datenbank. Wenn ein Release das Schema migriert hat, stellen Sie das Pre-Upgrade-Archiv mit dem beabsichtigten älteren Binärbild in ein neues Verzeichnis wieder her, dann stoppen Sie den aktuellen Dienst und wechseln Sie zu dem wiederhergestellten Verzeichnis. Behalten Sie das Originalvolumen bei, bis die Verifizierung abgeschlossen ist. Lassen Sie niemals zwei Prozesse das gleiche SQLite Verzeichnis.

Die Backup-Leitfaden Deckt CLI und Web Restaurierung Vorbereitung und die Compose Override für /data/restore-ready. Verwenden Sie den Wiederherstellungsüberschreibungsmodus bei späteren Starts weiter, während das Verzeichnis aktiv ist. Ein Backup aus einem neueren Schema kann nicht durch ein älteres Release geöffnet werden, das es nicht erkennt.

Überprüfung von Containern

mit a Docker Motorbetrieb:

Container verification · 12
docker compose -f docker.compose.yaml config --quiet
docker compose -f docker.compose.yaml -f docker.compose.build.yaml config --quiet
docker buildx build --load --build-arg VERSION=0.0.0-test -t sublane:smoke .
bash scripts/container-smoke.sh sublane:smoke 0.0.0-test

Das Rauchskript erstellt sein eigenes Einweg-Namensvolume und -container, wobei das Netzwerk deaktiviert ist. Es überprüft den Zustand, die Version, die Nicht-Root-Ausführung, schreibgeschützte Laufzeitpfade, die Erstausführung mit synthetischen Anmeldeinformationen, Schlüsselberechtigungen, Backup/Verify/Restore und Persistenz nach dem Neustart. Es entfernt nur diese temporären Ressourcen. Es kontaktiert keine vorgelagerten Anbieter oder verwendet keine vorhandenen Instanzdaten. CI führt die gleichen Prüfungen bei nativen amd64- und arm64-Läufern durch.