# 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 ```bash curl -fsSL https://git.les2ter.fr/gitea/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 ```bash 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 ```bash 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) ```bash curl -fsSL .../install.sh | sudo bash -s -- --image git.les2ter.fr/hamriou/streambox-aio:v49 ``` ## 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) | | `--dry-run` | affiche les actions sans rien modifier | ## Mise à jour ```bash # 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.` 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.` — il n'est pas supprimé. Il reste le rollback immédiat : ```bash docker rm -f streambox-aio docker rename streambox-aio.avant-compose. streambox-aio docker start streambox-aio ``` Un conteneur déjà géré par ce projet compose est simplement recréé. ## Rollback ```bash 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://:3005/`. En cas d'échec l'installeur sort en erreur avec la commande de logs à lancer. ## Pourquoi pas le registry Gitea Le registry de cette instance (`git.les2ter.fr`) refuse les jetons authentifiés : `/v2/token` renvoie un JWT `UserID: -1` avec un `Scope` vide, car `ENABLE_BASIC_AUTHENTICATION = false` (instance YunoHost en SSO). Docker n'obtient un token registry que par HTTP Basic → « Login Succeeded » puis `unauthorized`. `docker save | docker load` contourne le problème sans toucher à `app.ini` ni affaiblir le SSO.