diff --git a/docs/_build/html/.doctrees/environment.pickle b/docs/_build/html/.doctrees/environment.pickle index 157c960..1451346 100644 Binary files a/docs/_build/html/.doctrees/environment.pickle and b/docs/_build/html/.doctrees/environment.pickle differ diff --git a/docs/_build/html/.doctrees/infrastructure.doctree b/docs/_build/html/.doctrees/infrastructure.doctree index 949bede..90677b7 100644 Binary files a/docs/_build/html/.doctrees/infrastructure.doctree and b/docs/_build/html/.doctrees/infrastructure.doctree differ diff --git a/docs/_build/html/_sources/infrastructure.rst.txt b/docs/_build/html/_sources/infrastructure.rst.txt index 2e3cc58..ea9738d 100644 --- a/docs/_build/html/_sources/infrastructure.rst.txt +++ b/docs/_build/html/_sources/infrastructure.rst.txt @@ -6,49 +6,68 @@ Réseau LAN — 192.168.0.0/24 .. code-block:: text - ┌─────────────────────────────────────────────────────────┐ - │ LAN 192.168.0.0/24 │ - │ │ - │ .82 CORE Dispatcher (systemd) + FastAPI :3849 │ - │ Gitea + Grafana + InfluxDB + Caddy │ - │ │ - │ .84 ml-stack GPU worker RTX 3090 24GB │ - │ .87 gpu GPU worker RTX 3060 12GB │ - │ │ - │ .168 z620 Proxmox host HP Z620 │ - │ SSD → /mnt/portablessd (MP4 bruts) │ - └─────────────────────────────────────────────────────────┘ + ┌───────────────────────────────────────────────────────────────┐ + │ LAN 192.168.0.0/24 │ + │ │ + │ .82 CORE Gitea + Grafana + InfluxDB + Caddy │ + │ Reverse-proxy → cosma-vm pour /cosma-qc │ + │ │ + │ .83 cosma-vm Dispatcher cosma-qc (systemd) │ + │ Dashboard FastAPI :3849 │ + │ OpenVPN server :1194 UDP │ + │ │ + │ .84 ml-stack GPU worker RTX 3090 24GB │ + │ .87 gpu GPU worker RTX 3060 12GB │ + │ │ + │ .168 z620 Proxmox host HP Z620 — SSD MP4 bruts │ + │ .101 poxML Proxmox hyperviseur — héberge cosma-vm (VM 202)│ + └───────────────────────────────────────────────────────────────┘ -Nœud core (.82) ----------------- +Nœud cosma-vm (.83) — serveur principal cosma-qc +-------------------------------------------------- -**Rôle :** orchestrateur central du pipeline. +VM #202 sur Proxmox poxML (.101). 4 vCPU, 4 GB RAM, 40 GB SSD. +User : ``cosma`` (avec docker group et sudo). -Services actifs : +Services : -- **Dispatcher** — service systemd cosma-qc-dispatcher. - Boucle principale qui dispatch les jobs aux workers GPU. +- **Dispatcher** — ``cosma-qc-dispatcher.service`` (systemd) + Lance les extractions ffmpeg sur les workers GPU. -- **Dashboard FastAPI** — conteneur Docker exposé sur le port **3849**. - Interface web de monitoring des jobs. +- **Dashboard FastAPI** — conteneur Docker ``cosma-qc-app``, port **3849**. + Accès via Caddy sur core : ``http://192.168.0.82/cosma-qc`` -- **Gitea** — dépôt source floppyrj45/cosma-qc. - -- **Grafana / InfluxDB** — monitoring infrastructure. +- **OpenVPN** — ``openvpn-server@cosma.service``, port 1194 UDP. + Permet aux collègues daccéder au LAN depuis lextérieur. Commandes utiles : .. code-block:: bash + # SSH vers cosma-vm + ssh cosma@192.168.0.83 + # Statut dispatcher sudo systemctl status cosma-qc-dispatcher - # Logs dispatcher temps réel - sudo journalctl -u cosma-qc-dispatcher -f + # Logs dispatcher + tail -f /home/cosma/cosma-qc-data/dispatcher.log - # Dashboard - http://192.168.0.82:3849 + # Dashboard local + http://192.168.0.83:3849 + + +Nœud core (.82) +---------------- + +**Rôle :** routeur et services communs. + +Services actifs : + +- **Caddy** — reverse proxy HTTPS, route ``/cosma-qc`` vers .83:3849. +- **Gitea** — dépôt source ``floppyrj45/cosma-qc``. +- **Grafana / InfluxDB** — monitoring infrastructure. Nœuds GPU workers (.84 et .87) @@ -59,7 +78,7 @@ Nœuds GPU workers (.84 et .87) :widths: 15 25 20 40 * - IP - - Nom + - Nom SSH - GPU - VRAM * - .84 @@ -71,83 +90,46 @@ Nœuds GPU workers (.84 et .87) - RTX 3060 - 12 GB -**Rôle :** exécution de ffmpeg (extraction frames) et lingbot-map (reconstruction 3D). - -Répertoire de travail sur chaque worker : +**Rôle :** exécution de ffmpeg et lingbot-map. .. code-block:: text /cosma-qc-frames/ - ├── job_1/ - │ ├── frame_000001.jpg … frame_NNNNNN.jpg - │ ├── .video_0.done - │ ├── reconstruction.ply - │ └── reconstruction.glb (généré à la demande) - ├── job_2/ - │ └── … - └── stitch_1.ply + └── job_N/ + ├── frame_NNNNNN.jpg + ├── .video_V.done + ├── reconstruction.ply + └── reconstruction.glb -Nœud z620 (.168) ------------------ +Nœud z620 (.168) — stockage MP4 +---------------------------------- -**Rôle :** stockage des MP4 bruts GoPro. +HP Z620 (Proxmox). SSD /mnt/portablessd avec les MP4 GoPro bruts. +Les MP4 **ne quittent jamais** z620 — ffmpeg sy exécute via SSH-relay. -- Proxmox host HP Z620. -- SSD monté sur /mnt/portablessd. -- Les MP4 **ne quittent jamais** z620 — ffmpeg s'y exécute via SSH. - -Accès SSH depuis core : +SSH relay (depuis cosma-vm ou core) : .. code-block:: bash - ssh floppyrj45@192.168.0.168 + ssh ml-stack "ssh z620 \\"commande\\"" -Service systemd dispatcher ---------------------------- +OpenVPN — accès collègues +-------------------------- -Fichier de service : /etc/systemd/system/cosma-qc-dispatcher.service +Serveur OpenVPN sur cosma-vm (.83:1194 UDP). +Adresse externe : ``laboratoire.freeboxos.fr:1194`` -.. code-block:: ini +Profil client : ``cosma-qc-collegue1.ovpn`` (Nextcloud sync). - [Unit] - Description=COSMA QC Dispatcher - After=network.target - - [Service] - User=floppyrj45 - WorkingDirectory=/home/floppyrj45/docker/cosma-qc - ExecStart=/usr/bin/python3 app/dispatcher.py - Restart=on-failure - RestartSec=10 - - [Install] - WantedBy=multi-user.target - -Commandes de gestion : +Génération dun nouveau client : .. code-block:: bash - sudo systemctl start cosma-qc-dispatcher - sudo systemctl stop cosma-qc-dispatcher - sudo systemctl restart cosma-qc-dispatcher - sudo systemctl enable cosma-qc-dispatcher # démarrage auto - - -Conteneur Docker dashboard ---------------------------- - -Le dashboard FastAPI tourne dans un conteneur Docker. - -.. code-block:: bash - - cd /home/floppyrj45/docker/cosma-qc - docker compose up -d # démarrer - docker compose down # arrêter - docker compose logs -f # logs - -Accès : http://192.168.0.82:3849 + cd /home/cosma/openvpn-ca/easyrsa3 + ./easyrsa gen-req NOMCLIENT nopass + ./easyrsa sign-req client NOMCLIENT Ports réseau récapitulatifs @@ -160,12 +142,16 @@ Ports réseau récapitulatifs * - Host - Port - Service - * - .82 + * - .83 - 3849 - Dashboard FastAPI cosma-qc + * - .83 + - 1194/udp + - OpenVPN server * - .84 / .87 - 8100+N - - Viser viewer (reconstruction job N) + - Viser viewer (job N) * - .84 / .87 - 8300 - - HTTP server GLB export + - HTTP server GLB/PLY export + diff --git a/docs/_build/html/index.html b/docs/_build/html/index.html index 2841519..8c92129 100644 --- a/docs/_build/html/index.html +++ b/docs/_build/html/index.html @@ -93,11 +93,11 @@
  • Infrastructure
  • diff --git a/docs/_build/html/infrastructure.html b/docs/_build/html/infrastructure.html index 5cd0572..43c4ec7 100644 --- a/docs/_build/html/infrastructure.html +++ b/docs/_build/html/infrastructure.html @@ -47,11 +47,11 @@
  • Pipeline cosma-qc
  • Infrastructure
  • @@ -87,44 +87,62 @@

    Infrastructure

    Réseau LAN — 192.168.0.0/24

    -
    ┌─────────────────────────────────────────────────────────┐
    -│                  LAN 192.168.0.0/24                     │
    -│                                                          │
    -│  .82  CORE       Dispatcher (systemd) + FastAPI :3849   │
    -│                  Gitea + Grafana + InfluxDB + Caddy      │
    -│                                                          │
    -│  .84  ml-stack   GPU worker  RTX 3090 24GB               │
    -│  .87  gpu        GPU worker  RTX 3060 12GB               │
    -│                                                          │
    -│  .168 z620       Proxmox host  HP Z620                   │
    -│                  SSD → /mnt/portablessd  (MP4 bruts)     │
    -└─────────────────────────────────────────────────────────┘
    +
    ┌───────────────────────────────────────────────────────────────┐
    +│                    LAN 192.168.0.0/24                         │
    +│                                                                │
    +│  .82  CORE       Gitea + Grafana + InfluxDB + Caddy            │
    +│                  Reverse-proxy → cosma-vm pour /cosma-qc       │
    +│                                                                │
    +│  .83  cosma-vm   Dispatcher cosma-qc (systemd)                 │
    +│                  Dashboard FastAPI :3849                        │
    +│                  OpenVPN server :1194 UDP                       │
    +│                                                                │
    +│  .84  ml-stack   GPU worker  RTX 3090 24GB                     │
    +│  .87  gpu        GPU worker  RTX 3060 12GB                     │
    +│                                                                │
    +│  .168 z620       Proxmox host HP Z620 — SSD MP4 bruts          │
    +│  .101 poxML      Proxmox hyperviseur — héberge cosma-vm (VM 202)│
    +└───────────────────────────────────────────────────────────────┘
    +
    +
    +
    +
    +

    Nœud cosma-vm (.83) — serveur principal cosma-qc

    +

    VM #202 sur Proxmox poxML (.101). 4 vCPU, 4 GB RAM, 40 GB SSD. +User : cosma (avec docker group et sudo).

    +

    Services :

    + +

    Commandes utiles :

    +
    # SSH vers cosma-vm
    +ssh cosma@192.168.0.83
    +
    +# Statut dispatcher
    +sudo systemctl status cosma-qc-dispatcher
    +
    +# Logs dispatcher
    +tail -f /home/cosma/cosma-qc-data/dispatcher.log
    +
    +# Dashboard local
    +http://192.168.0.83:3849
     

    Nœud core (.82)

    -

    Rôle : orchestrateur central du pipeline.

    +

    Rôle : routeur et services communs.

    Services actifs :

    -

    Commandes utiles :

    -
    # Statut dispatcher
    -sudo systemctl status cosma-qc-dispatcher
    -
    -# Logs dispatcher temps réel
    -sudo journalctl -u cosma-qc-dispatcher -f
    -
    -# Dashboard
    -http://192.168.0.82:3849
    -
    -

    Nœuds GPU workers (.84 et .87)

    @@ -137,7 +155,7 @@ http://192.168.0.82:3849

    IP

    -

    Nom

    +

    Nom SSH

    GPU

    VRAM

    @@ -155,69 +173,36 @@ http://192.168.0.82:3849 -

    Rôle : exécution de ffmpeg (extraction frames) et lingbot-map (reconstruction 3D).

    -

    Répertoire de travail sur chaque worker :

    +

    Rôle : exécution de ffmpeg et lingbot-map.

    /cosma-qc-frames/
    -├── job_1/
    -│   ├── frame_000001.jpg  …  frame_NNNNNN.jpg
    -│   ├── .video_0.done
    -│   ├── reconstruction.ply
    -│   └── reconstruction.glb   (généré à la demande)
    -├── job_2/
    -│   └── …
    -└── stitch_1.ply
    +└── job_N/
    +    ├── frame_NNNNNN.jpg
    +    ├── .video_V.done
    +    ├── reconstruction.ply
    +    └── reconstruction.glb
     
    -
    -

    Nœud z620 (.168)

    -

    Rôle : stockage des MP4 bruts GoPro.

    - -

    Accès SSH depuis core :

    -
    ssh floppyrj45@192.168.0.168
    +
    +

    Nœud z620 (.168) — stockage MP4

    +

    HP Z620 (Proxmox). SSD /mnt/portablessd avec les MP4 GoPro bruts. +Les MP4 ne quittent jamais z620 — ffmpeg sy exécute via SSH-relay.

    +

    SSH relay (depuis cosma-vm ou core) :

    +
    ssh ml-stack "ssh z620 \\"commande\\""
     
    -
    -

    Service systemd dispatcher

    -

    Fichier de service : /etc/systemd/system/cosma-qc-dispatcher.service

    -
    [Unit]
    -Description=COSMA QC Dispatcher
    -After=network.target
    -
    -[Service]
    -User=floppyrj45
    -WorkingDirectory=/home/floppyrj45/docker/cosma-qc
    -ExecStart=/usr/bin/python3 app/dispatcher.py
    -Restart=on-failure
    -RestartSec=10
    -
    -[Install]
    -WantedBy=multi-user.target
    +
    +

    OpenVPN — accès collègues

    +

    Serveur OpenVPN sur cosma-vm (.83:1194 UDP). +Adresse externe : laboratoire.freeboxos.fr:1194

    +

    Profil client : cosma-qc-collegue1.ovpn (Nextcloud sync).

    +

    Génération dun nouveau client :

    +
    cd /home/cosma/openvpn-ca/easyrsa3
    +./easyrsa gen-req NOMCLIENT nopass
    +./easyrsa sign-req client NOMCLIENT
     
    -

    Commandes de gestion :

    -
    sudo systemctl start cosma-qc-dispatcher
    -sudo systemctl stop cosma-qc-dispatcher
    -sudo systemctl restart cosma-qc-dispatcher
    -sudo systemctl enable cosma-qc-dispatcher   # démarrage auto
    -
    -
    -
    -
    -

    Conteneur Docker dashboard

    -

    Le dashboard FastAPI tourne dans un conteneur Docker.

    -
    cd /home/floppyrj45/docker/cosma-qc
    -docker compose up -d       # démarrer
    -docker compose down        # arrêter
    -docker compose logs -f     # logs
    -
    -
    -

    Accès : http://192.168.0.82:3849

    Ports réseau récapitulatifs

    @@ -234,17 +219,21 @@ docker compose logs -

    .82

    +

    .83

    3849

    Dashboard FastAPI cosma-qc

    -

    .84 / .87

    -

    8100+N

    -

    Viser viewer (reconstruction job N)

    +

    .83

    +

    1194/udp

    +

    OpenVPN server

    .84 / .87

    +

    8100+N

    +

    Viser viewer (job N)

    + +

    .84 / .87

    8300

    -

    HTTP server GLB export

    +

    HTTP server GLB/PLY export

    diff --git a/docs/_build/html/searchindex.js b/docs/_build/html/searchindex.js index af5f5e7..474e2bc 100644 --- a/docs/_build/html/searchindex.js +++ b/docs/_build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({"alltitles":{"Base de donn\u00e9es":[[4,"base-de-donnees"]],"Budget disque observ\u00e9":[[0,"budget-disque-observe"]],"Conteneur Docker dashboard":[[2,"conteneur-docker-dashboard"]],"Contenu":[[1,null]],"Dashboard web":[[4,"dashboard-web"]],"Donn\u00e9es \u2014 Stockage et budget disque":[[0,null]],"Export GLB":[[0,"export-glb"]],"Flux de donn\u00e9es global":[[3,"flux-de-donnees-global"]],"Frames JPEG":[[0,"frames-jpeg"]],"Infrastructure":[[2,null]],"Ing\u00e9rer une nouvelle acquisition":[[4,"ingerer-une-nouvelle-acquisition"]],"Logs dispatcher":[[4,"logs-dispatcher"]],"N\u0153ud core (.82)":[[2,"noeud-core-82"]],"N\u0153ud z620 (.168)":[[2,"noeud-z620-168"]],"N\u0153uds GPU workers (.84 et .87)":[[2,"noeuds-gpu-workers-84-et-87"]],"O\u00f9 sont stock\u00e9es les donn\u00e9es":[[0,"ou-sont-stockees-les-donnees"]],"PLY interm\u00e9diaires":[[0,"ply-intermediaires"]],"Pipeline cosma-qc":[[3,null]],"Politique de nettoyage":[[0,"politique-de-nettoyage"]],"Ports r\u00e9seau r\u00e9capitulatifs":[[2,"ports-reseau-recapitulatifs"]],"Red\u00e9marrer le pipeline complet":[[4,"redemarrer-le-pipeline-complet"]],"Relancer un job \u00e9chou\u00e9":[[4,"relancer-un-job-echoue"]],"Reprise sur crash \u2014 marqueurs .done":[[0,"reprise-sur-crash-marqueurs-done"]],"R\u00e9seau LAN \u2014 192.168.0.0/24":[[2,"reseau-lan-192-168-0-0-24"]],"Service systemd dispatcher":[[2,"service-systemd-dispatcher"]],"Statuts de jobs":[[3,"statuts-de-jobs"]],"Surveiller les jobs":[[4,"surveiller-les-jobs"]],"T\u00e9l\u00e9charger un GLB":[[4,"telecharger-un-glb"]],"Utilisation":[[4,null]],"Visualiser un nuage de points PLY":[[4,"visualiser-un-nuage-de-points-ply"]],"Vue d\u2019ensemble":[[3,"vue-d-ensemble"]],"V\u00e9rification espace disque":[[0,"verification-espace-disque"]],"V\u00e9rifications rapides post-mission":[[4,"verifications-rapides-post-mission"]],"cosma-qc \u2014 Documentation":[[1,null]],"\u00c9tape 1 \u2014 Ingest":[[3,"etape-1-ingest"]],"\u00c9tape 2 \u2014 Extraction des frames":[[3,"etape-2-extraction-des-frames"]],"\u00c9tape 3 \u2014 Reconstruction 3D":[[3,"etape-3-reconstruction-3d"]],"\u00c9tape 4 \u2014 Stitch par AUV":[[3,"etape-4-stitch-par-auv"]],"\u00c9tape 5 \u2014 Stitch cross-AUV":[[3,"etape-5-stitch-cross-auv"]],"\u00c9tape 6 \u2014 Export GLB (\u00e0 la demande)":[[3,"etape-6-export-glb-a-la-demande"]]},"docnames":["data","index","infrastructure","pipeline","usage"],"envversion":{"sphinx":66,"sphinx.domains.c":3,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":9,"sphinx.domains.index":1,"sphinx.domains.javascript":3,"sphinx.domains.math":2,"sphinx.domains.python":4,"sphinx.domains.rst":2,"sphinx.domains.std":2},"filenames":["data.rst","index.rst","infrastructure.rst","pipeline.rst","usage.rst"],"indexentries":{},"objects":{},"objnames":{},"objtypes":{},"terms":{"06d":3,"12gb":2,"1920x1080":0,"24gb":2,"3d":[1,2],"5_000_000":0,"5m":0,"After":2,"BY":4,"FROM":4,"WHERE":4,"absolu":3,"acc\u00e8":2,"acc\u00e9der":4,"acquis":3,"acquisit":1,"actif":2,"adapt\u00e9":3,"affich":4,"align":3,"all\u00e9g\u00e9":0,"api":[0,4],"app":2,"apr\u00e8":[0,3,4],"arr\u00eater":[2,4],"assign\u00e9":4,"assur":4,"attendr":4,"attent":3,"au":[3,4],"auto":2,"automatiqu":[0,3,4],"auv":[0,1,4],"auv009":4,"aux":2,"avant":0,"avec":[0,3,4],"base":[0,3],"bin":2,"boucl":2,"bruit":3,"brut":[0,2,3],"brute":3,"budget":1,"c":4,"caddi":2,"calcul":0,"cam\u00e9ra":3,"cas":[0,3],"cd":[2,4],"ce":3,"central":2,"chacun":0,"chaqu":[0,2,3,4],"charg":4,"chemin":3,"choic":0,"ciel":3,"close":4,"cloudcompar":4,"color":0,"command":2,"complet":1,"compl\u00e8t":[0,4],"compos":[2,4],"concern\u00e9":4,"conn":4,"connect":4,"conserv":0,"conserv\u00e9":0,"consommateur":0,"conteneur":1,"contr\u00f4l":1,"convers":3,"copi":3,"copier":4,"copi\u00e9":0,"core":[1,3,4],"cosma":[0,2,4],"count":4,"cour":[3,4],"crash":[1,3],"creat":3,"created_at":3,"cross":1,"cross_auv":3,"cr\u00e9\u00e9":3,"cr\u00e9\u00e9s":4,"curl":[0,4],"cycl":4,"d":[0,1,2,4],"dan":[2,3,4],"dashboard":[0,1],"db":[3,4],"de":[1,2],"demand":[0,1,2],"demo":3,"dens":3,"densit\u00e9":0,"depui":[0,2,3,4],"derni\u00e8r":4,"des":[0,1,2,4],"descript":[2,3],"dessus":3,"deux":3,"df":[0,4],"direct":3,"directori":[0,3,4],"dispatch":[1,3],"dispon":3,"disqu":[1,4],"do_extract":3,"do_reconstruct":3,"do_stitch_cross_auv":3,"do_stitch_per_auv":3,"docker":[1,4],"doit":4,"done":[1,2,3,4],"donn\u00e9":1,"dont":3,"drone":[1,3],"du":[0,2,3,4],"d\u00e9clenchement":3,"d\u00e9j\u00e0":[0,3],"d\u00e9marrag":2,"d\u00e9marrer":[2,4],"d\u00e9marr\u00e9":3,"d\u00e9pass":3,"d\u00e9pend":0,"d\u00e9p\u00f4t":2,"d\u00e9tient":3,"eau":3,"emplac":0,"en":[0,3,4],"enabl":2,"ensembl":1,"entr":3,"entr\u00e9":[0,3],"erreur":[3,4],"error":4,"espac":4,"est":[0,3],"et":[1,3,4],"etc":[2,4],"execstart":2,"execut":4,"export":[1,2],"export_glb":[0,4],"expos\u00e9":2,"extract":[0,1,2,4],"extrait":0,"ex\u00e9cut":[2,3],"f":[0,2,4],"fail":[3,4],"failur":2,"fals":0,"fastapi":2,"ffmpeg":[2,3],"fichier":[0,2,3],"file":3,"filtr":3,"filtrer":4,"fin":4,"final":[0,3],"floppyrj45":[0,2,4],"flux":1,"foi":0,"fonction":3,"forcer":[0,4],"form":3,"fps":[0,3],"frame":[1,2,4],"frame_":[0,3],"frame_000001":2,"frame_nnnnnn":2,"frames_dir":3,"fusion":[0,3],"gb":[0,2],"gestion":2,"gitea":2,"glb":[1,2],"global":[0,1,4],"gopro":[0,2,3,4],"gpu":[1,3],"grafana":2,"grep":4,"group\u00e9":3,"gx":3,"gxxx":3,"g\u00e9n\u00e8re":0,"g\u00e9n\u00e9ration":[0,4],"g\u00e9n\u00e9rer":4,"g\u00e9n\u00e9r\u00e9":[0,2],"h":[0,4],"head":0,"heuristiqu":3,"home":[2,4],"hor":[0,3],"host":2,"hp":2,"http":[0,2,3,4],"http8300":4,"id":[0,3,4],"idx":0,"ignor\u00e9":3,"il":4,"import":[0,4],"indiqu":3,"influxdb":2,"infrastructur":1,"ingest":[1,4],"ing\u00e9rer":1,"input":3,"instal":2,"intact":0,"integ":3,"inter":3,"interfac":2,"ip":2,"jamai":[0,2,3],"job":[0,1,2],"job_":[0,3,4],"job_1":2,"job_2":2,"job_21":0,"job_id":[0,3,4],"journalctl":[2,4],"jpeg":3,"jpg":[0,2,3],"json":3,"jusqu":3,"key":3,"l":[0,3,4],"la":[0,1,2,4],"lan":1,"lancer":[0,4],"lanc\u00e9":[3,4],"le":[0,1,2,3],"len":0,"les":[1,2,3],"lh":[0,4],"lien":4,"lign":[0,4],"lingbot":[2,3],"list":3,"load":0,"log":[2,3],"logiqu":3,"lorsqu":3,"ls":[0,4],"luminosit\u00e9":3,"m":[0,3,4],"manuell":0,"map":[2,3],"marin":[1,3],"marqueur":[1,3,4],"mb":0,"million":3,"min":0,"minim":3,"minut":[3,4],"mission":[0,1],"ml":2,"mnt":[0,2,3,4],"monitor":2,"mont\u00e9":2,"moyenn":3,"mp4":[0,2,3,4],"multi":2,"m\u00eame":3,"n":[0,2,3,4],"navigateur":3,"navigu":[3,4],"ne":[0,2,3],"nettoyag":1,"network":2,"nohup":4,"nom":2,"nouveau":3,"nouvell":1,"np":0,"nuag":[0,1,3],"null":4,"numpi":0,"num\u00e9ro":[3,4],"n\u00e9cessair":4,"n\u0153ud":1,"observ\u00e9":1,"ok":4,"op\u00e9rat":3,"orchestrateur":2,"order":4,"ou":[3,4],"outil":3,"ouvrir":4,"o\u00f9":1,"par":[0,1,4],"param\u00e8tr":3,"particularit\u00e9":3,"pas":3,"path":[3,4],"pc":[0,3,4],"pend":[3,4],"pendant":[3,4],"per_auv":[0,3],"permettr":0,"peut":4,"peuvent":0,"pipelin":[1,2],"pkill":4,"pli":[1,2,3],"point":[0,1,3],"pointcloud":0,"politiqu":1,"port":[1,3],"portablessd":[0,2,3,4],"post":[0,1],"pour":[0,1,3,4],"prend":4,"prendr":4,"primari":3,"principal":2,"print":4,"prochain":4,"produir":3,"progress":4,"proxmox":2,"pr\u00e9sent":4,"py":[2,3,4],"python3":[0,2,3,4],"q":3,"qc":[0,2,4],"qualit\u00e9":1,"quand":3,"que":[0,3,4],"quelqu":4,"qui":[2,3],"quittent":[0,2,3],"random":0,"rapid":1,"reconstruct":[0,1,2,4],"red\u00e9marr":1,"red\u00e9marrag":3,"regroup":3,"relanc":1,"remarqu":0,"remettr":4,"remplac":4,"replac":0,"reprend":4,"repris":[1,3],"restart":[2,4],"restartsec":2,"retourn":4,"rf":0,"rh":0,"rm":[0,4],"row":4,"rtx":2,"run":[3,4],"r\u00e9":[0,4],"r\u00e9capitulatif":1,"r\u00e9duit":3,"r\u00e9el":[2,3,4],"r\u00e9pertoir":[2,3],"r\u00e9seau":[1,3],"r\u00f4le":[2,3],"s":[2,3,4],"saut":0,"sauvegard\u00e9":0,"scale":3,"scanner":3,"scp":4,"script":[3,4],"sc\u00e8ne":0,"segment":[0,3,4],"select":4,"selon":4,"server":[0,2,3,4],"serveur":[0,3,4],"servic":1,"set":4,"seuil":3,"seul":3,"sh":0,"si":[3,4],"somm":0,"sont":[1,3,4],"sort":0,"sorti":3,"sourc":[2,3],"sous":[1,3],"sqlite":3,"sqlite3":4,"ssd":[2,3,4],"ssh":[0,2,3,4],"stack":2,"start":[2,4],"status":[2,3,4],"statut":[1,2,4],"stitch":[0,1],"stitch_":[0,3],"stitch_1":2,"stitch_glob":[0,3],"stockag":[1,2],"stock\u00e9":[1,3],"stop":[2,4],"structur":3,"sub":0,"succ\u00e8":0,"sudo":[2,4],"suppress":0,"supprim":[0,4],"supprim\u00e9":[0,3],"sur":[1,2,3,4],"surfac":3,"surveil":1,"system":2,"systemctl":[2,4],"systemd":1,"tabl":3,"taill":[0,4],"target":2,"temp":[2,3,4],"temporel":3,"termin\u00e9":3,"text":3,"timestamp":3,"tmp":4,"top":0,"total":0,"tourn":2,"tous":[0,3,4],"tout":0,"trait":3,"traitement":3,"trait\u00e9":[0,3],"travail":2,"trimesh":[0,3],"type":0,"typiqu":0,"t\u00e9l\u00e9chargement":[0,3,4],"t\u00e9l\u00e9charger":[0,1,3],"t\u00e9l\u00e9charg\u00e9":4,"u":[2,4],"un":[0,1,2,3],"une":[0,1],"uniqu":0,"unit":2,"updat":4,"updated_at":[3,4],"user":2,"usr":2,"util":2,"utilis":1,"v":3,"valid":0,"valid\u00e9":[0,3],"variabl":0,"ver":[3,4],"version":0,"vertic":0,"vf":3,"via":[0,2,3,4],"video_":[0,4],"video_0":[0,2],"video_1":0,"video_n":3,"vid\u00e9o":[0,1,3],"viewer":[2,3,4],"viser":[2,3,4],"visualis":[0,1,3],"visuel":0,"voir":3,"voyag":3,"vram":2,"vue":1,"v\u00e9rific":1,"v\u00e9rifier":[0,4],"wantedbi":2,"web":[0,2,3],"wget":[0,3,4],"worker":[0,1,3,4],"worker_frames_dir":3,"worker_ip":3,"workingdirectori":2,"x":[0,4],"y":2,"yml":4,"z620":[0,1,3,4],"\u00e0":[0,1,2,4],"\u00e9cart":3,"\u00e9chantillonnag":3,"\u00e9chou\u00e9":1,"\u00e9crire":3,"\u00e9tape":1,"\u00e9tat":4,"\u00eatre":0},"titles":["Donn\u00e9es \u2014 Stockage et budget disque","cosma-qc \u2014 Documentation","Infrastructure","Pipeline cosma-qc","Utilisation"],"titleterms":{"3d":3,"acquisit":4,"auv":3,"base":4,"budget":0,"complet":4,"conteneur":2,"contenu":1,"core":2,"cosma":[1,3],"crash":0,"cross":3,"d":3,"dashboard":[2,4],"de":[0,3,4],"demand":3,"des":3,"dispatch":[2,4],"disqu":0,"docker":2,"document":1,"done":0,"donn\u00e9":[0,3,4],"ensembl":3,"espac":0,"et":[0,2],"export":[0,3],"extract":3,"flux":3,"frame":[0,3],"glb":[0,3,4],"global":3,"gpu":2,"infrastructur":2,"ingest":3,"ing\u00e9rer":4,"interm\u00e9diair":0,"job":[3,4],"jpeg":0,"la":3,"lan":2,"le":4,"les":[0,4],"log":4,"marqueur":0,"mission":4,"nettoyag":0,"nouvell":4,"nuag":4,"n\u0153ud":2,"observ\u00e9":0,"o\u00f9":0,"par":3,"pipelin":[3,4],"pli":[0,4],"point":4,"politiqu":0,"port":2,"post":4,"qc":[1,3],"rapid":4,"reconstruct":3,"red\u00e9marr":4,"relanc":4,"repris":0,"r\u00e9capitulatif":2,"r\u00e9seau":2,"servic":2,"sont":0,"statut":3,"stitch":3,"stockag":0,"stock\u00e9":0,"sur":0,"surveil":4,"systemd":2,"t\u00e9l\u00e9charger":4,"un":4,"une":4,"utilis":4,"visualis":4,"vue":3,"v\u00e9rific":[0,4],"web":4,"worker":2,"z620":2,"\u00e0":3,"\u00e9chou\u00e9":4,"\u00e9tape":3}}) \ No newline at end of file +Search.setIndex({"alltitles":{"Base de donn\u00e9es":[[4,"base-de-donnees"]],"Budget disque observ\u00e9":[[0,"budget-disque-observe"]],"Contenu":[[1,null]],"Dashboard web":[[4,"dashboard-web"]],"Donn\u00e9es \u2014 Stockage et budget disque":[[0,null]],"Export GLB":[[0,"export-glb"]],"Flux de donn\u00e9es global":[[3,"flux-de-donnees-global"]],"Frames JPEG":[[0,"frames-jpeg"]],"Infrastructure":[[2,null]],"Ing\u00e9rer une nouvelle acquisition":[[4,"ingerer-une-nouvelle-acquisition"]],"Logs dispatcher":[[4,"logs-dispatcher"]],"N\u0153ud core (.82)":[[2,"noeud-core-82"]],"N\u0153ud cosma-vm (.83) \u2014 serveur principal cosma-qc":[[2,"noeud-cosma-vm-83-serveur-principal-cosma-qc"]],"N\u0153ud z620 (.168) \u2014 stockage MP4":[[2,"noeud-z620-168-stockage-mp4"]],"N\u0153uds GPU workers (.84 et .87)":[[2,"noeuds-gpu-workers-84-et-87"]],"OpenVPN \u2014 acc\u00e8s coll\u00e8gues":[[2,"openvpn-acces-collegues"]],"O\u00f9 sont stock\u00e9es les donn\u00e9es":[[0,"ou-sont-stockees-les-donnees"]],"PLY interm\u00e9diaires":[[0,"ply-intermediaires"]],"Pipeline cosma-qc":[[3,null]],"Politique de nettoyage":[[0,"politique-de-nettoyage"]],"Ports r\u00e9seau r\u00e9capitulatifs":[[2,"ports-reseau-recapitulatifs"]],"Red\u00e9marrer le pipeline complet":[[4,"redemarrer-le-pipeline-complet"]],"Relancer un job \u00e9chou\u00e9":[[4,"relancer-un-job-echoue"]],"Reprise sur crash \u2014 marqueurs .done":[[0,"reprise-sur-crash-marqueurs-done"]],"R\u00e9seau LAN \u2014 192.168.0.0/24":[[2,"reseau-lan-192-168-0-0-24"]],"Statuts de jobs":[[3,"statuts-de-jobs"]],"Surveiller les jobs":[[4,"surveiller-les-jobs"]],"T\u00e9l\u00e9charger un GLB":[[4,"telecharger-un-glb"]],"Utilisation":[[4,null]],"Visualiser un nuage de points PLY":[[4,"visualiser-un-nuage-de-points-ply"]],"Vue d\u2019ensemble":[[3,"vue-d-ensemble"]],"V\u00e9rification espace disque":[[0,"verification-espace-disque"]],"V\u00e9rifications rapides post-mission":[[4,"verifications-rapides-post-mission"]],"cosma-qc \u2014 Documentation":[[1,null]],"\u00c9tape 1 \u2014 Ingest":[[3,"etape-1-ingest"]],"\u00c9tape 2 \u2014 Extraction des frames":[[3,"etape-2-extraction-des-frames"]],"\u00c9tape 3 \u2014 Reconstruction 3D":[[3,"etape-3-reconstruction-3d"]],"\u00c9tape 4 \u2014 Stitch par AUV":[[3,"etape-4-stitch-par-auv"]],"\u00c9tape 5 \u2014 Stitch cross-AUV":[[3,"etape-5-stitch-cross-auv"]],"\u00c9tape 6 \u2014 Export GLB (\u00e0 la demande)":[[3,"etape-6-export-glb-a-la-demande"]]},"docnames":["data","index","infrastructure","pipeline","usage"],"envversion":{"sphinx":66,"sphinx.domains.c":3,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":9,"sphinx.domains.index":1,"sphinx.domains.javascript":3,"sphinx.domains.math":2,"sphinx.domains.python":4,"sphinx.domains.rst":2,"sphinx.domains.std":2},"filenames":["data.rst","index.rst","infrastructure.rst","pipeline.rst","usage.rst"],"indexentries":{},"objects":{},"objnames":{},"objtypes":{},"terms":{"06d":3,"12gb":2,"1920x1080":0,"24gb":2,"3d":1,"5_000_000":0,"5m":0,"After":[],"BY":4,"FROM":4,"WHERE":4,"absolu":3,"acc\u00e8":1,"acc\u00e9der":4,"acquis":3,"acquisit":1,"actif":2,"adapt\u00e9":3,"adress":2,"affich":4,"align":3,"all\u00e9g\u00e9":0,"api":[0,4],"app":2,"apr\u00e8":[0,3,4],"arr\u00eater":4,"assign\u00e9":4,"assur":4,"attendr":4,"attent":3,"au":[2,3,4],"auto":[],"automatiqu":[0,3,4],"auv":[0,1,4],"auv009":4,"aux":2,"avant":0,"avec":[0,2,3,4],"base":[0,3],"bin":[],"boucl":[],"bruit":3,"brut":[0,2,3],"brute":3,"budget":1,"c":4,"ca":2,"caddi":2,"calcul":0,"cam\u00e9ra":3,"cas":[0,3],"cd":[2,4],"ce":3,"central":[],"chacun":0,"chaqu":[0,3,4],"charg":4,"chemin":3,"choic":0,"ciel":3,"client":2,"close":4,"cloudcompar":4,"collegue1":2,"coll\u00e8gu":1,"color":0,"command":2,"commun":2,"complet":1,"compl\u00e8t":[0,4],"compos":4,"concern\u00e9":4,"conn":4,"connect":4,"conserv":0,"conserv\u00e9":0,"consommateur":0,"conteneur":2,"contr\u00f4l":1,"convers":3,"copi":3,"copier":4,"copi\u00e9":0,"core":[1,3,4],"cosma":[0,4],"count":4,"cour":[3,4],"crash":[1,3],"creat":3,"created_at":3,"cross":1,"cross_auv":3,"cr\u00e9\u00e9":3,"cr\u00e9\u00e9s":4,"curl":[0,4],"cycl":4,"d":[0,1,4],"dacc\u00e9der":2,"dan":[3,4],"dashboard":[0,2],"data":2,"db":[3,4],"de":[1,2],"demand":[0,1],"demo":3,"dens":3,"densit\u00e9":0,"depui":[0,2,3,4],"derni\u00e8r":4,"des":[0,1,4],"descript":3,"dessus":3,"deux":3,"df":[0,4],"direct":3,"directori":[0,3,4],"dispatch":[2,3],"dispon":3,"disqu":[1,4],"do_extract":3,"do_reconstruct":3,"do_stitch_cross_auv":3,"do_stitch_per_auv":3,"docker":[2,4],"doit":4,"done":[1,2,3,4],"donn\u00e9":1,"dont":3,"drone":[1,3],"du":[0,3,4],"dun":2,"d\u00e9clenchement":3,"d\u00e9j\u00e0":[0,3],"d\u00e9marrag":[],"d\u00e9marrer":4,"d\u00e9marr\u00e9":3,"d\u00e9pass":3,"d\u00e9pend":0,"d\u00e9p\u00f4t":2,"d\u00e9tient":3,"easyrsa":2,"easyrsa3":2,"eau":3,"emplac":0,"en":[0,3,4],"enabl":[],"ensembl":1,"entr":3,"entr\u00e9":[0,3],"erreur":[3,4],"error":4,"espac":4,"est":[0,3],"et":[1,3,4],"etc":4,"execstart":[],"execut":4,"export":[1,2],"export_glb":[0,4],"expos\u00e9":[],"extern":2,"extract":[0,1,2,4],"extrait":0,"ex\u00e9cut":[2,3],"f":[0,2,4],"fail":[3,4],"failur":[],"fals":0,"fastapi":2,"ffmpeg":[2,3],"fichier":[0,3],"file":3,"filtr":3,"filtrer":4,"fin":4,"final":[0,3],"floppyrj45":[0,2,4],"flux":1,"foi":0,"fonction":3,"forcer":[0,4],"form":3,"fps":[0,3],"fr":2,"frame":[1,2,4],"frame_":[0,3],"frame_000001":[],"frame_nnnnnn":2,"frames_dir":3,"freeboxo":2,"fusion":[0,3],"gb":[0,2],"gen":2,"gestion":[],"gitea":2,"glb":[1,2],"global":[0,1,4],"gopro":[0,2,3,4],"gpu":[1,3],"grafana":2,"grep":4,"group":2,"group\u00e9":3,"gx":3,"gxxx":3,"g\u00e9n\u00e8re":0,"g\u00e9n\u00e9ration":[0,2,4],"g\u00e9n\u00e9rer":4,"g\u00e9n\u00e9r\u00e9":0,"h":[0,4],"head":0,"heuristiqu":3,"home":[2,4],"hor":[0,3],"host":2,"hp":2,"http":[0,2,3,4],"http8300":4,"https":2,"hyperviseur":2,"h\u00e9berg":2,"id":[0,3,4],"idx":0,"ignor\u00e9":3,"il":4,"import":[0,4],"indiqu":3,"influxdb":2,"infrastructur":1,"ingest":[1,4],"ing\u00e9rer":1,"input":3,"instal":[],"intact":0,"integ":3,"inter":3,"interfac":[],"ip":2,"jamai":[0,2,3],"job":[0,1,2],"job_":[0,3,4],"job_1":[],"job_2":[],"job_21":0,"job_id":[0,3,4],"job_n":2,"journalctl":4,"jpeg":3,"jpg":[0,2,3],"json":3,"jusqu":3,"key":3,"l":[0,3,4],"la":[0,1,4],"laboratoir":2,"lan":1,"lanc":2,"lancer":[0,4],"lanc\u00e9":[3,4],"le":[0,1,3],"len":0,"les":[1,2,3],"lext\u00e9rieur":2,"lh":[0,4],"lien":4,"lign":[0,4],"lingbot":[2,3],"list":3,"load":0,"local":2,"log":[2,3],"logiqu":3,"lorsqu":3,"ls":[0,4],"luminosit\u00e9":3,"m":[0,3,4],"manuell":0,"map":[2,3],"marin":[1,3],"marqueur":[1,3,4],"mb":0,"million":3,"min":0,"minim":3,"minut":[3,4],"mission":[0,1],"ml":2,"mnt":[0,2,3,4],"monitor":2,"mont\u00e9":[],"moyenn":3,"mp4":[0,1,3,4],"multi":[],"m\u00eame":3,"n":[0,2,3,4],"navigateur":3,"navigu":[3,4],"ne":[0,2,3],"nettoyag":1,"network":[],"nextcloud":2,"nohup":4,"nom":2,"nomclient":2,"nopass":2,"nouveau":[2,3],"nouvell":1,"np":0,"nuag":[0,1,3],"null":4,"numpi":0,"num\u00e9ro":[3,4],"n\u00e9cessair":4,"n\u0153ud":1,"observ\u00e9":1,"ok":4,"openvpn":1,"op\u00e9rat":3,"orchestrateur":[],"order":4,"ou":[2,3,4],"outil":3,"ouvrir":4,"ovpn":2,"o\u00f9":1,"par":[0,1,4],"param\u00e8tr":3,"particularit\u00e9":3,"pas":3,"path":[3,4],"pc":[0,3,4],"pend":[3,4],"pendant":[3,4],"per_auv":[0,3],"permet":2,"permettr":0,"peut":4,"peuvent":0,"pipelin":1,"pkill":4,"pli":[1,2,3],"point":[0,1,3],"pointcloud":0,"politiqu":1,"port":[1,3],"portablessd":[0,2,3,4],"post":[0,1],"pour":[0,1,2,3,4],"poxml":2,"prend":4,"prendr":4,"primari":3,"princip":1,"principal":[],"print":4,"prochain":4,"produir":3,"profil":2,"progress":4,"proxi":2,"proxmox":2,"pr\u00e9sent":4,"py":[3,4],"python3":[0,3,4],"q":3,"qc":[0,4],"qualit\u00e9":1,"quand":3,"que":[0,3,4],"quelqu":4,"qui":3,"quittent":[0,2,3],"ram":2,"random":0,"rapid":1,"reconstruct":[0,1,2,4],"red\u00e9marr":1,"red\u00e9marrag":3,"regroup":3,"relanc":1,"relay":2,"remarqu":0,"remettr":4,"remplac":4,"replac":0,"reprend":4,"repris":[1,3],"req":2,"restart":4,"restartsec":[],"retourn":4,"revers":2,"rf":0,"rh":0,"rm":[0,4],"rout":2,"routeur":2,"row":4,"rtx":2,"run":[3,4],"r\u00e9":[0,4],"r\u00e9capitulatif":1,"r\u00e9duit":3,"r\u00e9el":[3,4],"r\u00e9pertoir":3,"r\u00e9seau":[1,3],"r\u00f4le":[2,3],"s":[3,4],"saut":0,"sauvegard\u00e9":0,"scale":3,"scanner":3,"scp":4,"script":[3,4],"sc\u00e8ne":0,"segment":[0,3,4],"select":4,"selon":4,"server":[0,2,3,4],"serveur":[0,1,3,4],"servic":2,"set":4,"seuil":3,"seul":3,"sh":0,"si":[3,4],"sign":2,"somm":0,"sont":[1,3,4],"sort":0,"sorti":3,"sourc":[2,3],"sous":[1,3],"sqlite":3,"sqlite3":4,"ssd":[2,3,4],"ssh":[0,2,3,4],"stack":2,"start":4,"status":[2,3,4],"statut":[1,2,4],"stitch":[0,1],"stitch_":[0,3],"stitch_1":[],"stitch_glob":[0,3],"stockag":1,"stock\u00e9":[1,3],"stop":4,"structur":3,"sub":0,"succ\u00e8":0,"sudo":[2,4],"suppress":0,"supprim":[0,4],"supprim\u00e9":[0,3],"sur":[1,2,3,4],"surfac":3,"surveil":1,"sy":2,"sync":2,"system":[],"systemctl":[2,4],"systemd":2,"tabl":3,"tail":2,"taill":[0,4],"target":[],"temp":[3,4],"temporel":3,"termin\u00e9":3,"text":3,"timestamp":3,"tmp":4,"top":0,"total":0,"tourn":[],"tous":[0,3,4],"tout":0,"trait":3,"traitement":3,"trait\u00e9":[0,3],"travail":[],"trimesh":[0,3],"type":0,"typiqu":0,"t\u00e9l\u00e9chargement":[0,3,4],"t\u00e9l\u00e9charger":[0,1,3],"t\u00e9l\u00e9charg\u00e9":4,"u":4,"udp":2,"un":[0,1,3],"une":[0,1],"uniqu":0,"unit":[],"updat":4,"updated_at":[3,4],"user":2,"usr":[],"util":2,"utilis":1,"v":3,"valid":0,"valid\u00e9":[0,3],"variabl":0,"vcpu":2,"ver":[2,3,4],"version":0,"vertic":0,"vf":3,"via":[0,2,3,4],"video_":[0,4],"video_0":0,"video_1":0,"video_n":3,"video_v":2,"vid\u00e9o":[0,1,3],"viewer":[2,3,4],"viser":[2,3,4],"visualis":[0,1,3],"visuel":0,"vm":1,"voir":3,"voyag":3,"vram":2,"vue":1,"v\u00e9rific":1,"v\u00e9rifier":[0,4],"wantedbi":[],"web":[0,3],"wget":[0,3,4],"worker":[0,1,3,4],"worker_frames_dir":3,"worker_ip":3,"workingdirectori":[],"x":[0,4],"y":[],"yml":4,"z620":[0,1,3,4],"\u00e0":[0,1,4],"\u00e9cart":3,"\u00e9chantillonnag":3,"\u00e9chou\u00e9":1,"\u00e9crire":3,"\u00e9tape":1,"\u00e9tat":4,"\u00eatre":0},"titles":["Donn\u00e9es \u2014 Stockage et budget disque","cosma-qc \u2014 Documentation","Infrastructure","Pipeline cosma-qc","Utilisation"],"titleterms":{"3d":3,"acc\u00e8":2,"acquisit":4,"auv":3,"base":4,"budget":0,"coll\u00e8gu":2,"complet":4,"conteneur":[],"contenu":1,"core":2,"cosma":[1,2,3],"crash":0,"cross":3,"d":3,"dashboard":4,"de":[0,3,4],"demand":3,"des":3,"dispatch":4,"disqu":0,"docker":[],"document":1,"done":0,"donn\u00e9":[0,3,4],"ensembl":3,"espac":0,"et":[0,2],"export":[0,3],"extract":3,"flux":3,"frame":[0,3],"glb":[0,3,4],"global":3,"gpu":2,"infrastructur":2,"ingest":3,"ing\u00e9rer":4,"interm\u00e9diair":0,"job":[3,4],"jpeg":0,"la":3,"lan":2,"le":4,"les":[0,4],"log":4,"marqueur":0,"mission":4,"mp4":2,"nettoyag":0,"nouvell":4,"nuag":4,"n\u0153ud":2,"observ\u00e9":0,"openvpn":2,"o\u00f9":0,"par":3,"pipelin":[3,4],"pli":[0,4],"point":4,"politiqu":0,"port":2,"post":4,"princip":2,"qc":[1,2,3],"rapid":4,"reconstruct":3,"red\u00e9marr":4,"relanc":4,"repris":0,"r\u00e9capitulatif":2,"r\u00e9seau":2,"serveur":2,"servic":[],"sont":0,"statut":3,"stitch":3,"stockag":[0,2],"stock\u00e9":0,"sur":0,"surveil":4,"systemd":[],"t\u00e9l\u00e9charger":4,"un":4,"une":4,"utilis":4,"visualis":4,"vm":2,"vue":3,"v\u00e9rific":[0,4],"web":4,"worker":2,"z620":2,"\u00e0":3,"\u00e9chou\u00e9":4,"\u00e9tape":3}}) \ No newline at end of file diff --git a/docs/infrastructure.rst b/docs/infrastructure.rst index 2e3cc58..ea9738d 100644 --- a/docs/infrastructure.rst +++ b/docs/infrastructure.rst @@ -6,49 +6,68 @@ Réseau LAN — 192.168.0.0/24 .. code-block:: text - ┌─────────────────────────────────────────────────────────┐ - │ LAN 192.168.0.0/24 │ - │ │ - │ .82 CORE Dispatcher (systemd) + FastAPI :3849 │ - │ Gitea + Grafana + InfluxDB + Caddy │ - │ │ - │ .84 ml-stack GPU worker RTX 3090 24GB │ - │ .87 gpu GPU worker RTX 3060 12GB │ - │ │ - │ .168 z620 Proxmox host HP Z620 │ - │ SSD → /mnt/portablessd (MP4 bruts) │ - └─────────────────────────────────────────────────────────┘ + ┌───────────────────────────────────────────────────────────────┐ + │ LAN 192.168.0.0/24 │ + │ │ + │ .82 CORE Gitea + Grafana + InfluxDB + Caddy │ + │ Reverse-proxy → cosma-vm pour /cosma-qc │ + │ │ + │ .83 cosma-vm Dispatcher cosma-qc (systemd) │ + │ Dashboard FastAPI :3849 │ + │ OpenVPN server :1194 UDP │ + │ │ + │ .84 ml-stack GPU worker RTX 3090 24GB │ + │ .87 gpu GPU worker RTX 3060 12GB │ + │ │ + │ .168 z620 Proxmox host HP Z620 — SSD MP4 bruts │ + │ .101 poxML Proxmox hyperviseur — héberge cosma-vm (VM 202)│ + └───────────────────────────────────────────────────────────────┘ -Nœud core (.82) ----------------- +Nœud cosma-vm (.83) — serveur principal cosma-qc +-------------------------------------------------- -**Rôle :** orchestrateur central du pipeline. +VM #202 sur Proxmox poxML (.101). 4 vCPU, 4 GB RAM, 40 GB SSD. +User : ``cosma`` (avec docker group et sudo). -Services actifs : +Services : -- **Dispatcher** — service systemd cosma-qc-dispatcher. - Boucle principale qui dispatch les jobs aux workers GPU. +- **Dispatcher** — ``cosma-qc-dispatcher.service`` (systemd) + Lance les extractions ffmpeg sur les workers GPU. -- **Dashboard FastAPI** — conteneur Docker exposé sur le port **3849**. - Interface web de monitoring des jobs. +- **Dashboard FastAPI** — conteneur Docker ``cosma-qc-app``, port **3849**. + Accès via Caddy sur core : ``http://192.168.0.82/cosma-qc`` -- **Gitea** — dépôt source floppyrj45/cosma-qc. - -- **Grafana / InfluxDB** — monitoring infrastructure. +- **OpenVPN** — ``openvpn-server@cosma.service``, port 1194 UDP. + Permet aux collègues daccéder au LAN depuis lextérieur. Commandes utiles : .. code-block:: bash + # SSH vers cosma-vm + ssh cosma@192.168.0.83 + # Statut dispatcher sudo systemctl status cosma-qc-dispatcher - # Logs dispatcher temps réel - sudo journalctl -u cosma-qc-dispatcher -f + # Logs dispatcher + tail -f /home/cosma/cosma-qc-data/dispatcher.log - # Dashboard - http://192.168.0.82:3849 + # Dashboard local + http://192.168.0.83:3849 + + +Nœud core (.82) +---------------- + +**Rôle :** routeur et services communs. + +Services actifs : + +- **Caddy** — reverse proxy HTTPS, route ``/cosma-qc`` vers .83:3849. +- **Gitea** — dépôt source ``floppyrj45/cosma-qc``. +- **Grafana / InfluxDB** — monitoring infrastructure. Nœuds GPU workers (.84 et .87) @@ -59,7 +78,7 @@ Nœuds GPU workers (.84 et .87) :widths: 15 25 20 40 * - IP - - Nom + - Nom SSH - GPU - VRAM * - .84 @@ -71,83 +90,46 @@ Nœuds GPU workers (.84 et .87) - RTX 3060 - 12 GB -**Rôle :** exécution de ffmpeg (extraction frames) et lingbot-map (reconstruction 3D). - -Répertoire de travail sur chaque worker : +**Rôle :** exécution de ffmpeg et lingbot-map. .. code-block:: text /cosma-qc-frames/ - ├── job_1/ - │ ├── frame_000001.jpg … frame_NNNNNN.jpg - │ ├── .video_0.done - │ ├── reconstruction.ply - │ └── reconstruction.glb (généré à la demande) - ├── job_2/ - │ └── … - └── stitch_1.ply + └── job_N/ + ├── frame_NNNNNN.jpg + ├── .video_V.done + ├── reconstruction.ply + └── reconstruction.glb -Nœud z620 (.168) ------------------ +Nœud z620 (.168) — stockage MP4 +---------------------------------- -**Rôle :** stockage des MP4 bruts GoPro. +HP Z620 (Proxmox). SSD /mnt/portablessd avec les MP4 GoPro bruts. +Les MP4 **ne quittent jamais** z620 — ffmpeg sy exécute via SSH-relay. -- Proxmox host HP Z620. -- SSD monté sur /mnt/portablessd. -- Les MP4 **ne quittent jamais** z620 — ffmpeg s'y exécute via SSH. - -Accès SSH depuis core : +SSH relay (depuis cosma-vm ou core) : .. code-block:: bash - ssh floppyrj45@192.168.0.168 + ssh ml-stack "ssh z620 \\"commande\\"" -Service systemd dispatcher ---------------------------- +OpenVPN — accès collègues +-------------------------- -Fichier de service : /etc/systemd/system/cosma-qc-dispatcher.service +Serveur OpenVPN sur cosma-vm (.83:1194 UDP). +Adresse externe : ``laboratoire.freeboxos.fr:1194`` -.. code-block:: ini +Profil client : ``cosma-qc-collegue1.ovpn`` (Nextcloud sync). - [Unit] - Description=COSMA QC Dispatcher - After=network.target - - [Service] - User=floppyrj45 - WorkingDirectory=/home/floppyrj45/docker/cosma-qc - ExecStart=/usr/bin/python3 app/dispatcher.py - Restart=on-failure - RestartSec=10 - - [Install] - WantedBy=multi-user.target - -Commandes de gestion : +Génération dun nouveau client : .. code-block:: bash - sudo systemctl start cosma-qc-dispatcher - sudo systemctl stop cosma-qc-dispatcher - sudo systemctl restart cosma-qc-dispatcher - sudo systemctl enable cosma-qc-dispatcher # démarrage auto - - -Conteneur Docker dashboard ---------------------------- - -Le dashboard FastAPI tourne dans un conteneur Docker. - -.. code-block:: bash - - cd /home/floppyrj45/docker/cosma-qc - docker compose up -d # démarrer - docker compose down # arrêter - docker compose logs -f # logs - -Accès : http://192.168.0.82:3849 + cd /home/cosma/openvpn-ca/easyrsa3 + ./easyrsa gen-req NOMCLIENT nopass + ./easyrsa sign-req client NOMCLIENT Ports réseau récapitulatifs @@ -160,12 +142,16 @@ Ports réseau récapitulatifs * - Host - Port - Service - * - .82 + * - .83 - 3849 - Dashboard FastAPI cosma-qc + * - .83 + - 1194/udp + - OpenVPN server * - .84 / .87 - 8100+N - - Viser viewer (reconstruction job N) + - Viser viewer (job N) * - .84 / .87 - 8300 - - HTTP server GLB export + - HTTP server GLB/PLY export + diff --git a/scripts/__pycache__/dispatcher.cpython-311.pyc b/scripts/__pycache__/dispatcher.cpython-311.pyc index 88ee68d..792aa49 100644 Binary files a/scripts/__pycache__/dispatcher.cpython-311.pyc and b/scripts/__pycache__/dispatcher.cpython-311.pyc differ