init
This commit is contained in:
116
Makefile
Normal file
116
Makefile
Normal file
@ -0,0 +1,116 @@
|
||||
# ============================================================
|
||||
# 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é"
|
||||
Reference in New Issue
Block a user