EN

Architecture & fonctionnement

Comment Paylood fonctionne sous le capot : hub, SSH, Docker, proxy et webhooks.

Cette page explique l’architecture de Paylood pour comprendre ce qui se passe à chaque déploiement.

Vue d’ensemble

┌─────────────────────┐   SSH (port 22)   ┌──────────────────────┐
│  Paylood Hub        │ ────────────────▶ │  Votre VPS           │
│  (API + Dashboard)  │                   │  ├─ Docker Engine    │
│                     │                   │  ├─ Traefik / Caddy  │
│  ─ Git OAuth        │   webhook push    │  ├─ Conteneurs app   │
│  ─ Queue BullMQ     │ ◀──────────────── │  └─ Volumes data     │
│  ─ PostgreSQL/Redis │                   │                      │
└─────────────────────┘                   └──────────────────────┘
  • Paylood Hub : l’API NestJS, la file de jobs (BullMQ/Redis) et le tableau de bord.
  • Vos VPS : les serveurs que vous possédez. Paylood n’y installe aucun agent — tout se fait par SSH + Docker.
  • Internet : webhooks Git, domaines et SSL passent par les proxies.

Le cycle de vie d’un déploiement

  1. Déclenchement : push Git (webhook) ou bouton Deploy.
  2. Job en file : un job deploy est poussé dans la queue Redis (BullMQ).
  3. Clone : le dépôt est cloné à la branche/commit ciblé dans un dossier temporaire.
  4. Génération : Paylood produit le Dockerfile et le .env.production selon la stack détectée.
  5. Upload : les fichiers sont envoyés sur le serveur via SSH dans /opt/paylood/projects/<projet>-<environnement>.
  6. Proxy : si un domaine est défini, Traefik/Caddy est configuré (avec TLS).
  7. Build & Deploy : docker compose up construit et démarre les conteneurs.
  8. Healthcheck : Paylood vérifie que l’application répond avant de marquer le déploiement success.
  9. Nettoyage : les anciennes images sont retirées (sauf la précédente, conservée pour le rollback).

Détection de stack

L’analyse du dépôt détecte :

  • Le framework : Node.js, PHP/Laravel, frontend statique (Vite/Next/React).
  • Les services : PostgreSQL, MySQL, MongoDB, Redis, RabbitMQ.
  • Le port d’écoute (via PORT, APP_PORT, SERVER_PORT, défaut 3000).
  • Les monorepos : chaque service est identifié par son chemin, et le bon service est sélectionné.

Infrastructure côté serveur

Une fois le projet déployé, votre VPS contient :

/opt/paylood/projects/
└── <projet>-<environnement>/
    ├── docker-compose.yml
    ├── Dockerfile
    ├── .env.production
    └── src/            (retiré après le build)

Le réseau Docker paylood-network interconnecte les conteneurs, et le proxy inverse (Traefik ou Caddy) route le trafic entrant.

Base de données de Paylood

L’installation utilise PostgreSQL (persistance) et Redis (files de jobs, OTP, blacklist de jetons). Les données applicatives de Paylood (projets, serveurs, variables, backups) sont stockées dans PostgreSQL ; les tokens Git sont chiffrés avant stockage.

Flux temps réel

Tout est diffusé via SSE (Server-Sent Events) :

  • Statut des déploiements (deployment.<id>.updated).
  • Logs de console (xterm).
  • Tests de connexion SSH.
  • Scan de services et analyse de dépôts.

Sécurité

  • JWT avec expiration pour l’authentification.
  • Chiffrement des secrets (tokens Git, clés privées) avec la clé d’encryption.
  • Vérification des signatures de webhooks (HMAC) pour GitHub/Bitbucket, token pour GitLab.
  • SSH uniquement (aucune ouverture de port supplémentaire sur vos VPS).
  • Helmet + throttling sur l’API publique.

Pour déployer la plateforme elle-même (site, app, API, base de données), consultez le dépôt GitHub : tout est conteneurisé via Docker Compose et géré par Traefik.

Dernière mise à jour: 2026-08-14 Modifier cette page