Vaze
Getting Started

Installation

Run Vaze with Docker in minutes

All you need to run Vaze is Docker with the Compose plugin, installed on your server.

Quick install

One command sets up everything — it checks Docker, downloads compose.prod.yaml, generates your AUTH_SECRET into a .env, and starts the container:

curl -fsSL https://raw.githubusercontent.com/darseen/vaze/main/scripts/install.sh | sh

The only thing it asks for is the URL you'll open Vaze on, defaulting to this machine's LAN address. Pass it in to skip the prompt entirely:

curl -fsSL https://raw.githubusercontent.com/darseen/vaze/main/scripts/install.sh \
  | BASE_URL=https://files.example.com sh

It installs into ./vaze in the current directory and prints your URL once the container reports healthy. Nothing else to configure.

Prefer to read a script before piping it to a shell? Download it first, or follow the manual steps below.

Options

Flag / variableDefaultDescription
--dir=PATH./vazeWhere compose.prod.yaml and .env are written
--no-startWrite the config but don't start the container
BASE_URLdetected LAN addressThe URL you open Vaze on
VAZE_PORT3000Host port to publish
VAZE_BIND_ADDR0.0.0.0Host address to bind to
VAZE_VERSIONlatestImage tag to run

Environment variables go before sh, flags after it:

curl -fsSL .../install.sh | VAZE_PORT=8080 sh -s -- --dir=/opt/vaze

Upgrading

Re-run the installer from your install directory:

cd vaze
curl -fsSL https://raw.githubusercontent.com/darseen/vaze/main/scripts/install.sh | sh

It detects the existing install and upgrades in place: refreshes compose.prod.yaml (keeping a .bak of the old one), pulls the newer image, and recreates the container. It never overwrites a value already in your .env, and never touches the volume holding your uploads and database.

To pin a version instead of tracking latest, set VAZE_VERSION in your .env and re-run docker compose -f compose.prod.yaml up -d.

Docker Compose

Prefer to set it up yourself? Download compose.prod.yaml and put a .env next to it:

.env
AUTH_SECRET=generate-with-openssl-rand-base64-32
BASE_URL=http://your-server-ip-or-domain:3000
VAZE_PORT=3000
VAZE_VERSION=latest
docker compose -f compose.prod.yaml up -d

BASE_URL and AUTH_SECRET are the only required values — Compose refuses to start without them rather than booting a half-configured instance.

Docker run

Without Compose:

docker run -d \
  -p 3000:3000 \
  -v vaze_data:/app/data \
  -e BASE_URL="http://your-server-ip-or-domain:3000" \
  -e AUTH_SECRET="$(openssl rand -base64 32)" \
  --restart unless-stopped \
  --name vaze \
  darseen/vaze:latest
  • -p 3000:3000 maps port 3000 on your host to the container's port 3000.
  • -v vaze_data:/app/data keeps uploads and the database in a Docker volume, so they persist across container updates and removals.
  • BASE_URL and AUTH_SECRET configure the instance — see Configuration.

Managing your instance

Run these from your install directory:

docker compose -f compose.prod.yaml logs -f   # follow logs
docker compose -f compose.prod.yaml ps        # status and health
docker compose -f compose.prod.yaml restart   # restart
docker compose -f compose.prod.yaml down      # stop, keeping your data

docker compose -f compose.prod.yaml down -v also deletes the vaze_vaze_data volume — every uploaded file and account goes with it.

Deploy on Railway

Prefer the cloud? Vaze ships as a one-click Railway template.

Next steps

Once the container is running, open the URL the installer printed and continue with First Steps.

On this page