134 lines
4.6 KiB
Markdown
134 lines
4.6 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.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
|
|
|
|
```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.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
|
|
|
|
```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.
|
|
|
|
## 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.
|