#!/usr/bin/env bash # Adopte la stack comme ressource "Docker Compose" gérée par Coolify (via l'API). # Prérequis : token API Coolify dans $COOLIFY_TOKEN_FILE (Settings -> API Tokens, read/write). # # ⚠️ Coolify remappe les volumes nommés en _* et IGNORE `external:` -> la stack repart sur # des volumes VIDES. Sur un déploiement neuf : ré-init ensuite (20/30/40). Sur une stack avec # données : préférer des bind-mounts absolus (host dirs) plutôt que des volumes nommés. source "$(dirname "$0")/lib.sh" load_secrets [ -f "$COOLIFY_TOKEN_FILE" ] || { echo "❌ Token Coolify absent ($COOLIFY_TOKEN_FILE)"; exit 1; } COMPOSE_FILE="$ROOT/docker-compose.coolify.yml" log "1) Projet 'arkindex' (si absent)" if [ -z "${COOLIFY_PROJECT_UUID:-}" ]; then COOLIFY_PROJECT_UUID=$(capi POST /projects -d '{"name":"arkindex","description":"Arkindex full stack"}' \ | python3 -c 'import sys,json;print(json.load(sys.stdin)["uuid"])') echo " project_uuid=$COOLIFY_PROJECT_UUID (à reporter dans deploy.conf)" fi log "2) Création du service (docker_compose_raw en BASE64)" BODY=$(python3 - "$COMPOSE_FILE" </dev/null) [ -n "$SVC" ] || { echo "❌ Échec création service: $RESP"; exit 1; } echo " service_uuid=$SVC (à reporter dans deploy.conf : COOLIFY_SERVICE_UUID + CONTAINER_SUFFIX=-$SVC)" log "3) Variables d'env (secrets) sur le service" for K in PG_PASS GK_ID GK_SECRET; do V="${!K}" capi PATCH "/services/$SVC/envs" -d "{\"key\":\"$K\",\"value\":\"$V\"}" >/dev/null \ || capi POST "/services/$SVC/envs" -d "{\"key\":\"$K\",\"value\":\"$V\"}" >/dev/null done ok "Env posées." warn "Étape suivante MANUELLE (coupure) :" echo " cd $ROOT && docker compose down # arrête la stack CLI (garde les volumes)" echo " # UNE SEULE fois :" echo " curl -s -X POST -H \"Authorization: Bearer \$(cat $COOLIFY_TOKEN_FILE)\" \\" echo " \"$COOLIFY_API/deploy?uuid=$SVC\"" echo " # puis ré-init sur les volumes neufs :" echo " CONTAINER_SUFFIX=-$SVC scripts/20-garage-init.sh" echo " CONTAINER_SUFFIX=-$SVC scripts/30-arkindex-init.sh" echo " CONTAINER_SUFFIX=-$SVC scripts/40-create-admin.sh"