#!/bin/bash # Script de déploiement de Cleo vers l'environnement de développement cd /Users/pierre/dev/cleo # Configuration du serveur hôte Debian 12 HOST_SSH_HOST=195.154.80.116 # Adresse IP du serveur hôte HOST_SSH_USER=root # Utilisateur SSH sur le serveur hôte HOST_SSH_PORT=22 # Port SSH du serveur hôte HOST_SSH_KEY=/Users/pierre/.ssh/id_rsa_mbpi # Clé SSH privée pour accéder au serveur hôte # Configuration du conteneur Incus hébergeant cette application CT_PROJECT_NAME=default # Nom du projet Incus où se trouve le conteneur CT_NAME=dva-front # Nom du conteneur Incus CT_IP=13.23.33.42 # IP interne du conteneur Incus CT_SSH_USER=root # Utilisateur SSH dans le conteneur CT_SSH_PORT=22 # Port SSH interne du conteneur CT_SSH_KEY=/root/.ssh/id_rsa_in3_pierre # Clé SSH privée pour accéder au conteneur # Configuration de l'application DOMAIN_NAME=dcleo.unikoffice.com # Nom de domaine du site SERVER_PORT=3000 # Port du serveur Node.js ADMIN_PORT=3001 # Port du serveur d'administration DEPLOY_DIR=/var/www # Répertoire de déploiement sur le conteneur APP_NAME=cleo # Nom de l'application et du fichier de config nginx # Propriétaire et groupe pour les fichiers et dossiers de destination OWNER=nginx GROUP=nginx # Vérifier que les variables nécessaires sont définies if [ -z "$HOST_SSH_HOST" ] || [ -z "$HOST_SSH_USER" ] || [ -z "$CT_NAME" ] || [ -z "$CT_PROJECT_NAME" ]; then echo "Erreur: Variables HOST_SSH_HOST, HOST_SSH_USER, CT_NAME et CT_PROJECT_NAME requises dans $ENV_FILE" exit 1 fi # Variables pour les alertes (optionnelles) ALERT_EMAIL=${ALERT_EMAIL:-""} DISCORD_WEBHOOK_URL=${DISCORD_WEBHOOK_URL:-""} # Utiliser les valeurs par défaut si non définies HOST_SSH_PORT=${HOST_SSH_PORT:-22} SERVER_PORT=${SERVER_PORT:-3000} ADMIN_PORT=${ADMIN_PORT:-3001} DOMAIN_NAME=${DOMAIN_NAME:-$CT_IP} DEPLOY_DIR=${DEPLOY_DIR:-/var/www} APP_NAME=${APP_NAME:-d6soft} SUB_DIR=${SUB_DIR:-web} # Afficher les paramètres echo "=== Paramètres de déploiement ===" echo "Serveur hôte: $HOST_SSH_USER@$HOST_SSH_HOST:$HOST_SSH_PORT" echo "Projet Incus: $CT_PROJECT_NAME" echo "Conteneur: $CT_NAME" echo "Domaine: $DOMAIN_NAME" echo "Répertoire de déploiement: $DEPLOY_DIR/$APP_NAME/$SUB_DIR" echo "Propriétaire: $OWNER" echo "Groupe: $GROUP" echo "==================================" # Définir les options SSH SSH_OPTS="-p $HOST_SSH_PORT" SCP_OPTS="-P $HOST_SSH_PORT" if [ ! -z "$HOST_SSH_KEY" ]; then SSH_OPTS="$SSH_OPTS -i \"$HOST_SSH_KEY\"" SCP_OPTS="$SCP_OPTS -i \"$HOST_SSH_KEY\"" fi # 1. Copier les fichiers vers le HOST incus echo "=== Copie des fichiers vers le HOST Incus ===" rsync -avz --progress --exclude='.log' --exclude='pub/files/upload' -e "ssh $SSH_OPTS" ./ $HOST_SSH_USER@$HOST_SSH_HOST:/tmp/$APP_NAME/ # 2. Créer le répertoire de destination dans le conteneur echo "=== Création du répertoire de destination dans le conteneur ===" eval "ssh $SSH_OPTS $HOST_SSH_USER@$HOST_SSH_HOST \"incus project switch $CT_PROJECT_NAME\"" eval "ssh $SSH_OPTS $HOST_SSH_USER@$HOST_SSH_HOST \"incus exec $CT_NAME -- mkdir -p $DEPLOY_DIR/$APP_NAME\"" # 3. Transférer les fichiers vers le conteneur Incus echo "=== Transfert des fichiers vers le conteneur Incus ===" eval "ssh $SSH_OPTS $HOST_SSH_USER@$HOST_SSH_HOST \"incus file push --recursive /tmp/$APP_NAME/. $CT_NAME/$DEPLOY_DIR/\"" # 4. Configurer les permissions dans le conteneur echo "=== Configuration des permissions dans le conteneur ===" eval "ssh $SSH_OPTS $HOST_SSH_USER@$HOST_SSH_HOST \"incus exec $CT_NAME -- sh -c 'chown -R $OWNER:$GROUP $DEPLOY_DIR/$APP_NAME && \ find $DEPLOY_DIR/$APP_NAME -type d -exec chmod 755 {} \\; && \ find $DEPLOY_DIR/$APP_NAME -type f -exec chmod 644 {} \\; && \ if [ -d $DEPLOY_DIR/$APP_NAME/server/logs ]; then chmod 775 $DEPLOY_DIR/$APP_NAME/server/logs; fi && \ if [ -d $DEPLOY_DIR/$APP_NAME/mda/backend/logs ]; then chmod 775 $DEPLOY_DIR/$APP_NAME/mda/backend/logs; fi && \ if [ -d $DEPLOY_DIR/$APP_NAME/mda/db ]; then chmod 775 $DEPLOY_DIR/$APP_NAME/mda/db; fi'\"" # 5. Nettoyer les fichiers temporaires sur l'hôte echo "=== Nettoyage des fichiers temporaires sur l'hôte ===" eval "ssh $SSH_OPTS $HOST_SSH_USER@$HOST_SSH_HOST \"rm -rf /tmp/$APP_NAME\"" echo "===================================================" echo "Déploiement terminé avec succès !" echo "===================================================" echo "Votre site $APP_NAME est maintenant déployé dans le conteneur $CT_NAME." echo "Chemin de déploiement: $DEPLOY_DIR/$APP_NAME/$SUB_DIR"