Zum Inhalt springen

gtc start

Der Befehl gtc start startet den Greentic-Runtime-Server. Er startet alle erforderlichen Dienste, einschließlich HTTP-Server, NATS-Bus und Flow-Executor.

Terminal-Fenster
gtc start [OPTIONS] <BUNDLE_PATH>
OptionBeschreibungStandard
--host <HOST>Bind-Adresse0.0.0.0
--port <PORT>HTTP-Port8080
--cloudflared <on/off>Cloudflare-Tunnel aktivierenon
--ngrok <on/off>ngrok-Tunnel aktivierenoff
--nats <on/off>Eingebettetes NATS aktivierenon
--skip-setupProvider-Setup-Flows überspringenfalse
--force-setupSetup-Flows erneut erzwingenfalse
-v, --verboseAusführliches/Debug-Logging aktivierenfalse
-q, --quietMinimale Ausgabefalse
Terminal-Fenster
gtc start ./my-bundle

Dadurch werden gestartet:

  • HTTP-Server auf 0.0.0.0:8080
  • Eingebetteter NATS-Server
  • Cloudflared-Tunnel (falls verfügbar)
Terminal-Fenster
# Use ngrok instead of cloudflared
gtc start ./my-bundle --cloudflared off --ngrok on
# With verbose logging
gtc start ./my-bundle --verbose
# Skip setup (if already configured)
gtc start ./my-bundle --skip-setup
Terminal-Fenster
# No tunnels, external NATS
gtc start ./my-bundle --cloudflared off --ngrok off
# Custom port
gtc start ./my-bundle --port 3000 --cloudflared off

Cloudflared erstellt einen sicheren Tunnel zum Cloudflare-Netzwerk:

Terminal-Fenster
gtc start ./my-bundle --cloudflared on
# Output:
# Cloudflare tunnel started: https://random-words.trycloudflare.com
# Webhook URLs will use: https://random-words.trycloudflare.com

Verwende ngrok für eine stabile URL während der Entwicklung:

Terminal-Fenster
gtc start ./my-bundle --ngrok on
# Output:
# ngrok tunnel started: https://abc123.ngrok-free.app
# Webhook URLs will use: https://abc123.ngrok-free.app

Für die Produktion mit einer öffentlichen Domain:

Terminal-Fenster
gtc start ./my-bundle --cloudflared off --ngrok off
# Make sure your server is publicly accessible
# and update provider webhooks with your domain
Terminal-Fenster
gtc start ./my-bundle --nats on
# Starts embedded NATS on localhost:4222
Terminal-Fenster
# Disable embedded, use external
gtc start ./my-bundle --nats off
# Set NATS URL via environment
GREENTIC_NATS_URL=nats://nats.example.com:4222 gtc start ./my-bundle --nats off

Standardmäßig führt gtc start Setup-Flows aus, wenn Provider noch nicht konfiguriert sind:

Terminal-Fenster
gtc start ./my-bundle
# Runs setup flows for unconfigured providers

Setup-Flows vollständig überspringen (vorhandene Konfiguration verwenden):

Terminal-Fenster
gtc start ./my-bundle --skip-setup

Alle Setup-Flows erneut ausführen (nützlich nach URL-Änderungen):

Terminal-Fenster
gtc start ./my-bundle --force-setup

Während der Laufzeit stellt der Server Folgendes bereit:

EndpointZweck
GET /healthHealth-Check
GET /readyReadiness-Probe
POST /webhook/{provider}/{tenant}/{team}Provider-Webhooks
GET /api/v1/sessionsSitzungsverwaltung
POST /api/v1/messagesNachrichten senden
GET /auth/configOAuth-Konfigurationsendpunkt
POST /oauth/token-exchangeServerseitiger OIDC-Token-Exchange-Proxy
Terminal-Fenster
curl http://localhost:8080/health
# {"status": "healthy"}

Die Runtime stellt zwei Endpunkte für die OAuth/OIDC-Integration mit Messaging-Providern bereit, die eine Benutzerauthentifizierung erfordern (z. B. WebChat oder Teams).

Liest die OAuth-Konfiguration aus dem Secret-Store und gibt sie an den Client zurück. Clients verwenden diesen Endpunkt, um die Einstellungen des Identity Providers zu ermitteln, die zum Starten eines Autorisierungsflusses benötigt werden.

Terminal-Fenster
curl http://localhost:8080/auth/config
# {
# "authority": "https://login.microsoftonline.com/{tenant-id}/v2.0",
# "client_id": "your-client-id",
# "redirect_uri": "https://your-public-url/auth/callback",
# "scope": "openid profile"
# }

Ein serverseitiger Token-Exchange-Proxy für den OIDC-Authorization-Code-Austausch. Dieser Endpunkt ermöglicht Clients, einen Autorisierungscode gegen Tokens auszutauschen, ohne an Browser-CORS-Beschränkungen zu scheitern, die auftreten, wenn Token-Endpunkte des Identity Providers direkt aus dem Frontend aufgerufen werden.

Terminal-Fenster
curl -X POST http://localhost:8080/oauth/token-exchange \
-H "Content-Type: application/json" \
-d '{"code": "authorization_code_here", "redirect_uri": "https://your-public-url/auth/callback"}'

Statische Routen (wie Health-Checks und OAuth-Endpunkte) können konfiguriert werden, ohne dass eine explizite öffentliche Basis-URL erforderlich ist. Das bedeutet, dass diese Endpunkte sofort verfügbar sind, sobald der Server startet, noch bevor ein Tunnel oder eine öffentliche URL eingerichtet ist.

Terminal-Fenster
# Debug (most verbose)
GREENTIC_LOG_LEVEL=debug gtc start ./my-bundle
# Info (default)
GREENTIC_LOG_LEVEL=info gtc start ./my-bundle
# Warning
GREENTIC_LOG_LEVEL=warn gtc start ./my-bundle
Terminal-Fenster
gtc start ./my-bundle --verbose
# Equivalent to GREENTIC_LOG_LEVEL=debug
Terminal-Fenster
# JSON format (for production)
GREENTIC_LOG_FORMAT=json gtc start ./my-bundle
# Pretty format (for development, default)
GREENTIC_LOG_FORMAT=pretty gtc start ./my-bundle
SignalVerhalten
SIGTERMGraceful Shutdown
SIGINT (Ctrl+C)Graceful Shutdown
SIGHUPKonfiguration neu laden
VariableBeschreibung
GREENTIC_HOSTBind-Adresse
GREENTIC_PORTHTTP-Port
GREENTIC_LOG_LEVELLog-Ausführlichkeit
GREENTIC_LOG_FORMATLog-Format (json/pretty)
GREENTIC_NATS_URLExterne NATS-URL
GREENTIC_REDIS_URLRedis-URL für Sitzungen
Error: Address already in use (os error 48)

Ein anderer Prozess verwendet Port 8080. Stoppe ihn oder verwende einen anderen Port:

Terminal-Fenster
gtc start ./my-bundle --port 3000
Error: Failed to connect to NATS

Wenn du externes NATS verwendest, stelle sicher, dass es läuft und erreichbar ist. Andernfalls aktiviere das eingebettete NATS:

Terminal-Fenster
gtc start ./my-bundle --nats on
Error: Failed to start cloudflared tunnel

Installiere cloudflared oder verwende stattdessen ngrok:

Terminal-Fenster
# Install cloudflared
brew install cloudflared
# Or use ngrok
gtc start ./my-bundle --cloudflared off --ngrok on
Error: Setup flow failed for messaging-telegram

Prüfe deine Zugangsdaten in der Answer-Datei und stelle sicher, dass die öffentliche URL erreichbar ist:

Terminal-Fenster
# Re-run setup
gtc start ./my-bundle --force-setup --verbose
Dockerfile
FROM rust:1.90 as builder
WORKDIR /app
COPY . .
RUN cargo build --release
FROM debian:bookworm-slim
COPY --from=builder /app/target/release/gtc /usr/local/bin/
COPY my-bundle /app/bundle
WORKDIR /app
EXPOSE 8080
CMD ["gtc", "start", "/app/bundle", "--cloudflared", "off"]
Terminal-Fenster
docker build -t my-worker .
docker run -p 8080:8080 my-worker