Ir al contenido

gtc start

El comando gtc start inicia el servidor runtime de Greentic. Pone en marcha todos los servicios necesarios, incluyendo el servidor HTTP, el bus NATS y el ejecutor de flows.

Ventana de terminal
gtc start [OPTIONS] <BUNDLE_PATH>
OpciónDescripciónValor por defecto
--host <HOST>Dirección de enlace0.0.0.0
--port <PORT>Puerto HTTP8080
--cloudflared <on/off>Habilita el túnel de Cloudflareon
--ngrok <on/off>Habilita el túnel de ngrokoff
--nats <on/off>Habilita NATS embebidoon
--skip-setupOmite los flows de configuración de providersfalse
--force-setupFuerza la reejecución de los flows de configuraciónfalse
-v, --verboseHabilita logs detallados/debugfalse
-q, --quietSalida mínimafalse
Ventana de terminal
gtc start ./my-bundle

Esto inicia:

  • Servidor HTTP en 0.0.0.0:8080
  • Servidor NATS embebido
  • Túnel Cloudflared (si está disponible)
Ventana de terminal
# 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
Ventana de terminal
# No tunnels, external NATS
gtc start ./my-bundle --cloudflared off --ngrok off
# Custom port
gtc start ./my-bundle --port 3000 --cloudflared off

Cloudflared crea un túnel seguro hacia la red de Cloudflare:

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

Usa ngrok para obtener una URL estable durante el desarrollo:

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

Para producción con un dominio público:

Ventana de terminal
gtc start ./my-bundle --cloudflared off --ngrok off
# Make sure your server is publicly accessible
# and update provider webhooks with your domain
Ventana de terminal
gtc start ./my-bundle --nats on
# Starts embedded NATS on localhost:4222
Ventana de terminal
# 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

Por defecto, gtc start ejecuta flows de configuración si los providers aún no están configurados:

Ventana de terminal
gtc start ./my-bundle
# Runs setup flows for unconfigured providers

Omite por completo los flows de configuración (usa la configuración existente):

Ventana de terminal
gtc start ./my-bundle --skip-setup

Fuerza la reejecución de todos los flows de configuración (útil después de cambios de URL):

Ventana de terminal
gtc start ./my-bundle --force-setup

Cuando está en ejecución, el servidor expone:

EndpointPropósito
GET /healthComprobación de estado
GET /readyProbe de disponibilidad
POST /webhook/{provider}/{tenant}/{team}Webhooks de providers
GET /api/v1/sessionsGestión de sesiones
POST /api/v1/messagesEnviar mensajes
GET /auth/configEndpoint de configuración OAuth
POST /oauth/token-exchangeProxy del lado del servidor para intercambio de tokens OIDC
Ventana de terminal
curl http://localhost:8080/health
# {"status": "healthy"}

El runtime expone dos endpoints para la integración OAuth/OIDC con providers de mensajería que requieren autenticación de usuario (como WebChat o Teams).

Lee la configuración OAuth desde el secrets store y la devuelve al cliente. Los clientes usan este endpoint para descubrir la configuración del identity provider necesaria para iniciar un flujo de autorización.

Ventana de terminal
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"
# }

Un proxy del lado del servidor para el intercambio de tokens del authorization code OIDC. Este endpoint permite que los clientes intercambien un authorization code por tokens sin encontrarse con restricciones CORS del navegador al llamar directamente desde el frontend a los endpoints de tokens del identity provider.

Ventana de terminal
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"}'

Las rutas estáticas (como las comprobaciones de estado y los endpoints OAuth) pueden configurarse sin requerir una URL base pública explícita. Esto significa que estos endpoints están disponibles inmediatamente cuando el servidor arranca, incluso antes de que exista un túnel o una URL pública.

Ventana de terminal
# 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
Ventana de terminal
gtc start ./my-bundle --verbose
# Equivalent to GREENTIC_LOG_LEVEL=debug
Ventana de terminal
# 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
SeñalComportamiento
SIGTERMApagado ordenado
SIGINT (Ctrl+C)Apagado ordenado
SIGHUPRecargar configuración
VariableDescripción
GREENTIC_HOSTDirección de enlace
GREENTIC_PORTPuerto HTTP
GREENTIC_LOG_LEVELVerbosidad de logs
GREENTIC_LOG_FORMATFormato del log (json/pretty)
GREENTIC_NATS_URLURL de NATS externo
GREENTIC_REDIS_URLURL de Redis para sesiones
Error: Address already in use (os error 48)

Otro proceso está usando el puerto 8080. Detén ese proceso o usa un puerto diferente:

Ventana de terminal
gtc start ./my-bundle --port 3000
Error: Failed to connect to NATS

Si usas NATS externo, asegúrate de que esté ejecutándose y accesible. De lo contrario, habilita el embebido:

Ventana de terminal
gtc start ./my-bundle --nats on
Error: Failed to start cloudflared tunnel

Instala cloudflared o usa ngrok en su lugar:

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

Revisa tus credenciales en el archivo de respuestas y asegúrate de que la URL pública sea accesible:

Ventana de terminal
# 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"]
Ventana de terminal
docker build -t my-worker .
docker run -p 8080:8080 my-worker