33800 Docs

← Retour

Docker

Source : CLAUDE.md lignes 434-507, 634-690

Configuration

Propriété Valeur
Version 29.1.4
data-root /mnt/stock_8to/33800-stack/docker/prod/ (sur prod-portainer)
Config /etc/docker/daemon.json

Configuration Déploiement (conf.gouroubleu.yml)

Chaque projet doit avoir un fichier conf.gouroubleu.yml à la racine.

Template

name: "mon-service"
type: "node"                  # node | bun | rust | python | custom
domain: "api.33800.nowhere84.com"  # Flexible : *.nowhere84.com, *.86000.nowhere84.com, etc.
port: 3000

env:
  NODE_ENV: "@ENV"
  DATABASE_URL: "@databases.POSTGRES"

# OBLIGATOIRE - Logs vers Loki
logs:
  enabled: true
  driver: loki
  labels:
    type: "api"               # api | app | worker | cron

# Auto-génération config Nginx
nginx:
  enabled: true
  ssl: true
  websocket: false

Sections

Section Description Obligatoire
name Nom du service Oui
type Type (node, bun, rust...) Oui
domain Domaine public Oui
port Port d'écoute Oui
env Variables d'environnement Non
storage Volumes NFS/local/RAM Non
logs Config logging Loki Oui
nginx Config reverse proxy Recommandé
scheduler Jobs internes Non

Section logs (OBLIGATOIRE depuis 16/01/2026)

logs:
  enabled: true               # Activer Loki
  driver: loki                # loki | json-file | none
  labels:
    type: "api"               # Type de service
  options:
    loki-url: "http://192.168.1.12:3100/loki/api/v1/push"

Exemples

Fichier Usage
docker/examples/conf.gouroubleu.template.yml Template complet
docker/examples/conf.gouroubleu.simple-api-node.yml API Node.js
docker/examples/conf.gouroubleu.fullstack-node.yml Fullstack Node
docker/examples/conf.gouroubleu.webapp-bun.yml Web App Bun

Scripts

Script Usage
scripts/lib/parse-config.sh Parser YAML
scripts/deploy/deploy.sh Déploiement auto
scripts/nginx/generate.sh Génération Nginx

Convention scheduler.json

Les containers avec scheduler interne (node-cron, Celery, etc.) exposent un fichier /app/scheduler.json pour permettre la détection automatique par collect.sh.

Template : /stock_8to/33800-stack/docker/templates/scheduler.json.template

{
  "name": "app-name",
  "version": "0.0.0",
  "schedules": [
    {
      "name": "job-name",
      "cron": "0 */6 * * *",
      "description": "Description du job",
      "timezone": "UTC",
      "enabled": true
    }
  ],
  "logs": {
    "app": "stdout",
    "error": "stderr",
    "access": null
  },
  "endpoints": {
    "health": "/health",
    "scheduler": "/api/stats",
    "trigger": "/api/collect"
  }
}

Containers avec scheduler.json :

Container Env Cron Description
needfinder-collector DEV 0 */6 * * * Collecte Reddit + HN + Analyse IA

Intégration :

Ajouter à un container :

  1. Créer scheduler.json à la racine du projet
  2. Ajouter COPY scheduler.json ./ dans le Dockerfile
  3. Rebuild le container

Supabase - Alias réseau pour Kong

Important : Quand supabase-rest-prod est recréé, il perd son alias rest nécessaire pour Kong.

Commande de fix :

ssh gouroubleu@192.168.1.12 "docker network disconnect supabase-prod_supabase-prod supabase-rest-prod && docker network connect --alias rest supabase-prod_supabase-prod supabase-rest-prod"

Symptôme : Kong retourne 500 avec erreur DNS "DNS resolution failed: dns server error" pour rest.

Cause : Le container est recréé sans l'alias (ex: modification PGRST_DB_SCHEMAS).

Connectors Stack - Architecture VPN (27/01/2026)

Emplacement : /home/gouroubleu/apps/connectors-stack/ (sur prod-portainer)

Architecture : Stack unifiée avec network namespace partagé

services:
  wireguard-sidecar:
    # Gère tunnels WireGuard
    # Expose ports 5403 (connectors-api) et 5410 (sidecar API)
    cap_add: [NET_ADMIN, SYS_MODULE]
    sysctls: [net.ipv4.ip_forward=1, ...]

  connectors-api:
    # Partage le namespace réseau du sidecar
    network_mode: "service:wireguard-sidecar"
    # Peut utiliser directement les tunnels VPN créés

Pourquoi network_mode? : Sans partage de namespace, connectors-api ne peut pas utiliser les tunnels VPN créés dans le sidecar (chaque container a son propre stack réseau).

Fichiers :

Commandes :

# Démarrer
cd /home/gouroubleu/apps/connectors-stack && docker compose up -d

# Logs
docker logs connectors-api -f
docker logs wireguard-sidecar -f

# Status tunnels
docker exec wireguard-sidecar curl localhost:5410/tunnel/list