Webhood is distributed as a set of Docker images hosted on the GitHub Container Registry. Upgrading your deployment means pulling the latest image tags and restarting the services — there is no installer or package manager to run. Database migrations are applied automatically by the PocketBase backend on startup, so schema changes are handled for you.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/webhood-io/webhood/llms.txt
Use this file to discover all available pages before exploring further.
Check the CHANGELOG for breaking changes
Open the Webhood CHANGELOG and read every entry between your current version and the target version. Pay particular attention to entries marked with ⚠️ — these indicate changes that require action on your part, such as updating
docker-compose.yml or renaming environment variables.For example, upgrading to v0.5.0 required removing the migrations volume from docker-compose.yml, and upgrading to v0.3.0 required renaming API_KEY to SCANNER_TOKEN in .env.Pull new images
In the directory containing your Docker pulls the latest version of all images defined in the compose file (
docker-compose.yml, run:core, backend, scanner, and kong). The currently running containers are not affected yet.Restart services
Bring the updated images online with a rolling restart:Docker stops each container and starts a replacement using the newly pulled image. The
--detach flag returns control to your shell immediately.Database migrations run automatically
The A healthy backend prints a line indicating it is serving on port
backend container runs the PocketBase binary, which applies any pending database migrations on startup. You do not need to run any migration commands manually. Watch the backend logs to confirm a clean start:8090. The scanner container waits for the backend health check to pass before connecting, so migrations finish before any new scans are accepted.Verify the deployment
Open your Webhood instance in a browser. Confirm that:
- The login page (or scan list) loads without errors.
- Existing scans are visible and their result pages open correctly.
- The version shown in the UI (if displayed) matches the new release.
All scan data — screenshots, HTML, traces, and the PocketBase database — is stored in the named Docker volume called
data (defined at the bottom of docker-compose.yml). This volume persists across docker compose up and docker compose pull cycles. Your data is not lost when you upgrade, as long as you do not explicitly delete the volume with docker volume rm.