VOD Docs

Operations overview

How production is run day to day, and where to look when something breaks.

This section is the runbook for the production backend: deploying, setting up a server, managing secrets, debugging and recovering from incidents. It describes procedures and commands; it never contains secret values.

Flow diagram · placeholder
Operations map: deploy → verify → monitor → debug → recover

One loop diagram linking each page in this section.

At a glance

ProviderHetzner Cloud, one VPS
Memory3.72 GiB RAM + 2 GB swap (recorded in infra/docker-compose.yml)
Repository on the server~/vod-app
Compose projectRun from ~/vod-app/infra with docker-compose.yml and prod.env
Public hostnameapi.vod.spokhrel.dev (Caddy, automatic HTTPS)
Frontend / docsVercel, deployed on push to main

All commands in this section are run on the server, from ~/vod-app/infra, unless stated otherwise. For brevity they use this alias:

alias dc='docker compose -f docker-compose.yml --env-file prod.env'

Always pass the env file

Without --env-file prod.env, Compose fills in values for PostgreSQL, Redis, MinIO and tusd from infra/.env or built-in defaults, and may recreate those containers with the wrong configuration.

Pages

Daily health check

dc ps                                            # every service Up
curl -s https://api.vod.spokhrel.dev/health/     # {"status":"Ok!"}
dc logs --since 24h worker | grep "\[queue\]"    # processing activity
df -h /                                          # disk headroom

On this page