Skip to content

Ein-Befehl-Deployment: Starten Sie Ihre KI-Plattform ​

Die Swiss AI Hub Plattform wird mit einem einzigen Docker Compose Befehl deployt. Dieser optimierte Prozess lässt Ihre vollständige KI-Infrastruktur in Minutenschnelle, nicht stundenlang, laufen.

Schnellinstallation ​

Führen Sie einen einzigen Befehl aus, um die Plattform herunterzuladen, zu entpacken und einzurichten:

bash
curl -fsSL https://raw.githubusercontent.com/bbvch-ai/aihub-core/main/install.sh | bash

Der Installer erkennt automatisch GPU-Hardware, lädt das richtige Release-Bundle herunter und generiert alle Secrets. Danach bearbeiten Sie .env und führen docker compose up -d aus.

FlagDefaultBeschreibung
--version VERSIONlatestAn ein bestimmtes Release pinnen
--gpuauto-detectGPU-Bundle erzwingen
--cpuauto-detectNur-CPU-Bundle erzwingen
--dir PATH./swiss-ai-hubInstallationsverzeichnis
--helpNutzung anzeigen

Beispiele:

bash
# Mit GPU-Bundle in ein benutzerdefiniertes Verzeichnis installieren
curl -fsSL https://raw.githubusercontent.com/bbvch-ai/aihub-core/main/install.sh | bash -s -- --gpu --dir /opt/swiss-ai-hub

# Eine bestimmte Version pinnen
curl -fsSL https://raw.githubusercontent.com/bbvch-ai/aihub-core/main/install.sh | bash -s -- --version v0.269.2

Upgrade: Führen Sie den Installer erneut mit demselben --dir aus. Er erkennt die bestehende Installation, sichert Ihre .env-Datei, ersetzt Bundle-Dateien, stellt die .env-Datei wieder her und meldet alle neuen Umgebungsvariablen, die im Release hinzugefügt wurden.


Bereitstellungsübersicht ​

Zwei Deployment-Optionen

Der Swiss AI Hub unterstützt zwei Deployment-Modi. Befolgen Sie für beide die gleichen Schritte und verwenden Sie die entsprechenden Befehle für Ihren Deployment-Typ:

  • Produktions-Deployment: Deployen Sie auf einem Server mit einem echten Domainnamen (z.B. swiss-ai-hub.yourcompany.com)
    • Verwendet das CPU- oder GPU-Release-Bundle von GitHub Releases
    • Verwendet Let's Encrypt für automatische SSL-Zertifikate
    • Erfordert eine DNS-Konfiguration, die auf Ihren Server zeigt
  • Lokales Deployment: Auf Ihrer lokalen Maschine für Entwicklung/Tests ausführen
    • Verwendet infra/docker-compose.local.yml aus dem Repository
    • Verwendet selbstsignierte SSL-Zertifikate (mkcert)
    • Verwendet die Domain 127.0.0.1.nip.io (löst sich automatisch zu localhost auf)

Jeder Schritt unten zeigt Befehle für beide Deployment-Typen. Befolgen Sie einfach die Befehle, die Ihrem gewählten Deployment-Modus entsprechen.


Schritt 1: Deployment-Dateien herunterladen ​

Für die Produktion:

Laden Sie das neueste Release-Bundle von GitHub Releases herunter. Jedes Release bietet zwei eigenständige Bundles:

  • swissaihub-<version>.tar.gz — Nur-CPU-Deployment
  • swissaihub-<version>-gpu.tar.gz — GPU-fähiges Deployment (inklusive vLLM, GPU-beschleunigte Inferenz)
bash
# Legen Sie die Version fest, die Sie deployen möchten
VERSION="v0.266.0"  # Ersetzen Sie dies durch die gewünschte Version

# Laden Sie das Release-Bundle herunter und entpacken Sie es (CPU-Beispiel)
mkdir swiss-ai-hub && cd swiss-ai-hub
curl -L "https://github.com/bbvch-ai/aihub-core/releases/download/${VERSION}/swissaihub-${VERSION}.tar.gz" \
  | tar -xz

# Für ein GPU-fähiges Deployment verwenden Sie stattdessen:
# curl -L "https://github.com/bbvch-ai/aihub-core/releases/download/${VERSION}/swissaihub-${VERSION}-gpu.tar.gz" \
#   | tar -xz

Das Release-Bundle enthält alles Notwendige für das Deployment: docker-compose.yml, alle Service-Konfigurationsdateien, eine .env.template und das setup-env.sh-Skript.

Für lokales Deployment:

bash
# Repository klonen
git clone https://github.com/bbvch-ai/aihub-core.git
cd swiss-ai-hub

# SSL-Zertifikate mit mkcert generieren
mkcert -install  # Lokale CA installieren (nur einmalig erforderlich)
make local-cert

Was ist nip.io?

Die Domain *.127.0.0.1.nip.io löst sich automatisch zu Ihrem Localhost (127.0.0.1) auf und bietet eine Wildcard-DNS-Auflösung, ohne dass Sie Ihre Hosts-Datei ändern müssen. Dies ermöglicht Subdomain-basiertes Routing in der lokalen Entwicklung.


Schritt 2: Umgebungsvariablen konfigurieren ​

Umgebungskonfiguration generieren ​

Für die Produktion (Release-Bundle):

Das Release-Bundle enthält ein setup-env.sh-Skript, das eine .env-Datei aus der enthaltenen .env.template generiert. Es erstellt automatisch einzigartige Secrets für alle Datenbankpasswörter, Tokens und Signierschlüssel:

bash
# .env mit automatisch generierten Secrets erstellen
./setup-env.sh
Was macht setup-env.sh?

Das Skript liest .env.template und ersetzt alle REPLACE_WITH_* Platzhalter durch kryptographisch sichere Zufallswerte. Jeder Platzhalter erhält sein eigenes einzigartiges Secret. Das Skript benötigt nur openssl und bash – keine Python- oder andere Abhängigkeiten.

bash
# Optionen:
./setup-env.sh                              # Standard: .env.template → .env
./setup-env.sh -t custom.template -o out.env  # Benutzerdefinierte Pfade
./setup-env.sh --force                      # Bestehende .env überschreiben

Für lokales Deployment:

bash
cp .env.dev .env

Verbleibende Werte konfigurieren ​

Nachdem Sie Ihre .env-Datei generiert haben, überprüfen Sie diese und füllen Sie die Werte aus, die eine manuelle Konfiguration erfordern:

Kritische Werte zum Ersetzen:

  1. Domain — Setzen Sie DOMAIN auf Ihre Produktionsdomain (z.B. swiss-ai-hub.yourcompany.com) oder auf 127.0.0.1.nip.io für lokale Tests

  2. Authentifizierungswerte (aus den Voraussetzungen):

    • REPLACE_WITH_YOUR_CLIENT_ID → Ihre Azure App Registration Client ID
    • REPLACE_WITH_YOUR_CLIENT_SECRET → Ihr Azure App Registration Client Secret
    • REPLACE_WITH_YOUR_TENANT_ID → Ihre Azure Tenant ID
  3. Zugriff auf KI-Modelle (Swiss LLM Cloud — für Nicht-GPU-Deployments erforderlich):

    • REPLACE_WITH_SWISS_LLM_CLOUD_URL → Ihr Swiss LLM Cloud Endpunkt für Textgenerierung
    • REPLACE_WITH_SWISS_LLM_CLOUD_KEY → Ihr Swiss LLM Cloud API-Schlüssel
    • Konfigurieren Sie die verbleibenden Endpunktpaare für Embedding, Reranking, Whisper und OCR
  4. Experten-Eskalation (optional — für Expert-in-the-Loop-Funktionen):

    • REPLACE_WITH_TEAMS_CHANNEL_ID → Ihre Teams Channel ID (Format: 19:xxx@thread.tacv2)
    • REPLACE_WITH_TEAMS_TENANT_ID → Ihre Azure AD Tenant ID
    • REPLACE_WITH_TEAMS_BOT_ID → Ihre Azure Bot Service Anwendungs-ID

Vereinfachte Konfiguration

Interne Service-Endpunkte (wie Datenbank-URLs, Message Queues usw.) sind in den Docker Compose Dateien fest codiert. Sie müssen nur Anmeldeinformationen und externe Serviceverbindungen konfigurieren. Alle Datenbankpasswörter, Tokens und Signierschlüssel werden automatisch von setup-env.sh generiert.

Umgebungsvalidierung ​

Vor dem Deployment überprüfen Sie Ihre Konfiguration:

bash
# Auf Platzhalterwerte prüfen, die noch ersetzt werden müssen
grep -n "REPLACE_WITH" .env

Dies sollte keine Ergebnisse liefern, wenn alle Platzhalter ersetzt wurden.


Schritt 3: Plattform deployen ​

Alle Services starten ​

Deployen Sie die komplette Plattform mit einem Befehl:

Für die Produktion (Release-Bundle):

bash
docker compose up -d

Dieser Befehl wird:

  • Alle notwendigen Docker-Images herunterladen
  • Erforderliche Netzwerke und Volumes erstellen
  • Alle Plattform-Services in der richtigen Reihenfolge starten
  • Service Discovery und Kommunikation konfigurieren

Deployment-Fortschritt überwachen ​

Beobachten Sie den Deployment-Fortschritt:

bash
# Alle Services beim Starten beobachten
docker compose logs -f

# Service-Gesundheitsstatus prüfen
docker compose ps

Erwartete Services: Die Plattform umfasst diese Kernservices:

  • Web-Oberfläche (swiss-ai-hub-web)
  • API (swiss-ai-hub-api)
  • Authentifizierung (auth services)
  • Datenbanken (FerretDB, PostgreSQL, Valkey)
  • Vektor-Datenbank (Milvus)
  • LLM Proxy (LiteLLM)
  • Dokumentenverarbeitung (MinerU)
  • Observability (Langfuse)
  • Nachrichtenwarteschlange (NATS)
  • Speicher (SeaweedFS)

Warten auf Service-Initialisierung ​

Der anfängliche Start dauert 3-5 Minuten, während die Services initialisiert werden. Alle Services sollten den Status „healthy“ anzeigen:

bash
# Auf den Status „healthy“ warten
docker compose ps --format "table {{.Name}}\t{{.Status}}"

Schritt 4: Erfolgreiches Deployment überprüfen ​

Auf die Plattform zugreifen ​

  1. Stellen Sie sicher, dass Ihr Benutzer, mit dem Sie testen, die Rollen "AIHubAdmin" und "AIHubSysAdmin" in der Azure Enterprise Application zugewiesen bekommen hat

  2. Web-Oberfläche:

    • Produktion: https://your-domain.com
  3. Erwarteter Login-Flow:

    • Leitet zur Azure-Authentifizierung um
    • Nach dem Login kehrt die Benutzeroberfläche des Swiss AI Hub zurück
    • Das Haupt-Dashboard sollte sichtbar sein

Gebaut mit ❤️ in der Schweiz 🇨🇭