Skip to content
BelowVR Docs

Deploy your own BelowVR instance

Install BelowVR on a Docker host, create the administrator, and add HTTPS.

45–90 minutes · Technical tutorial · 6 steps

Before you start

  • A Linux host with Docker Engine and Docker Compose v2.
  • The reviewed BelowVR source release.
  • A domain pointing at the host if the service will be public.

Copy the configuration

Clone or unpack the reviewed release, enter the repository, and create the local environment file.

cp .env.example .env
./scripts/init_docker_secrets.sh
docker compose config

Set the hostname

Edit .env. For local testing, keep localhost and port 8080. For a public server, replace belowvr.example with the real domain in BELOWVR_DOMAIN, ALLOWED_HOSTS and CSRF_TRUSTED_ORIGINS, then set secure redirect to true.

BELOWVR_DOMAIN=belowvr.example
ALLOWED_HOSTS=belowvr.example
CSRF_TRUSTED_ORIGINS=https://belowvr.example
BELOWVR_SECURE_SSL_REDIRECT=true

Start the services

Build and start the application, database, Redis, workers, optimiser and proxy.

docker compose up -d --build
docker compose ps
curl --fail http://127.0.0.1:8080/healthz/

Continue when: Every service is running and the health request succeeds.

Create the administrator

Create the first account inside the web container, then open http://127.0.0.1:8080 and sign in.

docker compose exec web python manage.py createsuperuser

Enable public HTTPS

After DNS points to the host and .env contains the real domain, start the production profile. Caddy obtains and renews the certificate.

docker compose --profile production up -d --build

Test and maintain it

Test login, a two-device room, WebSockets, a protected model, upload, optimisation and the Monitor. Back up PostgreSQL and uploaded media off-host. For updates, deploy one reviewed commit or image, run the same Compose command, and recheck the health endpoint and room sync.

Sources and further guidance