This guide covers updating a Dograh stack you’ve already deployed with Docker or a custom domain. You run commands from the same directory that contains yourDocumentation Index
Fetch the complete documentation index at: https://docs.dograh.com/llms.txt
Use this file to discover all available pages before exploring further.
docker-compose.yaml (this is the dograh/ directory if you used setup_remote.sh).
There are three update flows depending on how you deployed:
- Remote, prebuilt mode (most users) — use
update_remote.shbelow. - Local Docker — pull images and restart; see Local deployment.
- Remote, build mode (you have a
docker-compose.override.yaml) — update via git; see Updating a source build.
Find an image version
Dograh publishes two images —dograh-api and dograh-ui — to both container registries:
- GitHub Container Registry — github.com/orgs/dograh-hq/packages
- Docker Hub — hub.docker.com/u/dograhai
update_remote.sh understands both and normalizes for you.
| Where | Tag format | Example | When to use |
|---|---|---|---|
| GitHub release tag | dograh-vX.Y.Z | dograh-v1.28.0 | What you see at github.com/dograh-hq/dograh/releases |
| Docker image tag (semver) | X.Y.Z | 1.28.0 | Stable, recommended for production |
| Docker image tag (SHA) | short SHA | a1b2c3d | Bleeding edge — any commit merged to main |
Docker image tag (latest) | latest | latest | Tracks the most recent release tag |
Remote, prebuilt mode (recommended)
update_remote.sh is the supported path for updating a stack created with setup_remote.sh. In one shot it:
- Asks for a target version (defaults to the latest release tag on GitHub).
- Pulls
docker-compose.yamlat that version and pins bothapianduiimages to it. - Refreshes the remote helper bundle (
remote_up.shplus shared templates/helpers). - Synchronizes the canonical remote keys in
.envand validates the runtime config thatdograh-initwill render from it. - Backs up every file it changes with a
.bak.<timestamp>suffix.
1.28.0), v-prefixed (v1.28.0), the full GitHub tag (dograh-v1.28.0), or main for bleeding edge — the script normalizes them. Non-interactive callers can set it via environment variable and skip the confirmation prompt:
The script overwrites
docker-compose.yaml and the remote helper bundle (remote_up.sh, scripts/run_dograh_init.sh, scripts/lib/setup_common.sh, and deploy/templates/*) from the shared upstream deployment bundle. If you’ve made local edits to any of these, check the .bak.<timestamp> files after the update and re-apply your edits.Local deployment
For local Docker installs (the Quick Start flow orsetup_local.sh / setup_local.ps1), there are no host-side config files to refresh — pull new images and restart:
latest, edit docker-compose.yaml and change both image: lines for api and ui to the same tag (e.g. :1.28.0 — Docker image tags use bare semver, no v prefix), then run the commands above.
Verify the update
Check the running image tags:Roll back
update_remote.sh saves backups of every file it touched. To roll back, restore them and recreate the stack — the exact commands (including the timestamp it used) are printed at the end of the script’s output. The generic form:
down/up cycles, so agents and call history are preserved.
Updating a source build
If you deployed in build mode (you’ll have adocker-compose.override.yaml in your install directory), update_remote.sh deliberately refuses to run — you already have the full repo locally and update via git:
docker-compose.yaml, remote_up.sh, scripts/run_dograh_init.sh, deploy/templates/*, or setup_remote.sh is up to you — resolve them as you would any other git merge. Leave OSS_JWT_SECRET and TURN_SECRET in .env unchanged across updates to preserve sessions and WebRTC auth.
The same migration warning above applies: rolling back across a schema change can leave the DB in a state the older API can’t read.