Run Nuvio on your own server with Docker Compose. The deployment includes the backend, account dashboard, authentication, sync, and storage services.
This project is for users who prefer to keep their Nuvio account, library, and
synced data on infrastructure they control. The official Nuvio-hosted backend
is https://api.nuvio.tv. Self-hosted deployments are intended for personal
use. We do not recommend connecting to unofficial public backends operated by
third parties, as Nuvio cannot verify or support those services.
The recommended deployment uses HTTPS with a domain. Each client then has one stable Backend URL, with a certificate trusted by browsers, phones, and TVs.
- A 64-bit Linux server (
amd64orarm64) - Docker Engine with Docker Compose v2
- Git, OpenSSL, and curl
- A domain or subdomain pointed at the server
- TCP ports
80and443available for bundled Caddy, or an existing HTTPS reverse proxy
Create an A or AAAA record such as backend.example.com, then run:
git clone https://github.com/NuvioMedia/self-host
cd self-host
./nuvio setup --domain backend.example.com
./nuvio up
./nuvio credentialsOnce Nuvio starts, open https://backend.example.com for the account
dashboard. Enter that same address as the Backend URL in Nuvio clients. Caddy
handles HTTPS and sends dashboard and API requests to the correct services.
Supported clients can use the discovery endpoint at
https://backend.example.com/.well-known/nuvio. See
Connect Nuvio apps for details.
If Nginx, Caddy, Traefik, or a hosting panel already uses ports 80 and 443,
run Nuvio behind that proxy:
./nuvio setup --domain backend.example.com --proxy external
./nuvio upPoint the proxy at http://127.0.0.1:8080, then run ./nuvio doctor. In this
mode, the existing proxy manages the HTTPS certificates. See
Use an existing reverse proxy for example
configurations and instructions for running Traefik in Docker.
Use local mode for testing on the server itself or through an SSH tunnel:
git clone https://github.com/NuvioMedia/self-host
cd self-host
./nuvio setup
./nuvio up
./nuvio credentialsThe dashboard is available at http://localhost:3000, and the backend is at
http://localhost:8000. Both listen only on the server's localhost interface.
Licensed under the Apache License 2.0. See LICENSE and NOTICE.