Files
mdb/Makefile
Bastien COIGNOUX 7b3e50ff29 init
2026-05-03 22:17:48 +02:00

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é"