117 lines
4.5 KiB
Makefile
117 lines
4.5 KiB
Makefile
# ============================================================
|
|
# Makefile — Raccourcis pour le projet mb-app
|
|
# Usage : make <commande>
|
|
# ============================================================
|
|
|
|
.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é"
|