Files
streambox-install/README.md
T

4.6 KiB

streambox-install

One-liner d'installation / mise à jour de streambox AIO. Dépôt public : il ne contient que le script et le docker-compose.yml, aucun secret (les configs vivent dans config/ sur la machine cible). Le code source reste dans hamriou/StreamBox, privé.

Installation

curl -fsSL https://git.hilel.fr/hamriou/streambox-install/raw/branch/main/install.sh | sudo bash

Sans registry : l'image doit déjà être présente sur la machine (docker load).

Depuis une archive

curl -fsSL .../install.sh | sudo bash -s -- --tar /tmp/streambox-aio-v49.tar --tag v49

--tar accepte aussi une URL.

Depuis une autre machine du LAN

curl -fsSL .../install.sh | sudo bash -s -- --from-ssh lab --tag v49

Équivalent à ssh lab 'sudo docker save streambox-aio:v49' | docker load, puis up -d. Aucun port entrant à ouvrir, aucune authentification registry.

Depuis un registry (option)

curl -fsSL .../install.sh | sudo bash -s -- --image git.hilel.fr/hamriou/streambox-aio:v48

Options

Option Rôle
--dir DIR répertoire d'installation (défaut ~/aio)
--tag TAG tag de l'image (défaut latest)
--tar FICHIER|URL charger l'image par docker load
--from-ssh HOST ssh HOST 'docker save …' | docker load
--image REPO:TAG docker pull puis tag local
--wait N attente max du health check (défaut 90 s)
--install-docker installer Docker automatiquement si absent, sans poser la question
--no-install-docker ne jamais installer Docker : quitte avec la commande à lancer
--dry-run affiche les actions sans rien modifier

Docker absent

Par défaut l'installeur pose la question :

  Docker n'est pas présent sur cette machine.

    1) Installer Docker automatiquement (script officiel get.docker.com)
    2) Quitter et installer Docker manuellement

  Choix [1/2] :

Le choix 1 lance curl -fsSL https://get.docker.com | sh puis revérifie le démon et le greffon compose ; le choix 2 quitte en affichant la commande.

Deux détails qui comptent :

  • la question est lue sur /dev/tty, pas sur stdin — avec curl … | bash, stdin contient le script et un read naïf consommerait ses octets ;
  • sans terminal interactif (cron, CI, ssh sans -t), l'installeur ne reste jamais bloqué : il sort avec la commande à lancer. Utilise alors --install-docker ou --no-install-docker pour trancher à l'avance.

Mise à jour

# sur la machine source
docker save streambox-aio:v50 | ssh vps 'sudo docker load'
# sur le VPS
curl -fsSL .../install.sh | sudo bash -s -- --tag v50

L'installeur sauvegarde le docker-compose.yml précédent en .bak.<date> s'il change, et ne touche jamais config/, data/ ni log/.

Adoption d'un conteneur existant

Si un conteneur streambox-aio tourne déjà mais a été créé par docker run (sans labels compose), docker compose up -d échouerait sur un conflit de nom. L'installeur le détecte, l'arrête et le renomme streambox-aio.avant-compose.<date> — il n'est pas supprimé. Il reste le rollback immédiat :

docker rm -f streambox-aio
docker rename streambox-aio.avant-compose.<date> streambox-aio
docker start streambox-aio

Un conteneur déjà géré par ce projet compose est simplement recréé.

Rollback

cd ~/aio && IMAGE_TAG=v49 docker compose up -d

L'image précédente doit être encore présente (docker image ls streambox-aio).

Vérification

Après démarrage : running + HTTP 200 sur http://<hôte>:3005/. En cas d'échec l'installeur sort en erreur avec la commande de logs à lancer.

Registries : lequel marche

Registry État Usage
git.hilel.fr (Gitea auto-hébergé sur le lab) fonctionne — Basic auth, push lab → pull VPS vérifiés --image git.hilel.fr/hamriou/streambox-aio:<tag>
git.les2ter.fr (Gitea YunoHost) inutilisable — SSOwat retire l'en-tête Authorization, Docker ne peut pas s'authentifier git seulement

Le registry git.les2ter.fr renvoie un jeton anonyme (UserID: -1) même avec des identifiants valides : docker login répond « Login Succeeded » puis le push échoue. Aucun réglage d'app.ini n'y change rien (ENABLE_BASIC_AUTHENTICATION est déjà à true) : c'est le SSO devant qui retire l'en-tête.

Le chemin par défaut de cet installeur reste sans registry (docker load depuis une archive ou depuis une autre machine) : il ne dépend d'aucun service d'authentification, et c'est le seul qui marche sur les deux instances.