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 — aveccurl … | bash, stdin contient le script et unreadnaïf consommerait ses octets ; - sans terminal interactif (cron, CI,
sshsans-t), l'installeur ne reste jamais bloqué : il sort avec la commande à lancer. Utilise alors--install-dockerou--no-install-dockerpour 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.