Nuvio self-host officiel — clone canonique du foyer (amont NuvioMedia/self-host, Apache-2.0)
  • PLpgSQL 33.2%
  • Shell 32.5%
  • JavaScript 29.4%
  • Python 2.5%
  • TypeScript 1.2%
  • Other 1.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
renovate-bot aea8f82496
All checks were successful
Validate / static (push) Successful in 34s
Validate / database-bootstrap (push) Successful in 9s
Validate / full-stack (push) Successful in 2m37s
Merge pull request 'Update supabase/realtime Docker tag to v2.144.4' (#216) from renovate/montees-mineures into main
2026-10-16 16:07:23 +02:00
.forge fix: chaque exécution publie ses propres ports, sinon deux piles se percutent 2026-09-08 11:50:21 +02:00
.github/workflows feat(FOXA-870): le socle nuvio_maison et la table de cote de episodes_diffuses 2026-09-12 22:00:52 +00:00
assets/avatars Avatars animes : le semeur prend aussi le WebP, et Kratos entre au depot 2026-09-08 09:55:12 +02:00
database L'appairage sans écran pour un appareil déjà connecté à la cabine (FOXA-1211) 2026-09-27 19:15:12 +00:00
deploiement Le guide de la TV en direct se rafraîchit seul chaque nuit (FOXA-2351) 2026-09-27 13:41:50 +00:00
docs Le guide de la TV en direct se rafraîchit seul chaque nuit (FOXA-2351) 2026-09-27 13:41:50 +00:00
locales nuvio : attendre l'API de stockage avant d'envoyer les avatars (FOXA-1848) 2026-09-23 20:07:00 +00:00
scripts deployer --verifier: nomme la base amont manquante avant tout déploiement (code 10) 2026-10-08 13:16:25 +02:00
tableau-de-bord FOXA-1277 : la cabine annonce pour la TV les défauts que la TV sert 2026-09-27 03:28:11 +00:00
tests L'appairage sans écran pour un appareil déjà connecté à la cabine (FOXA-1211) 2026-09-27 19:15:12 +00:00
volumes L'appairage sans écran pour un appareil déjà connecté à la cabine (FOXA-1211) 2026-09-27 19:15:12 +00:00
.env.example L'appairage sans écran pour un appareil déjà connecté à la cabine (FOXA-1211) 2026-09-27 19:15:12 +00:00
.gitattributes Initial commit 2026-08-12 22:40:38 +02:00
.gitignore Le tableau de bord se construit ici, en francais correct, et plus gros 2026-09-07 09:01:49 +02:00
.gitleaks.toml Initial commit 2026-08-12 22:40:38 +02:00
.gitleaksignore Il y a bien un .gitleaks.toml, et c'est lui qui écarte deux des quatre constats 2026-09-07 17:42:50 +02:00
compose.deploiement.yml fix(FOXA-1752) : kong et supavisor se recreent quand leur configuration bouge, et seulement alors 2026-09-21 12:32:04 +00:00
compose.external-proxy.yml Update montees mineures 2026-10-06 08:05:11 +02:00
compose.lan.yml Les mots techniques ne se traduisent plus, et Studio passe derrière son mot de passe 2026-09-06 11:12:30 +02:00
compose.local.yml Initial commit 2026-08-12 22:40:38 +02:00
compose.production.yml Update montees mineures 2026-10-06 08:05:11 +02:00
compose.yml Update supabase/realtime Docker tag to v2.144.4 2026-10-16 16:03:48 +02:00
LICENSE Initial commit 2026-08-12 22:40:38 +02:00
NOTICE Initial commit 2026-08-12 22:40:38 +02:00
nuvio nuvio : attendre l'API de stockage avant d'envoyer les avatars (FOXA-1848) 2026-09-23 20:07:00 +00:00
README.md Le déployeur refuse une instance à moitié migrée 2026-09-08 09:26:05 +02:00
renovate.json feat: les majeures Renovate fusionnent aussi, sur porte verte 2026-09-08 22:12:38 +02:00
SECURITY.md Traduction française de l'interface, garde qui la compte, déployeur 2026-09-06 09:03:38 +02:00

Auto-héberger Nuvio

Faites tourner Nuvio sur votre propre serveur avec Docker Compose. Le déploiement comprend le backend, le tableau de bord du compte, l'authentification, la synchronisation et le stockage.

Ce projet s'adresse à qui préfère garder son compte Nuvio, sa bibliothèque et ses données synchronisées sur une infrastructure qu'il contrôle. Le backend officiel hébergé par Nuvio est https://api.nuvio.tv. Les déploiements auto-hébergés sont prévus pour un usage personnel. Nous déconseillons de se connecter à des backends publics non officiels tenus par des tiers : Nuvio ne peut ni les vérifier ni les prendre en charge.

Langue de l'interface

La ligne de commande ./nuvio et son importateur de compte parlent français par défaut. Le catalogue de messages vit dans locales/ — une clé par ligne, un fichier par langue. Pour repasser en anglais le temps d'une commande :

NUVIO_LANG=en ./nuvio doctor

Un garde compte ce qui n'est pas traduit et refuse de conclure au jugé :

scripts/verifier-traduction.sh            # mesure et verdict
scripts/verifier-traduction.sh --epreuve  # fabrique des pannes et exige qu'il les voie

⚠ Le tableau de bord web est traduit ICI, mais pas depuis ses sources. L'amont le livre sous forme d'image déjà construite (ghcr.io/nuviomedia/nuvio-account-dashboard), depuis un dépôt privé — et l'image n'embarque aucun mécanisme de langue. Nous partons donc de son image et remplaçons les chaînes dans le rendu compilé : voir tableau-de-bord/, son Dockerfile et franciser.mjs.

L'image de base est archivée sur disque (tableau-de-bord/amont/) et la construction se fait sur le poste de travail, sans réseau — si l'amont retire son image, on reconstruit quand même. Le pourquoi, les mesures qui établissent que la source n'est pas récupérable, et la procédure de restauration : tableau-de-bord/amont/LISEZMOI.md.

Déploiement

Le déploiement recommandé utilise HTTPS avec un domaine. Chaque client dispose alors d'une seule URL de backend stable, avec un certificat auquel les navigateurs, les téléphones et les téléviseurs font confiance.

Prérequis

  • Un serveur Linux 64 bits (amd64 ou arm64)
  • Docker Engine avec Docker Compose v2
  • Git, OpenSSL et curl
  • Un domaine ou un sous-domaine pointant vers le serveur
  • Les ports TCP 80 et 443 libres pour le Caddy fourni, ou un reverse proxy HTTPS déjà en place

Créez un enregistrement A ou AAAA du genre backend.exemple.fr, puis :

git clone http://192.168.1.70:3000/foXaCe/self-host
cd self-host
./nuvio setup --domain backend.exemple.fr
./nuvio up
./nuvio credentials

Une fois Nuvio démarré, ouvrez https://backend.exemple.fr pour le tableau de bord du compte. Saisissez la même adresse comme URL de backend dans les clients Nuvio. Caddy gère HTTPS et aiguille les requêtes du tableau de bord et de l'API vers les bons services.

Les clients compatibles utilisent le point de découverte https://backend.exemple.fr/.well-known/nuvio. Voir Connecter les applications Nuvio.

Reverse proxy déjà en place

Si Nginx, Caddy, Traefik ou un panneau d'hébergement occupe déjà les ports 80 et 443, faites tourner Nuvio derrière ce proxy :

./nuvio setup --domain backend.exemple.fr --proxy external
./nuvio up

Faites pointer le proxy sur http://127.0.0.1:8080, puis lancez ./nuvio doctor. Dans ce mode, c'est le proxy en place qui gère les certificats TLS. Voir Utiliser un reverse proxy existant pour des exemples de configuration et pour faire tourner Traefik dans Docker.

Installation locale

Le mode local sert aux essais sur le serveur lui-même ou à travers un tunnel SSH :

git clone http://192.168.1.70:3000/foXaCe/self-host
cd self-host
./nuvio setup
./nuvio up
./nuvio credentials

Le tableau de bord répond alors sur http://localhost:3000 et le backend sur http://localhost:8000. Les deux n'écoutent que sur la boucle locale du serveur.

Déployer sur le LXC du foyer

scripts/deployer.sh déploie ce dépôt sur le LXC 129. Il traite les cas d'échec d'abord, il est rejouable, et il prouve par le SERVICE — jamais par le contenu d'un dossier :

scripts/deployer.sh --verifier            # lecture seule, n'écrit rien
scripts/deployer.sh --verifier-migrations # le seul contrôle du schéma
scripts/deployer.sh --agent <nom-de-passe>

Le contrôle du schéma compte les migrations appliquées et les compare aux fichiers du dépôt : il sort en erreur (code 8) et nomme celles qui manquent. Il se rejoue à la demande sur une instance déjà en place, sans rien y écrire.

Guides

Licence

Sous licence Apache 2.0. Voir LICENSE et NOTICE — les textes juridiques font foi en anglais et ne sont pas traduits.