Skip to content

Installation

One command. A whiptail TUI writes a Docker Compose project in ./viewdock under the current directory (~/viewdock from your home directory). Docker publishes port 8080. Optional Cloudflare Tunnel is the public URL. Do not apt install docker.

sudo bash -c "$(curl -fsSL https://raw.githubusercontent.com/Skila1/ViewDock/main/install.sh)"

The wizard does not ask for an install path or a media folder. Run it from the directory that should contain viewdock. If that folder is already named viewdock, it installs in place. Cloudflared, if enabled, is a systemd service. It does not ask for an IP, a public URL, or Discord credentials.

Open http://<host>:8080 (or your tunnel) and create the first local administrator. After ViewDock is listening it prints an 8-character setup token in the console and in docker compose logs (ViewDock setup token:). Set the public URL in .env or Admin → Settings. Upload videos under Admin → Uploads (10 GB max). Configure Discord and TMDB in Admin.

cd ~/viewdock
docker compose ps
docker compose logs -f
docker compose down
docker compose pull && docker compose up -d

Unattended:

sudo env VD_UNATTENDED=1 bash -c "$(curl -fsSL https://raw.githubusercontent.com/Skila1/ViewDock/main/install.sh)"

Optional helper: sudo viewdock status|update|logs|doctor|uninstall (same directory).

Re-running the installer or sudo viewdock update on an existing folder does not overwrite .env values or a compose file that already has the GPU profiles. It adds missing keys (VD_GPU, COMPOSE_PROFILES, …), folds old docker-compose.gpu.yml / COMPOSE_FILE overlays into VD_GPU=true, and only rewrites compose when it is still the old single-service layout.

sudo viewdock update (or sudo bash install.sh update) pulls the latest image and recreates the container. SQLite in ./config and files in ./media are bind-mounted and are not deleted. App schema migrations run on startup. Uninstall without --purge also leaves ./config in place.

To reach ViewDock from the internet, give it a hostname such as viewdock.example.com behind your own reverse proxy or Cloudflare Tunnel (not included in Compose).

Backup

ViewDock makes scheduled online backups of its database and settings; see Backups and restore. For a full cold copy of the config directory, stop the stack first:

docker compose stop
cp -a ./config ./config-backup
docker compose start

Do not copy the database files while the container is writing to them.

From source

cd web && npm install && npm run build && cd ..
go run ./cmd/viewdock