# Guide d'Installation Complet - Lucien-sens-bon Ce guide détaille comment installer votre boutique MedusaJS (Backend) + Next.js (Frontend) sur votre serveur "huitral" avec Docker et Apache. ## 1. Pré-requis Assurez-vous d'avoir : - **Docker** et **Docker Compose** installés. - Une base de données **PostgreSQL** accessible (version 12+ recommandée). - **Apache** installé sur la machine hôte. ## 1.1 Nomenclature DNS (ruka.lan) Objectif : utiliser des noms internes stables sur `ruka.lan`, puis ouvrir les mêmes noms en DNS public plus tard avec un minimum d'adaptations. Format recommande : ``` ...ruka.lan ``` Exemples pour Lucien Sens Bon (projet `lsb`) sur `huitral` : - `www.lsb.huitral.ruka.lan` : storefront (site public) - `api.lsb.huitral.ruka.lan` : API Medusa - `admin.lsb.huitral.ruka.lan` : admin (optionnel, sinon /app sur l'API) Conseil : gardez cette nomenclature pour tous vos projets afin de pouvoir passer en DNS public sans changer les URLs dans l'application. ## 2. Configuration Initiale 1. **Variables d'environnement** : Copiez le fichier d'exemple pour créer votre fichier de configuration réel : ```bash cp env-example .env ``` 2. **Éditez le fichier `.env`** : Modifiez les valeurs, notamment la connexion à la base de données (`DATABASE_URL`). *Note : Si votre Postgres est sur la machine hôte (hors Docker), utilisez `host.docker.internal` comme hôte dans l'URL de connexion, ou l'IP locale du serveur.* Exemple de valeurs utilisées dans ce projet (PostgreSQL sur `npagnun`) : ```ini DATABASE_URL=postgres://luciensbdb:VOTRE_MOT_DE_PASSE_DB@192.168.99.35:5432/sens_bon_db NEXT_PUBLIC_MEDUSA_BACKEND_URL=http://api.lucien-sens-bon.com ADMIN_CORS=http://api.lucien-sens-bon.com STORE_CORS=http://lucien-sens-bon.com ``` Édition avec `vim` : ```bash vim .env ``` ## 2.1 Dépôt Git (Chillka) et récupération sur Huitral Cette section est à faire **avant** le reste si vous déployez depuis Git. ### 2.1.1 Corriger le HEAD du dépôt bare (Chillka) Sur `chillka` : ```bash git --git-dir=/var/data/git/repositories/lucien-sens-bon.git symbolic-ref HEAD refs/heads/main ``` ### 2.1.2 Cloner le projet sur `huitral` Sur `huitral` : ```bash cd /var/www git clone toshiro@chillka:/var/data/git/repositories/lucien-sens-bon.git cd lucien-sens-bon git fetch origin git checkout -b main origin/main ``` > Si votre branche distante est `master`, remplacez `main` par `master` dans les commandes ci‑dessus. ## 3. Installation et Démarrage Lancez les conteneurs (cela va construire les images Backend et Storefront) : ```bash docker compose up -d --build ``` > Sur Debian 13, utilisez de préférence `docker compose` (sans tiret) si le plugin est installé. ### 3.1 Commandes Docker utiles ```bash # Statut des conteneurs docker compose ps # Logs en temps réel docker compose logs -f # Redémarrer tous les services docker compose restart # Arrêter tous les services docker compose down ``` ### 3.2 Dépannage Docker (erreurs courantes) ```bash # Si "permission denied" sur /var/run/docker.sock sudo usermod -aG docker $USER # Déconnectez-vous/reconnectez-vous, puis retestez : docker compose ps # Si "npm ci" échoue (pas de package-lock.json) # Le Dockerfile du storefront bascule automatiquement sur "npm install". # Relancez ensuite le build : docker compose build --no-cache storefront docker compose up -d --build ``` Cela va démarrer 3 conteneurs : - `medusa-backend` (API) sur le port 9000 - `medusa-storefront` (Site Web) sur le port 8000 - `medusa-redis` (Cache) sur le port 6379 ## 4. Initialisation de la Base de Données Une fois les conteneurs démarrés, vous devez initialiser la base de données Medusa (créer les tables) et créer un utilisateur administrateur. 1. **Lancer les migrations et le "seed" (données de démo)** : ```bash docker exec -it medusa-backend npm run seed ``` *(Si cela échoue, assurez-vous que la base de données est vide ou que la connexion est correcte).* 2. **Créer un utilisateur Admin** : ```bash docker exec -it medusa-backend medusa user -e admin@lucien.com -p supersecret ``` *(Remplacez l'email et le mot de passe par les vôtres).* ## 5. Configuration Apache (Reverse Proxy) Pour rendre le site accessible depuis le web (port 80/443), configurez Apache sur votre machine hôte. 1. **Copiez la configuration** : Utilisez le contenu du fichier `apache-vhost.conf` fourni dans ce projet et ajoutez-le à votre configuration Apache (généralement dans `/etc/apache2/sites-available/lucien.conf`). 2. **Activez les modules Proxy** (si ce n'est pas déjà fait) : ```bash sudo a2enmod proxy sudo a2enmod proxy_http ``` 3. **Activez le site et redémarrez Apache** : ```bash sudo a2ensite lucien.conf sudo service apache2 restart ``` ## 6. Vérification - **Storefront** : Accédez à `http://lucien-sens-bon.com` (ou votre domaine). Vous devriez voir la page d'accueil. - **Admin** : Accédez à `http://api.lucien-sens-bon.com/app` (le dashboard admin est servi par le backend). Connectez-vous avec l'utilisateur créé à l'étape 4. ## 7. Dépôt Git (Chillka) et déploiement sur Huitral Cette section documente la mise en place du dépôt Git **bare** sur le serveur `chillka` et le déploiement du projet sur `huitral`. ### 7.1 Créer le dépôt bare sur `chillka` Sur `chillka` (root ou sudo) : ```bash sudo mkdir -p /var/data/git/repositories/lucien-sens-bon.git sudo git init --bare /var/data/git/repositories/lucien-sens-bon.git sudo chown -R toshiro:git-group-users /var/data/git/repositories/lucien-sens-bon.git ``` ### 7.2 Corriger les permissions (si `Permission denied`) Le dossier parent doit être accessible au groupe `git-group-users` : ```bash sudo chgrp -R git-group-users /var/data/git/repositories sudo chmod -R 2775 /var/data/git/repositories ``` ### 7.3 Pousser le projet vers `chillka` (depuis votre machine locale) Dans le dossier du projet : ```bash git init git add . git commit -m "Initial commit: Medusa Backend + Storefront + Config" git remote add origin toshiro@chillka:/var/data/git/repositories/lucien-sens-bon.git git push -u origin main ``` > Si votre branche locale s'appelle `master`, utilisez : > ```bash > git push -u origin master > ``` ### 7.4 Récupérer le projet sur `huitral` Sur `huitral` : ```bash cd /var/www git clone toshiro@chillka:/var/data/git/repositories/lucien-sens-bon.git lucien-sens-bon cd lucien-sens-bon ``` ## 7. Paiements Crypto Pour activer les paiements Crypto, nous vous conseillons d'installer un plugin comme `medusa-payment-coinbase` ou d'utiliser une intégration Stripe Crypto si disponible. L'ajout d'un plugin se fait en 2 étapes : 1. Ajouter le package dans `backend/package.json`. 2. Ajouter la configuration dans `backend/medusa-config.js`. 3. Reconstruire le conteneur (`docker-compose up -d --build`).