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.
| Tag | Bedeutung |
|---|---|
0.1.0 | Beispiel einer festen stabilen Version; verwenden Sie eine tatsächlich veröffentlichte Version |
0.1.0-rc.1 | Veröffentlichte Vorabversion; aktualisiert nicht latest |
latest | Neueste erfolgreich beworbene stabile Version |
0.1.0-amd64 / 0.1.0-arm64 | Per-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.
curl -fsSL https://raw.githubusercontent.com/murongg/SubLane/main/scripts/install.sh | bashohne --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:
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-interactiveVersions-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.
curl -fsSL https://raw.githubusercontent.com/murongg/SubLane/main/scripts/install.sh | bash -s -- \
--update --dir ./sublaneohne --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:
mkdir sublane && cd sublane
curl -fsSL https://github.com/murongg/SubLane/releases/download/v0.1.0-rc.1/docker.compose.yaml -o docker.compose.yamlIn diesem Verzeichnis erstellen Sie eine Compose .env Datei, um die ausgewählte Bildversion über Neustarts und Upgrades hinweg zu halten:
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>/32Compose 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.
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 sublaneOffen 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:
git clone https://github.com/murongg/SubLane.git
cd SubLane
docker compose -f docker.compose.yaml -f docker.compose.build.yaml up --build -dVerwenden Sie beide Dateien für nachfolgende Befehle gegen diese Bereitstellung, um Build-Metadaten festzulegen:
VERSION=0.1.0-dev REVISION=$(git rev-parse HEAD) \
docker compose -f docker.compose.yaml -f docker.compose.build.yaml buildDie 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:
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:
sha256sum --check --ignore-missing SHA256SUMS
./sublane --version
SUBLANE_ADDR=127.0.0.1:8080 SUBLANE_DATA_DIR=/srv/sublane/data ./sublaneDas 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:
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:
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.
| Variabel | Standalone-Standard | Zweck |
|---|---|---|
SUBLANE_ADDR | 127.0.0.1:8080 | HTTP Abhöradresse |
SUBLANE_DATA_DIR | ./data | SQLite Datenbank und Verschlüsselungsschlüsselverzeichnis |
SUBLANE_CREDENTIALS_KEY_FILE | — | Optionale private Schlüsseldatei außerhalb des Datenverzeichnisses; ohne Angabe bleibt der bisherige Pfad |
SUBLANE_DEMO | false | true Startet eine isolierte, wegwerfbare, schreibgeschützte Demo; akzeptiert nur true oder false |
SUBLANE_LOG_LEVEL | info | debug, info, warn oder error |
SUBLANE_MAX_REQUEST_BODY_MB | 128 | Modellanforderung und Rekonstruktion WebSocket Kontextlimit in MiB; positive Ganzzahl |
SUBLANE_GATEWAY_CAPACITY | 128 | Betrieb von Arbeitsplätzen |
SUBLANE_GATEWAY_QUEUE_LIMIT | 100 | Kellner pro Gruppe |
SUBLANE_GATEWAY_QUEUE_TIMEOUT | 30s | Abwarten der Kapazität |
SUBLANE_GATEWAY_REQUEST_TIMEOUT | 30m | Gesamtanforderung/Umdrehungsfrist |
SUBLANE_GATEWAY_STREAM_IDLE_TIMEOUT | 0s | Vorgelagerte Leerlauffrist; 0s deaktiviert |
SUBLANE_GATEWAY_KEEPALIVE_INTERVAL | 10s | SSE Herzschlag kommentieren; 0s deaktiviert |
SUBLANE_GATEWAY_RETRIES | 2 | Retrie vor einer erfolgreichen Antwort |
SUBLANE_GATEWAY_RETRY_DELAY | 500ms | Anfängliche Verzögerung des Versuchs |
SUBLANE_GATEWAY_TRANSIENT_THRESHOLD | 3 | Modellfehlerschwelle; 0 Deaktivierungen |
SUBLANE_GATEWAY_TRANSIENT_WINDOW | 2m | Fenster zur Zählung von Modellfehlern |
SUBLANE_GATEWAY_TRANSIENT_COOLDOWN | 10s | Abkühlung des ersten Modells |
SUBLANE_GATEWAY_RATE_LIMIT_COOLDOWN | 5s | Fehlende Retry-After Fallback |
SUBLANE_INFERENCE_HEADER_TIMEOUT | 5m | Inference Response-Header warten; 0s deaktiviert; Metadaten Timeout bleibt getrennt |
SUBLANE_PUBLIC_URL | Unscharf | Exakte äußere Herkunft; HTTPS Sichere Sitzungs-Cookies ermöglichen |
SUBLANE_TRUSTED_PROXIES | Unscharf | Comma-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:
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:
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
-
Überprüfen Sie die Release Notes und notieren Sie die aktuelle Bildversion / Verdauung.
-
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.gzVerwenden 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.
-
Änderung
SUBLANE_IMAGEin.envauf 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 -
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:
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-testDas 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.