Skip to main content

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.

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.
Always read the CHANGELOG before upgrading, especially when the major version number changes. Some releases include breaking changes to docker-compose.yml or environment variables that require manual steps before or after pulling the new images. Skipping this step may leave your deployment in a broken state.
1

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.
2

Pull new images

In the directory containing your docker-compose.yml, run:
docker compose pull
Docker pulls the latest version of all images defined in the compose file (core, backend, scanner, and kong). The currently running containers are not affected yet.
3

Restart services

Bring the updated images online with a rolling restart:
docker compose up -d
Docker stops each container and starts a replacement using the newly pulled image. The --detach flag returns control to your shell immediately.
4

Database migrations run automatically

The 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:
docker compose logs -f backend
A healthy backend prints a line indicating it is serving on port 8090. The scanner container waits for the backend health check to pass before connecting, so migrations finish before any new scans are accepted.
5

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.
Submit a test scan to verify the scanner is picking up work normally.
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.
Before a major version upgrade, consider taking a snapshot of the data volume as a precaution:
docker run --rm \
  -v webhood_data:/data \
  -v $(pwd):/backup \
  ubuntu \
  tar czf /backup/webhood-backup.tar.gz /data
This creates a compressed archive of the entire PocketBase data directory in your current working directory. To restore, reverse the tar command and point it at the same volume.

Build docs developers (and LLMs) love