Dernière mise à jour : 16/02/2026 (vérifié via GitLab API + docker ps)
| Projet | Port | Domaine nginx | Status |
|---|---|---|---|
| ai-orchestrator | 5501 | ai-orchestrator.33800 | ✅ healthy |
| authentificator | 8284 | auth.33800 | ✅ healthy |
| browser-connector | 5404 | browser.33800 | ✅ healthy |
| claude-memory | 5510 | claude-memory.33800 | ✅ healthy |
| claude-memory-front | 5511 | memory.33800 | ✅ healthy |
| connectors-api | 5403 (via wireguard-sidecar) | connectors.33800 | ✅ healthy |
| connectors-front | 5402 (blue-green) | connectors-front.33800 | ✅ healthy |
| dashboard-33800 (backend) | 5520 | dashboard-api.33800 | ✅ healthy |
| dashboard-33800-frontend | 5521 | dashboard.33800 | ✅ healthy |
| needfinder | 5200 | needfinder-api.33800 | ✅ healthy |
| notif-logger | 5300 | notif-logger.33800 | ⚠️ unhealthy |
| qwik-interface-generator | 5505 | qig.33800 | ✅ healthy |
| qwikpress | 3002 | qwikpress.33800 | ✅ healthy |
| qwikpress (file-mode) | 3003 | qwikpress-file.33800 | ✅ healthy |
| test-deploy | 3050 | test-deploy.33800 | ✅ healthy |
| ulias-org | 5515 | ulias-org.33800 | ✅ healthy |
| ulias-org-web | 5516 (blue-green) | ulias-web.33800 | ✅ healthy |
| yolo-api | 9200 | yolo.33800 | ✅ healthy |
| Container | Status |
|---|---|
| ai-api-ai-api-1 | ✅ PROD |
| ffmpeg-api-ffmpeg-api-1 | ✅ PROD |
| jellylink-api-jellylink-api-1 | ✅ PROD |
| medias-api-medias-api-1 | ✅ PROD |
| notifications-webapp-* | ✅ PROD |
| tintech-api-tintech-api-1 | ✅ PROD |
| ulias-ulias-1 | ✅ PROD |
Système de déploiement avec health check et rollback automatique.
Scripts : /stock_8to/33800-stack/scripts/deploy/
| Fichier | Description |
|---|---|
| smart-deploy.sh | Script principal |
| rollback.sh | Rollback manuel |
| lib/health.sh | Health check enrichi |
| lib/notifications.sh | Notifications ntfy |
| lib/registry.sh | Registre des services |
| strategies/docker.sh | Déploiement Docker |
Le healthcheck est adapté selon le type d'image :
# Fonction get_healthcheck_cmd() dans docker.sh
case "$type" in
node|bun|qwik|next)
# Node.js disponible
node -e "require('http').get(...)"
;;
*)
# Python, custom → curl
curl -sf http://localhost:${port}${health}
;;
esac
Créer conf.prod.gouroubleu.yml :
name: "mon-projet"
target: "prod-portainer"
type: "node" # node|bun|qwik|next|python|custom
domain: "mon-projet.33800.nowhere84.com"
port: 3000
health: "/health"
services:
- ntfy
nginx:
enabled: true
ssl: true
private: true # Restriction IP (defaut: true)
public_paths: # Bypass restrictions IP pour ces chemins
- /api/oauth/callback
- /health
| Target | Type | Host |
|---|---|---|
| prod-portainer | docker | 192.168.1.12 |
| dev-portainer | docker | 192.168.1.51 |
| nginx | files | 192.168.1.104 |
| o2switch | remote | SSH alias |
| win11 | remote | 192.168.1.30 |
git push main
│
▼
┌─────────┐ ┌─────────┐ ┌──────────────┐ ┌─────────────┐
│ BUILD │───►│ PUSH │───►│ DEPLOY │───►│ HEALTH CHECK│
│ docker │ │registry │ │ docker up │ │ + rollback │
└─────────┘ └─────────┘ └──────────────┘ └─────────────┘
| Composant | URL | Rôle |
|---|---|---|
| GitLab | gitlab.33800.nowhere84.com | Code + CI/CD |
| Registry | registry.33800.nowhere84.com | Images Docker |
| Runner | prod-portainer | Exécution jobs |
| Dashboard | dashboard.33800.nowhere84.com | Status services (Qwik SSR) |
include:
- project: 'gouroubleu/ci-templates'
file: '/deploy.yml'
deploy-prod:
extends: .deploy-base
rules:
- if: $CI_COMMIT_BRANCH == "main"
variables:
DEPLOY_ENV: "prod"
DEPLOY_CONFIG: "conf.prod.gouroubleu.yml"
# Relancer une pipeline
curl -X POST --header "PRIVATE-TOKEN: $TOKEN" \
"https://gitlab.33800.nowhere84.com/api/v4/projects/{id}/pipeline?ref=main"
# Archiver un projet
curl -X POST --header "PRIVATE-TOKEN: $TOKEN" \
"https://gitlab.33800.nowhere84.com/api/v4/projects/{id}/archive"
# Désarchiver un projet
curl -X POST --header "PRIVATE-TOKEN: $TOKEN" \
"https://gitlab.33800.nowhere84.com/api/v4/projects/{id}/unarchive"
# Lister projets actifs
curl --header "PRIVATE-TOKEN: $TOKEN" \
"https://gitlab.33800.nowhere84.com/api/v4/projects?archived=false"