Docker
The official Docker image runs the Server process. The example below binds the host port to loopback and mounts a named volume at /data; it is intended for local setup, not public exposure.
Before you run the container
Install Docker and choose a new volume name if you do not intend to reuse existing Stravia data. The image runs as UID/GID 65532, listens on 0.0.0.0:23471 inside the container, and uses /data for Server data. A bind-mounted host directory must be writable by the container user.
The Dockerfile does not declare a VOLUME; persistence here comes from the explicit runtime mount.
Create the data volume and start Server
Run this shell example on the Docker host:
docker volume create stravia-server-data
docker run --rm \
--publish 127.0.0.1:23471:23471 \
--mount source=stravia-server-data,target=/data \
ghcr.io/stravia-ai/straviaplatform:latest Use a different image tag only when it is an asset you intend to run. --rm removes the stopped container, not the named volume.
Complete first setup
Keep the container running, open http://127.0.0.1:23471/setup , and claim the token printed by the current container process. Test SQLite in /data or configure a supported PostgreSQL database, then create the sole Server administrator. Do not share the setup token.
Verify persistence and access
After setup, confirm the Server UI is reachable from the host at the loopback endpoint and that its API returns the expected result. The named volume remains after the container stops; start the next container with the same volume to reuse that data. Check a bind mount's filesystem ownership before startup.
Troubleshoot startup or persistence
If the container exits or setup is missing after a restart, inspect the container output, confirm the port is free, and verify the same named volume or writable bind mount is attached at /data. Do not create another volume until confirming whether the original data volume is still present.
Next steps
For a hosted container deployment, follow Reverse proxy , Databases , and Storage before changing the listener or port exposure.