# ============================================================ # Makefile — Raccourcis pour le projet mb-app # Usage : make # ============================================================ .PHONY: help dev dev-stop prod prod-stop logs status setup-nas deploy # Affiche l'aide help: @echo "" @echo " Développement local" @echo " ─────────────────────────────────────────" @echo " make dev → Lance PocketBase en local" @echo " make dev-stop → Arrête le conteneur local" @echo " make logs → Logs PocketBase en temps réel" @echo " make status → État des conteneurs" @echo "" @echo " Production NAS" @echo " ─────────────────────────────────────────" @echo " make prod → Lance la stack complète NAS" @echo " make prod-stop → Arrête tout" @echo " make deploy → git pull + restart (sur le NAS)" @echo "" @echo " Setup" @echo " ─────────────────────────────────────────" @echo " make setup → Crée les dossiers manquants" @echo " make ssl → Obtient le certificat SSL (1ère fois)" @echo " make renew-ssl → Renouvelle le certificat SSL" @echo "" # ── DÉVELOPPEMENT LOCAL ────────────────────────────────────── dev: @echo "🚀 Lancement PocketBase en local..." @[ -f .env.local ] || (echo "❌ Fichier .env.local manquant ! Copier .env.example" && exit 1) docker compose -f docker/docker-compose.dev.yml up -d @echo "✅ PocketBase : http://localhost:8090" @echo "✅ Admin : http://localhost:8090/_/" dev-stop: docker compose -f docker/docker-compose.dev.yml down dev-reset: @echo "⚠️ Supprime les données locales de dev !" @read -p "Confirmer ? (oui/non) : " c; [ "$$c" = "oui" ] || exit 1 docker compose -f docker/docker-compose.dev.yml down rm -rf pocketbase/pb_data @echo "✅ Données supprimées" # ── PRODUCTION NAS ─────────────────────────────────────────── prod: @echo "🚀 Lancement stack production..." @[ -f .env.production ] || (echo "❌ Fichier .env.production manquant !" && exit 1) docker compose -f docker/docker-compose.prod.yml up -d @echo "✅ Stack lancée" prod-stop: docker compose -f docker/docker-compose.prod.yml down deploy: @echo "📦 Déploiement en cours..." git pull origin main docker compose -f docker/docker-compose.prod.yml restart pocketbase @echo "✅ Déployé" # ── LOGS & STATUS ──────────────────────────────────────────── logs: docker compose -f docker/docker-compose.dev.yml logs -f pocketbase logs-prod: docker compose -f docker/docker-compose.prod.yml logs -f pocketbase status: docker compose -f docker/docker-compose.dev.yml ps # ── SETUP ──────────────────────────────────────────────────── setup: @echo "📁 Création des dossiers..." mkdir -p pocketbase/pb_data mkdir -p pocketbase/pb_hooks mkdir -p pocketbase/pb_migrations @[ -f .env.local ] || cp .env.example .env.local @echo "✅ Structure prête" @echo "👉 Éditer .env.local avec votre clé Anthropic" setup-nas: @echo "📁 Création des dossiers sur le NAS..." mkdir -p /volume1/docker/mb-app/pb_data mkdir -p /volume1/docker/mb-app/ssl mkdir -p /volume1/docker/mb-app/duckdns @[ -f .env.production ] || cp .env.example .env.production @echo "✅ Dossiers NAS créés" @echo "👉 Éditer .env.production" ssl: @echo "🔐 Obtention certificat SSL..." @[ -f .env.production ] || (echo "❌ .env.production manquant" && exit 1) @source .env.production && docker run --rm \ -v /volume1/docker/mb-app/ssl:/etc/letsencrypt \ -v /tmp/certbot-webroot:/var/www/certbot \ -p 80:80 \ certbot/certbot certonly --standalone \ -d $$DUCKDNS_SUBDOMAINS.duckdns.org \ --non-interactive --agree-tos \ --email admin@example.com @echo "✅ Certificat obtenu" renew-ssl: docker run --rm \ -v /volume1/docker/mb-app/ssl:/etc/letsencrypt \ certbot/certbot renew --quiet docker compose -f docker/docker-compose.prod.yml restart nginx @echo "✅ Certificat renouvelé"