Deployment
One instance: **web + API + Postgres**. Desktop is a surface that talks to it. A single user still signs in.
| How | Where |
|---|---|
| Compose | deploy/local — ./start.sh |
| Cloud | deploy/cloud — same three services |
| Orgs | deploy/saas — overlay on that compose |
Ports are 3000 (web) and 8080 (API). Postgres stays on the compose
network. Override ports in .env or docker-compose.override.yml. Images
are gethamster/doso-api and gethamster/doso-web, built on merge to
main.
Compose#
1curl -fsSL https://doso.sh/install | bash2# or, from a clone: ./start.shOpen http://localhost:3000 and create the first account.
Desktop: Settings → Storage → Connect to server → http://127.0.0.1:3000.
Need HTTPS? Put your own proxy in front, or use a cloud recipe. Do not run a separate Doso “VPS” stack.
Cloud#
Same three services. The platform terminates TLS. Recipes:
deploy/cloud/.
Orgs#
deploy/saas adds tenant-runtime on top of the compose
file. Identity stays Better Auth.
Auth#
Compose and cloud both use Better Auth + JWKS. DOSO_AUTH_MODE=local is only
for crate tests and the Desktop embedded fallback.