Docker : montages limités (site, rushs en lecture seule, mot de passe) et admin.sh

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Mf2kATMtqVABHSYdxJMnim
This commit is contained in:
FabriceandClaude Opus 5.5 committed 2026-10-10 08:29:17 +00:00
1 parent b29a066b36
commit ff7e13ad28
3 files changed
+31 -8

No files matched your search

+3 -3
View File
@@ -186,13 +186,13 @@ Pour administrer le site depuis son adresse publique (bouton « Connexion » en
Plutôt que de laisser `rtg interface` ouvert dans un Terminal, on peut le faire tourner dans un conteneur, à côté du nginx du site. Le `Dockerfile` est à la racine de RoadTripsGenerator (Python, ffmpeg, exiftool). Plutôt que de laisser `rtg interface` ouvert dans un Terminal, on peut le faire tourner dans un conteneur, à côté du nginx du site. Le `Dockerfile` est à la racine de RoadTripsGenerator (Python, ffmpeg, exiftool).
1. Définir le mot de passe sur le Mac, une fois : `rtg mot-de-passe`. Le conteneur lit le même fichier. 1. Définir le mot de passe sur le Mac, une fois : `rtg mot-de-passe`. Le conteneur lit le même fichier.
2. Dans Docker Desktop, partager `/Volumes` (Réglages → Resources → File sharing → « + »), sinon le conteneur ne peut pas lire les disques externes. Ajouter le service `rtg` au `docker-compose.yml` du site : voir `exemples/docker-compose.yml`. Le conteneur voit `/Volumes` aux mêmes chemins que le Mac : la clé, le disque des rushs… Les sources notées dans les `voyage.toml` restent donc valables. 2. Ajouter le service `rtg` au `docker-compose.yml` du site (voir `exemples/docker-compose.yml`) et copier `exemples/admin.sh` à côté. Le conteneur ne voit que le dossier du site (lecture et écriture), le dossier des rushs (lecture seule) et le mot de passe (lecture seule), aux mêmes chemins que sur le Mac : les sources notées dans les `voyage.toml` restent valables. Dans Docker Desktop (Réglages → Resources → File sharing), seuls ces deux dossiers doivent être partagés, pas tout `/Volumes`.
3. Dans `nginx.conf`, faire pointer `/admin/` vers ce conteneur : voir `exemples/nginx-admin.conf`. Le site reste en ligne même si le conteneur RTG est arrêté. 3. Dans `nginx.conf`, faire pointer `/admin/` vers ce conteneur : voir `exemples/nginx-admin.conf`. Le site reste en ligne même si le conteneur RTG est arrêté.
4. `docker compose build rtg`, puis `docker compose up -d` (le site ; l'administration ne démarre pas avec lui). 4. `docker compose build rtg`, puis `docker compose up -d` (le site ; l'administration ne démarre pas avec lui).
L'administration est **à la demande** : `docker compose up -d rtg` l'ouvre, `docker compose stop rtg` la ferme, et elle se ferme d'elle-même après 2 heures sans activité (variable `RTG_ARRET_INACTIF`, en minutes). Fermée, `/admin/` affiche « Administration fermée » et le site reste en ligne. L'administration est **à la demande** : `./admin.sh` l'ouvre (avec les rushs si leur disque est branché, sans eux sinon), `./admin.sh stop` la ferme, et elle se ferme d'elle-même après 2 heures sans activité (variable `RTG_ARRET_INACTIF`, en minutes). Fermée, `/admin/` affiche « Administration fermée » et le site reste en ligne.
Après une mise à jour de RTG : `docker compose build rtg`. Un disque branché après le démarrage du conteneur peut demander `docker compose restart rtg`. L'encodage utilise les processeurs attribués à Docker (réglages de Docker Desktop, « Resources ») ; l'encodeur matériel VideoToolbox du Mac n'est pas disponible dans le conteneur. Après une mise à jour de RTG : `docker compose build rtg`. Disque des rushs branché après l'ouverture : relancer `./admin.sh`. L'encodage utilise les processeurs attribués à Docker (réglages de Docker Desktop, « Resources ») ; l'encodeur matériel VideoToolbox du Mac n'est pas disponible dans le conteneur.
Le bouton n'est qu'un lien : la protection est celle de l'interface (mot de passe, blocage après plusieurs essais faux, cookie de session limité à `/admin/`, envoyé seulement en HTTPS). Le bouton n'est qu'un lien : la protection est celle de l'interface (mot de passe, blocage après plusieurs essais faux, cookie de session limité à `/admin/`, envoyé seulement en HTTPS).
+22
View File
@@ -0,0 +1,22 @@
#!/bin/sh
# Ouvre ou ferme l'administration RTG du site.
# ./admin.sh ouvrir (avec les rushs si le LaCie est branché)
# ./admin.sh stop fermer
# À placer à côté du docker-compose.yml du site.
cd "$(dirname "$0")" || exit 1
GOPRO=/Volumes/LaCie/Perso/Gopro
if [ "$1" = "stop" ]; then
docker compose stop rtg && echo "Administration fermée."
exit
fi
if [ -d "$GOPRO" ]; then
export RUSHS="$GOPRO"
echo "Rushs : $GOPRO (lecture seule)"
else
echo "LaCie débranché : administration sans les rushs (pas d'encodage vidéo)."
fi
# --force-recreate : le conteneur suit l'état du LaCie à chaque ouverture.
docker compose up -d --force-recreate rtg \
&& echo "Administration ouverte : https://roadtrips.ouaibe.fr/admin/ (se ferme seule après 2 h sans activité)"
+6 -5
View File
@@ -16,7 +16,7 @@ services:
- traefik.http.routers.ouaibe_roadtrip.entrypoints=websecure - traefik.http.routers.ouaibe_roadtrip.entrypoints=websecure
# Administration à la demande : elle ne démarre pas avec le reste. # Administration à la demande : elle ne démarre pas avec le reste.
# ouvrir : docker compose up -d rtg fermer : docker compose stop rtg # ouvrir : ./admin.sh fermer : ./admin.sh stop
# Elle se ferme d'elle-même après 2 h sans activité (RTG_ARRET_INACTIF, en minutes). # Elle se ferme d'elle-même après 2 h sans activité (RTG_ARRET_INACTIF, en minutes).
rtg: rtg:
build: /Volumes/CLEROADTRIPS/RoadTripsGenerator build: /Volumes/CLEROADTRIPS/RoadTripsGenerator
@@ -24,11 +24,12 @@ services:
restart: "no" restart: "no"
networks: networks:
- ouaibe_network - ouaibe_network
# Seulement ce dont RTG a besoin, aux mêmes chemins que sur le Mac (les
# sources notées dans les voyage.toml restent valables) :
volumes: volumes:
# La clé, le LaCie… aux mêmes chemins que sur le Mac. Docker Desktop doit - /Volumes/CLEROADTRIPS/Road-Trips:/Volumes/CLEROADTRIPS/Road-Trips # le site (lecture et écriture)
# partager /Volumes : Réglages → Resources → File sharing → « + » → /Volumes. - ${RUSHS:-./sans-rushs}:/Volumes/LaCie/Perso/Gopro:ro # les rushs (lecture seule), voir admin.sh
- /Volumes:/Volumes - ${HOME}/.config/rtg:/config/rtg:ro # le mot de passe (rtg mot-de-passe)
- ${HOME}/.config/rtg:/config/rtg # le mot de passe défini avec « rtg mot-de-passe »
networks: networks:
ouaibe_network: ouaibe_network: