Administration native sur le Mac, réencodage sélectif et aide intégrée

- admin.sh : RTG lancé directement sur le Mac (plus de conteneur), nginx
  joint l'interface par host.docker.internal:8765 ; variante conteneur
  conservée (admin-docker.sh, docker-compose-conteneur.yml)
- Compression : réglages lus dans les fichiers (CRF, codec), refaire
  seulement le 1080p ou le 720p, seulement si les réglages ont changé ;
  réglages vidéo propres à chaque voyage ; « Compression actuelle » affichée
- Plus d'arrêt automatique après 2 h d'inactivité (--arret-inactif, 0 par défaut) ;
  arrêt propre qui attend la fin des encodages en cours
- Aide contextuelle dans l'interface (rtg/interface/aide) ; README centré
  sur l'installation et la mise en place
- Cœurs attribués au conteneur détectés (cgroup) et signalés

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-19 05:32:05 +00:00
1 parent b54ae69b19
commit ada3d76f50
38 files changed
+1067 -264

No files matched your search

+22
View File
@@ -0,0 +1,22 @@
# Accès et sécurité
L'interface permet de modifier le site et de parcourir les disques : elle est protégée.
## Deux façons d'entrer
- **La clé d'accès** : à chaque lancement de l'interface, une clé tirée au hasard est ajoutée à l'adresse ouverte dans le navigateur (`…/?jeton=…`) et affichée dans le Terminal ou le journal. Seul celui qui la voit peut entrer. Elle change à chaque lancement.
- **Le mot de passe** : défini dans le Terminal avec `rtg mot-de-passe` (10 caractères au moins). Indispensable depuis une autre machine ou depuis le site. `rtg mot-de-passe --tester` vérifie un mot de passe ; `--supprimer` l'efface.
Le mot de passe n'est enregistré nulle part en clair : seule une empreinte est gardée, hors du site, dans `~/.config/rtg/acces.toml`.
## Session
Une fois entré, le navigateur garde une session de 12 heures après la dernière action. Elle est perdue quand l'interface s'arrête. **Se déconnecter** la ferme tout de suite.
## Protections
- Après 5 mots de passe faux, l'adresse IP doit attendre une minute, puis deux, quatre… jusqu'à une heure.
- Le cookie de session n'est lisible que par l'interface, et n'est envoyé qu'en HTTPS quand le site l'est.
- Une autre page ouverte dans le navigateur ne peut rien modifier, et l'interface refuse d'être affichée dans un cadre.
Pour l'accès depuis le site, voir [Administration depuis le site](administration.md).
+41
View File
@@ -0,0 +1,41 @@
# Administration depuis le site
Le bouton **Connexion** de l'accueil mène à `https://roadtrips.ouaibe.fr/admin/`. Le serveur web y fait suivre les demandes vers l'interface RTG, qui tourne directement sur le Mac :
```
Traefik (HTTPS) → nginx (le site, dans Docker) → /admin/ → RTG sur le Mac
```
L'interface ne tourne que quand on en a besoin. Fermée, `/admin/` affiche « Administration fermée » et le site reste en ligne.
## Au quotidien
Dans le dossier du `docker-compose.yml` du site :
```
./admin.sh ouvrir l'administration
./admin.sh stop la fermer
```
Elle tourne en arrière-plan : inutile de garder le Terminal ouvert. Son journal est dans `rtg-admin.log`, à côté du script. Fermer pendant un encodage l'arrête proprement ; les vidéos finies sont gardées.
À la maison, devant le Mac, on peut aussi simplement taper `rtg interface` dans le Terminal : ce sont les mêmes écrans, sans passer par le site.
## Disques et vitesse
L'interface tourne sur le Mac : elle voit tous les disques branchés, comme n'importe quelle application, et encode à pleine vitesse (tous les cœurs performance, encodeur matériel possible dans les [Réglages du site](reglages.md)).
Un disque des sources débranché est signalé dans [Sources](sources.md) ; les vidéos déjà encodées restent en ligne.
## Avant d'éjecter un disque
- **Disque de sources** : attendre la fin de l'encodage en cours, ou fermer l'administration.
- **Clé du site** : nginx s'en sert en permanence ; `docker compose stop` d'abord, `docker compose up -d` une fois rebranchée.
## Après une mise à jour de RTG
`./admin.sh stop`, puis `./admin.sh`.
## Mise en place
L'installation (nginx, mot de passe, `admin.sh`) est décrite dans le README de RoadTripsGenerator, sur git, section « Administration depuis le site : mise en place ».
+22
View File
@@ -0,0 +1,22 @@
# Carte et corrections
Corriger à la souris ce que les fichiers d'origine ont de faux. Les corrections sont enregistrées aussitôt dans `voyage.toml` (ou `site.toml` pour une zone privée) et appliquées **à la prochaine génération** ; les fichiers d'origine ne changent pas.
## Photos et vidéos
- **Déplacer** : glisser le marqueur (rouge pour une photo, bleu pour une vidéo). Un marqueur cerclé d'orange a une position corrigée à la main ; sa bulle propose de revenir à la position d'origine.
- **Placer un média sans position** : cliquer son nom dans « Médias sans position », puis cliquer sur la carte. Échap annule.
- Le sélecteur **Jour** et les cases **Photos** / **Vidéos** filtrent l'affichage. Le fond **Satellite** (bouton des calques) aide à placer précisément.
## Zones masquées
Les points de trace situés dans une zone sont retirés des pages : autour de chez soi, ou sur une erreur du GPS.
1. **+ Masquer une zone**, puis cliquer au centre ; un nouveau clic déplace la zone.
2. Régler le **rayon**.
3. Cocher **Zone privée** pour la retirer de **tous les voyages** (elle est alors notée dans `site.toml`).
4. **Enregistrer la zone**.
Une zone se supprime depuis la liste, bouton **Supprimer**.
Après des corrections, régénérer le voyage ([Générer](generer.md)) ; pour une zone privée, régénérer les voyages concernés.
+49
View File
@@ -0,0 +1,49 @@
# Générer
Fabrique tout ce que le site affiche pour ce voyage, puis refait l'accueil.
## Les étapes
1. **Sources** : les traces sont réparties par jour, les photos copiées.
2. **Positions** : dates et positions GPS des photos et des vidéos (exiftool).
3. **Vidéos** : encodage des rushs.
4. **Photos** : versions allégées pour le web, et une image d'aperçu par vidéo.
5. **Pages** : cartes du voyage et de chaque jour.
6. **Accueil** : page d'accueil, rubriques, carte globale.
Ce qui est déjà à jour n'est pas refait. Le journal s'affiche en dessous. **Arrêter** interrompt proprement : les vidéos finies sont gardées.
## Compression des vidéos
Chaque rush donne deux vidéos :
- **1080p en HEVC (H.265)**, environ 40 % plus léger que du H.264 à qualité égale ;
- **720p en H.264**, chargée par défaut et lisible partout.
Le tableau **Compression des vidéos** montre, pour chaque version :
- **Vidéos actuelles** : les réglages relus dans les fichiers eux-mêmes (les encodeurs x265 et x264 y inscrivent leurs réglages, par exemple « HEVC CRF 26 »). **conforme** ou **différent** les compare aux prochains encodages. Pour un voyage de plus de 40 vidéos, un échantillon est lu.
- **Prochains encodages** : ce que donneraient les réglages actuels.
Le **CRF** règle la qualité : plus il est élevé, plus les fichiers sont légers et moins la qualité est bonne. Les qualités du site correspondent à : Économe 28 / 27, Équilibrée 26 / 25, Haute 23 / 22 (1080p / 720p).
## Réglages vidéo propres à ce voyage
Pour tester une compression sur un seul voyage, sans toucher au reste du site : qualité, vitesse de l'encodeur (plus lent = un peu plus léger à qualité égale), ou un **CRF précis** pour le 1080p et le 720p. Laisser vide pour suivre les réglages du site. Ces réglages sont notés dans `voyage.toml`, table `[video]`.
## Quelles vidéos encoder
- **Seulement celles qui manquent** (par défaut).
- **Aussi celles faites avec d'autres réglages** : RTG relit les réglages de chaque vidéo et ne refait que celles qui diffèrent. Relancé avec les mêmes réglages, il ne refait rien.
- **Tout réencoder**.
**Versions concernées** limite le travail au **1080p** ou au **720p** ; l'autre version est gardée telle quelle. Le journal affiche pour chaque vidéo la nouvelle taille et l'ancienne (« avant … »).
**Ne pas toucher aux vidéos** saute l'encodage (utile quand le disque des rushs n'est pas branché). **Refaire aussi les photos web et les pages** les refait même si elles sont à jour.
## Boutons
- **Générer le voyage** : toutes les étapes.
- **Encoder les vidéos seulement** : l'étape Vidéos seule, avec les choix ci-dessus.
Pour essayer un réglage sur Aisne, par exemple : réglages propres au voyage, puis « aussi celles faites avec d'autres réglages », « 1080p seulement » et « Encoder les vidéos seulement ».
+25
View File
@@ -0,0 +1,25 @@
# Prise en main
RTG fabrique un site web de road-trips : pour chaque voyage, une carte par jour avec la trace GPS, les photos, les vidéos et le récit. Le site produit est statique : de simples fichiers, servis tels quels par le serveur web.
## Les étapes, pour un nouveau voyage
1. **Mes voyages → Nouveau voyage** : un titre, un nom de dossier, une rubrique. Voir [Mes voyages](voyages.md).
2. **Onglet Sources** : indiquer où sont les traces GPS, les vidéos et les photos d'origine. Elles restent où elles sont. Voir [Sources](sources.md).
3. **Onglet Journées** : vérifier les jours et rattacher à un jour les traces qui n'ont pas d'heures. Voir [Journées](journees.md).
4. **Onglet Générer** : lancer la génération, qui encode les vidéos, prépare les photos et fabrique les pages. Voir [Générer](generer.md).
5. **Onglets Infos et récit, Carte et corrections** : écrire le récit, corriger une photo mal placée, masquer une portion de trace, puis régénérer. Voir [Infos et récit](infos.md) et [Carte et corrections](carte.md).
Les fichiers d'origine ne sont jamais modifiés. Tout ce que fait l'interface est noté dans deux fichiers texte, `site.toml` (réglages du site) et `voyage.toml` (un par voyage). L'installation, les commandes du Terminal et le détail de ces fichiers sont dans le README de RoadTripsGenerator, sur git.
## Toutes les pages d'aide
- [Mes voyages](voyages.md) — la liste, les pastilles, créer un voyage
- [Sources](sources.md) — où RTG trouve les fichiers d'origine
- [Journées](journees.md) — les jours du voyage, les traces sans heures
- [Carte et corrections](carte.md) — déplacer une photo, masquer une zone
- [Infos et récit](infos.md) — titre, moto, récit en Markdown
- [Générer](generer.md) — génération, compression des vidéos
- [Réglages du site](reglages.md)
- [Accès et sécurité](acces.md) — clé d'accès, mot de passe
- [Administration depuis le site](administration.md) — ouvrir, fermer, disques des sources
+27
View File
@@ -0,0 +1,27 @@
# Infos et récit
## Titre et moto
- **Titre** : le nom du voyage sur l'accueil, dans les listes et dans la légende de la carte globale.
- **Moto** : facultative ; affichée dans la légende de la carte globale, par exemple « Ete 2026 (BMW R 1300 GS Adventure) ».
La rubrique vient du dossier où le voyage est rangé (voir [Mes voyages](voyages.md)).
## Récit
Le récit est le fichier `voyage.md`, en Markdown, affiché dans un panneau à côté des cartes du voyage.
Deux liens spéciaux, qui marchent aussi bien en local qu'en ligne :
```
[Carte du jour](jour:2026-08-01)
[Le col](media:photos/IMG_4831.jpeg)
[La descente](media:videos/GH011272.mp4)
```
- `jour:AAAA-MM-JJ` ouvre la carte de ce jour ;
- `media:…` ouvre un média du voyage (chemin depuis le dossier du voyage).
Un lien vers un jour sans carte ou vers un média introuvable est signalé dans le journal de génération.
Enregistrer, puis régénérer le voyage pour mettre le site à jour ([Générer](generer.md)).
+19
View File
@@ -0,0 +1,19 @@
# Journées
Les jours du voyage d'après les traces GPS, avec leurs kilomètres, et la carte des traces (une couleur par jour).
## Traces à rattacher à un jour
Une trace **sans heures** (un itinéraire préparé, par exemple) et sans date AAAA-MM-JJ dans son nom ne peut pas être placée seule. Elle apparaît en pointillé sur la carte, dans un encadré jaune. Pour chacune :
- choisir la date puis **OK** ;
- ou accepter la **suggestion** (« Le 11 juin ? »). RTG propose le jour où des photos ou des vidéos ont été prises le long de la trace ;
- ou, pour plusieurs traces d'un coup, **Répartir** : un jour par trace, dans l'ordre des noms, à partir de la date choisie.
## Imposer un jour
Le détail « Les N fichiers de traces et leur jour » permet d'imposer un jour à n'importe quelle trace, même datée ; **Annuler** revient au jour déduit. Ce choix est noté dans `voyage.toml`, table `[dates_traces]`.
Les jours se changent à minuit, sauf avant l'heure réglée dans [Réglages du site](reglages.md) (4 h par défaut) : une étape finie à 1 h du matin reste sur la veille.
Les modifications sont prises en compte à la prochaine génération ([Générer](generer.md)).
+38
View File
@@ -0,0 +1,38 @@
# Réglages du site
Ils valent pour tous les voyages et sont enregistrés dans `site.toml`. Un voyage peut avoir ses propres réglages vidéo (onglet [Générer](generer.md)).
## Site
- **Titre** : affiché en haut de l'accueil.
- **Adresse publique** : l'adresse du site en ligne (par exemple `https://roadtrips.ouaibe.fr/`), pour les liens des fichiers KML.
- **Voyages récents par rubrique** : combien l'accueil en montre avant le lien « Tout voir ».
## Vidéos
- **Qualité** : Économe, Équilibrée (le réglage d'origine) ou Haute. Voir les valeurs de CRF dans [Générer](generer.md).
- **Encodeur** : **processeur** (x265 et x264, meilleure qualité à taille égale) ou **matériel** (VideoToolbox du Mac : bien plus rapide, fichiers plus gros ; indisponible dans le conteneur Docker).
- **Vitesse** : `medium` par défaut ; plus lent = un peu plus léger à qualité égale, mais plus long.
- **Vidéos encodées en parallèle** : 0 = automatique selon le nombre de cœurs.
## Photos
- **Plus grand côté** (1600 px par défaut) et **qualité JPEG** (80) des versions web. Le clic sur une photo ouvre l'original.
- **Placer les photos sans GPS d'après l'heure et la trace** : à 5 minutes près, quand la trace a des heures.
## Journées
- **Fuseau horaire** du voyage (Europe/Paris par défaut).
- **Heure de changement de jour** (4 h) : une étape finie avant cette heure reste sur la veille.
## Carte globale
Liens de cartes Google My Maps à reprendre, un par ligne. Leurs tracés sont récupérés une fois et ajoutés à la carte de l'accueil, sur fond OpenStreetMap.
## Administration depuis le site
Adresse de l'interface (par exemple `/admin/`). Si elle est remplie, l'accueil affiche un bouton « Connexion » vers cette adresse, après « Refaire l'accueil ». Voir [Administration depuis le site](administration.md).
## Système
Vérifie que Python, exiftool et ffmpeg (avec libx265 et libx264) sont installés, et l'espace libre sur le disque du site.
+24
View File
@@ -0,0 +1,24 @@
# Sources
Où se trouvent les fichiers d'origine du voyage : traces GPS, vidéos (rushs) et photos. Ils peuvent être sur n'importe quel disque, nommés n'importe comment, et ne sont **jamais modifiés**.
## Ajouter ou retirer une source
- **Choisir un dossier…** ouvre un explorateur : naviguer, puis **Choisir ce dossier**. Le nombre de fichiers reconnus s'affiche en bas.
- Ou coller un chemin (dossier ou fichier) puis **Ajouter**.
- **Retirer** enlève la source de la liste, sans rien effacer.
Un type de source peut en avoir plusieurs (par exemple deux dossiers de photos).
## Ce que RTG en fait
- **Traces GPS** : réparties par journée et recopiées dans `routes/AAAA-MM-JJ.gpx`. Le jour vient des heures de la trace, à défaut d'une date AAAA-MM-JJ dans le nom du fichier, à défaut du jour choisi dans [Journées](journees.md).
- **Photos** : copiées dans `photos/`. Les HEIC de l'iPhone sont converties en JPEG.
- **Vidéos** : lues directement pour l'encodage, sans copie.
## Pastilles
- **N fichiers** : la source est lue.
- **introuvable** ou **disque débranché ?** : le chemin n'existe pas, ou le disque n'est pas branché. Les vidéos déjà encodées restent en ligne ; seules les nouvelles attendent le disque.
Dans la variante où l'administration tourne dans un conteneur Docker, seuls les disques déclarés dans `admin-docker.sh` sont visibles.
+27
View File
@@ -0,0 +1,27 @@
# Mes voyages
La liste de tous les voyages du site, par rubrique, du plus récent au plus ancien.
## Rubriques
- Un voyage rangé **à la racine du site** fait partie de la rubrique **Voyages**. Ce sont aussi ceux de la carte globale de l'accueil.
- Un voyage rangé **dans un dossier** (par exemple `Balades/Aisne-06-2026`) fait partie d'une rubrique du nom de ce dossier.
## Les colonnes
| Colonne | Signification |
| --- | --- |
| Dates, Jours | d'après les traces GPS |
| Vidéos web | vidéos encodées / rushs trouvés. « sources absentes » : le disque des rushs n'est pas branché, les vidéos déjà encodées restent en ligne |
| Photos web | photos allégées pour le web / photos du voyage |
| Pages | **à jour**, **à refaire** (photos, vidéos ou récit plus récents que les pages) ou **jamais générées** |
| ⚠️ | points à vérifier (survoler pour les lire) : source introuvable, trace sans jour… |
Un clic sur le titre ouvre le voyage ; **Voir ↗** ouvre sa page sur le site.
## Boutons
- **Nouveau voyage** : un titre (affiché sur le site), un nom de dossier (dans l'adresse des pages : sans espaces ni accents, par exemple `Ete-2027`), la moto (facultative) et la rubrique. RTG crée le dossier et son `voyage.toml` ; il reste à indiquer les [Sources](sources.md).
- **Refaire l'accueil** : régénère la page d'accueil, les pages des rubriques et la carte globale, sans toucher aux voyages.
Le bandeau en haut à droite montre le traitement en cours ou le dernier terminé ; un clic ouvre son journal.