4.1 KiB
4.1 KiB
Migration cin-search-tt : hors-Docker vers Docker + SMTP OVH -> Infomaniak
Contexte
Le 10/07/2026, Nabil signale que la migration SMTP globale vers Infomaniak (faite la veille) n'a pas couvert cin-search-tt car cette app tournait en dehors de la stack Docker, dans /volume1/web/cin-search-tt (Node.js standalone, jamais containerise).
Audit etendu a tout /volume1/web/ : 4 apps Node y etaient hebergees hors-Docker.
Etat trouve
| App | Etat | Action |
|---|---|---|
| cin-search-tt | SMTP sur ssl0.ovh.net, Baserow sur ancien alias nd.i234.me, jamais dockerise | Migre vers Docker |
| rla | Copie obsolete — la vraie version tourne deja proprement dans /volume1/docker/rla-api (Gotenberg/pptx-tt-api deja purges le 04/07) | Archivee (doublon perime) |
| club-ia | Projet termine (jamais deploye en prod) | Archivee |
| weblinks | Page HTML statique simple, aucune dependance | Conservee en l'etat dans /volume1/web |
Actions effectuees — cin-search-tt
- Copie du code (hors node_modules/zip) vers /volume1/docker/cin-search-tt
.envcorrige :- SMTP_HOST ssl0.ovh.net -> mail.infomaniak.com (port 587, STARTTLS, meme compte nabil.derouiche@ik.me que Baserow/Vaultwarden)
- BASEROW_API_URL https://baserow.nd.i234.me -> https://baserow.bolbol.tn (alias reseau Docker, regle absolue)
- Dockerfile ecrit (node:20-alpine, npm install --omit=dev)
- Image buildee via API Docker de Portainer (
POST /api/endpoints/2/docker/buildavec tar de contexte) cardockerCLI absent du container mcp-nas (hardening 08/07) - Stack deploye via API Portainer (
POST /api/stacks/create/standalone/string) — pas deenv_file:dans le compose (Portainer ne voit pas les chemins hote arbitraires), variables passees enenvironment:inline a la place - Container
cin-search-tt: port 3094->3000, reseaun8n, volume/volume1/docker/cin-search-tt/data:/app/data(persistance database.json) ports-registry.mdmis a jour (edite via un container alpine ephemere + bind mount, car le fichier appartient a uid 1026 et mcp-nas n'a plus CAP_DAC_OVERRIDE)- Reverse-proxy DSM
cin.bolbol.tn->localhost:3094NON fait (hors scope API/Docker, a faire manuellement dans DSM Control Panel) - Anciens dossiers archives dans
/volume1/web/.archive/:cin-search-tt.archived-20260710-migrated-to-docker,rla.archived-20260710-obsolete-superseded-by-docker-rla-api,club-ia.archived-20260710
Pieges decouverts (a capitaliser)
- mcp-nas ne peut pas lancer
docker/docker composedirectement (binaire absent, SSH host indisponible depuis le hardening). Solution : API REST Portainer (/api/endpoints/{id}/docker/buildpour build,/api/stacks/create/standalone/stringpour deploy). - Portainer ne resout pas
env_file:avec un chemin hote dans un stack deploye par API string — le moteur compose de Portainer tourne dans son propre filesystem (/data/compose/<id>/), pas celui de l'hote. Toujours utiliserenvironment:inline pour les stacks deployes ainsi. - Volume bind mounts en chemin absolu hote fonctionnent normalement (resolus par le daemon Docker, pas par Portainer) — contrairement a
env_file:. - Ecriture de fichiers appartenant a uid 1026 depuis mcp-nas (root) : impossible, meme en root, a cause de
cap_drop: [ALL](pas de CAP_DAC_OVERRIDE). Contournement : creer un container ephemere (alpine) avec bind mount du dossier concerne via l'API Portainer, executer la commande d'ecriture dedans en root reel (container non-hardened), puis le supprimer. - Token Gitea
GITEA_DEPLOY_TOKENn'a pas le scopewrite:organizationniread:user— peut lire/ecrire du contenu de repos existants, mais pas creer de nouveaux repos ni lister les users/orgs. Creation de nouveaux repos = a faire manuellement dans l'UI Gitea. /volume1/docker/ports-registry.mdn'est pas versionne dans Gitea (pas de.gita la racine de/volume1/docker) — mise a jour uniquement in-place sur le NAS.
Reste a faire (hors scope automatisable)
- Creer la regle reverse-proxy DSM
cin.bolbol.tn->localhost:3094 - Creer le repo Gitea
bolbol/cin-search-ttmanuellement (token actuel insuffisant) et y pousser le code