Compose
Web, API, and Postgres. Images are `gethamster/doso-api` and `gethamster/doso-web`, published on merge to `main`.
1curl -fsSL https://doso.sh/install | bashOr from a clone:
1./start.sh2# or: cd deploy/local && cp .env.example .env && docker compose upThe installer generates POSTGRES_PASSWORD and BETTER_AUTH_SECRET.
You do not edit .env unless you want different ports.
| Service | Port |
|---|---|
| web | 3000 |
| api | 8080 |
| Postgres | private to the compose network |
Change ports in .env (WEB_PORT, API_PORT) or copy
compose.override.example.yml to docker-compose.override.yml.
Open http://localhost:3000 and create the first account.
Desktop: Settings → Storage → Connect to server → http://127.0.0.1:3000.
To build the image from a local binary instead of pulling:
1./scripts/build-api.sh2docker compose -f docker-compose.yml -f compose.build.yml up --buildCI (.github/workflows/release-api.yml) runs on merge to main and on v*
tags. API and web build in parallel with cargo and BuildKit caches. Each run
uploads the linux binary and gzipped image tarballs as workflow artifacts and
a GitHub Release, pushes ghcr.io/asomervell/doso-api and
ghcr.io/asomervell/doso-web, and pushes gethamster/doso-api and
gethamster/doso-web when DOCKERHUB_TOKEN is set. DOCKERHUB_USERNAME is
the Docker ID that created the token, not the org.
This is the stack you run on any machine. Put your own reverse proxy in front
if you need HTTPS. Cloud recipes are in ../cloud.