Files
streambox-install/README.md
T

100 lines
3.1 KiB
Markdown

# 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.<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 :
```bash
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
```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://<hôte>: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.