Production Deployment
StructaAI runs on a single VPS using Docker Compose with Caddy (TLS), nginx, NestJS, MongoDB, Redis, ChromaDB, and MinIO.
URLs
| Service | URL |
|---|---|
| Dashboard | https://structaai.online |
| Documentation | https://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.onlineanddocs.structaai.onlinepointing 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 notificationsMONGO_ROOT_PASSWORDand matchingDATABASE_URL(includereplicaSet=rs0— required by Prisma)MINIO_ROOT_PASSWORD,MINIO_ROOT_USERJWT_ACCESS_SECRET(strong, notchangeme)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.