Deploy using the Canvas
Create a project
production environment; the canvas opens automatically.Import the Compose file
Expose your app on HTTPS
Wire the env var references
${VAR} shell placeholders for you: variables shared between services (like a database password) arrive as cross-container references, and ${VAR:-default} defaults are applied. What’s left is swapping any localhost-style defaults for your Suga hostname.For the example file, update the n8n container’s env vars:N8N_HOST: choose Reference, pickn8n→SUGA_PUBLIC_HOSTNAME.WEBHOOK_URL: set tohttps://{{n8n.SUGA_PUBLIC_HOSTNAME}}/. The{{...}}picker inserts the reference alongside literal text.N8N_PROTOCOL: set to the literalhttps.


Set the sensitive values
openssl rand -hex 32:POSTGRES_PASSWORDon the postgres container.N8N_ENCRYPTION_KEYon the n8n container. n8n uses this to encrypt credentials it stores in the database.
Apply to deploy

Deploy using an Agent
To deploy with a coding agent such as Claude Code, Codex, or OpenCode, follow these steps:Connect the Suga MCP
Ask your agent to deploy
Set the sensitive values
openssl rand -hex 32:POSTGRES_PASSWORDon the postgres container.N8N_ENCRYPTION_KEYon the n8n container. n8n uses this to encrypt credentials it stores in the database.
Apply to deploy

What gets imported
Suga maps each field in your Compose file to its closest equivalent. Most fields import directly; a few aren’t needed on Suga, and a few need a small change.- Imported
- Handled for you
- Not imported
${VAR} placeholders are resolved: a variable shared between services imports as a cross-container reference, ${VAR:-default} defaults are applied, and names that look like secrets (passwords, keys, tokens) are marked Sensitive automatically.replicas sets the instance count (services with volumes stay at 1).FAQ
What if my Compose file uses a Dockerfile instead of a published image?
What if my Compose file uses a Dockerfile instead of a published image?
build: directive and no image are skipped on import. Add
a container for that service manually, then connect a build repository under
Image → Build from GitHub. Point it at the same source; Suga uses the
Dockerfile you specify or auto-detects the project. Every push to the watched
branch rebuilds and rolls the service forward.Do I need to keep the docker-compose.yml around after deploying?
Do I need to keep the docker-compose.yml around after deploying?
Can I still run docker compose up locally after deploying to Suga?
Can I still run docker compose up locally after deploying to Suga?
How do variables that reference other services work on Suga?
How do variables that reference other services work on Suga?
{{<container-id>.variables.KEY}}, where the container id is the short resource id Suga assigns at creation. Set the value on one container and reference it from others. Suga’s own system variables (like SUGA_PUBLIC_HOSTNAME) work the same way.What if my Compose file has bind mounts I actually need?
What if my Compose file has bind mounts I actually need?
Dockerfile layer or a build-repo commit. For persistent state, use a named volume in the Compose file instead of a bind mount, and Suga imports it as a managed volume.