Velm runs as a single Go web service backed by PostgreSQL.
- Start PostgreSQL and Velm together:
DATABASE_PASSWORD=change-me \
BOOTSTRAP_USER_EMAIL=admin@example.com \
BOOTSTRAP_USER_PASSWORD=change-this-now \
docker compose up --build-
Open
http://localhost:3000. -
Sign in with the bootstrap user you supplied.
- Set a PostgreSQL connection string in
DATABASE_URL. - Set
BOOTSTRAP_USER_EMAILandBOOTSTRAP_USER_PASSWORDfor the first run. - Start the server:
go build -o velm ./cmd/server
./velmFor first startup on a public or production-style deployment, set all of:
APP_ENV=productionDATABASE_URLBOOTSTRAP_USER_EMAILBOOTSTRAP_USER_PASSWORDorBOOTSTRAP_USER_PASSWORD_FILESESSION_AUTH_KEYSESSION_ENCRYPTION_KEY
SESSION_AUTH_KEY and SESSION_ENCRYPTION_KEY must be base64-encoded 32-byte values.
The service exposes health endpoints at /health and /healthz.
The repository includes railway.json with a Dockerfile builder, healthcheck path, and restart policy.
When creating a Railway template, add a PostgreSQL service and wire its DATABASE_URL into the app service. Require BOOTSTRAP_USER_EMAIL, and generate the password and session keys as template secrets.