Skip to main content

Production Deployment

StructaAI runs on a single VPS using Docker Compose with Caddy (TLS), nginx, NestJS, MongoDB, Redis, ChromaDB, and MinIO.

URLs

ServiceURL
Dashboardhttps://structaai.online
Documentationhttps://docs.structaai.online (API Reference "Try it" uses /api proxy)
API (proxied)https://structaai.online/api

Quick deploy

On the server:

cd structaai/deploy
cp .env.example .env # fill in secrets
./scripts/deploy.sh

Prerequisites

  • Docker and Docker Compose v2
  • DNS A records for structaai.online and docs.structaai.online pointing to the server
  • Ports 80 and 443 available (stop host nginx if installed)

Required secrets

Copy .env.example to .env and set:

  • ACME_EMAIL — Let's Encrypt notifications
  • MONGO_ROOT_PASSWORD and matching DATABASE_URL (include replicaSet=rs0 — required by Prisma)
  • MINIO_ROOT_PASSWORD, MINIO_ROOT_USER
  • JWT_ACCESS_SECRET (strong, not changeme)
  • WEBHOOK_ENCRYPTION_KEY (64 hex characters)
  • UNSTRUCTURED_API_KEY, GOOGLE_API_KEY, OPENAI_API_KEY

OAuth redirect URIs

Register in your provider consoles:

  • Google Drive: https://structaai.online/api/integrations/google-drive/callback
  • Dropbox: https://structaai.online/api/integrations/dropbox/callback

Updating

cd structaai/deploy
docker compose build
docker compose up -d

Full runbook

See structaai/deploy/README.md on the server for backups, troubleshooting, and operations.