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.
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:
Do not copy the database files while the container is writing to them.