feat: CI/CD, per-domain HTTPS, backup, config generator
- sites.yml — единый источник истины для всех сайтов - generate-configs.sh — генератор nginx конфигов, certbot domains.txt, .env - nginx: per-domain HTTPS (вместо all-or-nothing switch-config) - certbot: единый renew-all.sh, динамический init (без 5 дублирующих скриптов) - backup: контейнер с pg_dump + rclone (Яндекс.Диск), ежедневно в 3AM - Gitea + Gitea Runner в docker-compose (self-hosted Git + CI/CD) - .gitea/workflows/deploy.yml — CI/CD pipeline: push → авто-деплой - Makefile: generate-configs, reconfig, deploy, backup, restore, gitea, help
This commit is contained in:
+118
-1
@@ -237,4 +237,121 @@ start_yalarba:
|
||||
docker compose up yalarba -d
|
||||
|
||||
# Полный цикл обновления yalarba-nuxt
|
||||
yalarba: stop_yalarba git build_yalarba start_yalarba wn
|
||||
yalarba: stop_yalarba git build_yalarba start_yalarba wn
|
||||
|
||||
# ═══════════════════════════════════════════════
|
||||
# НОВЫЕ ЦЕЛИ: generate-configs, deploy, backup
|
||||
# ═══════════════════════════════════════════════
|
||||
|
||||
# Генерация конфигов из sites.yml
|
||||
generate-configs:
|
||||
bash generate-configs.sh
|
||||
|
||||
# Генерация + рестарт nginx
|
||||
reconfig: generate-configs
|
||||
docker compose restart nginx
|
||||
$(MAKE) wn
|
||||
|
||||
# Авто-детект изменённых сервисов и деплой только их
|
||||
deploy: git
|
||||
@echo "=== Detecting changes ==="
|
||||
@CHANGED=$$(git diff --name-only HEAD~1 HEAD | grep -oP 'main_dc/\K[^/]+' | sort -u); \
|
||||
for svc in $$CHANGED; do \
|
||||
case "$$svc" in \
|
||||
BB) name="api_bb" ;; \
|
||||
certbot) name="certbot" ;; \
|
||||
backup) name="backup" ;; \
|
||||
gitea) name="gitea" ;; \
|
||||
*) name="$$svc" ;; \
|
||||
esac; \
|
||||
if grep -q "^ $$name:" docker-compose.yml 2>/dev/null; then \
|
||||
echo " → Rebuilding $$name..."; \
|
||||
$(MAKE) stop_$$name build_$$name start_$$name 2>/dev/null || \
|
||||
$(MAKE) stop_$$svc build_$$svc start_$$svc 2>/dev/null || true; \
|
||||
fi; \
|
||||
done; \
|
||||
if echo "$$CHANGED" | grep -q 'sites.yml\|nginx'; then \
|
||||
echo " → Regenerating configs..."; \
|
||||
bash generate-configs.sh; \
|
||||
docker compose restart nginx; \
|
||||
fi
|
||||
|
||||
# Ручной запуск бэкапа
|
||||
backup:
|
||||
docker compose exec backup /opt/backup.sh
|
||||
|
||||
# Ручной запуск бэкапа (разовый контейнер)
|
||||
backup-run:
|
||||
docker compose run --rm backup /opt/backup.sh
|
||||
|
||||
# Восстановление из бэкапа: make restore [DATE=2026-06-11]
|
||||
restore:
|
||||
docker compose run --rm backup /opt/restore.sh $(DATE)
|
||||
|
||||
# Gitea — полный цикл обновления
|
||||
gitea: stop_gitea git build_gitea start_gitea wn
|
||||
|
||||
stop_gitea:
|
||||
docker compose down gitea
|
||||
|
||||
build_gitea:
|
||||
docker compose build gitea --no-cache
|
||||
|
||||
start_gitea:
|
||||
docker compose up gitea -d
|
||||
|
||||
# Gitea Runner — полный цикл
|
||||
gitea-runner: stop_gitea-runner git build_gitea-runner start_gitea-runner wn
|
||||
|
||||
stop_gitea-runner:
|
||||
docker compose down gitea-runner
|
||||
|
||||
build_gitea-runner:
|
||||
docker compose build gitea-runner --no-cache
|
||||
|
||||
start_gitea-runner:
|
||||
docker compose up gitea-runner -d
|
||||
|
||||
# Gitea first-time setup helper
|
||||
gitea-setup:
|
||||
@echo "=== Gitea Setup ==="
|
||||
@echo "1. Open http://94.41.23.97:3001 in browser"
|
||||
@echo "2. Complete initial setup (DB: SQLite3 is fine)"
|
||||
@echo "3. Create admin user"
|
||||
@echo "4. Create new repository 'tp' and push:"
|
||||
@echo " git remote add gitea http://94.41.23.97:3001/USER/tp.git"
|
||||
@echo " git push -u gitea main"
|
||||
@echo "5. Register runner:"
|
||||
@echo " Settings → Actions → Runners → Create Token"
|
||||
@echo " Update GITEA_RUNNER_REGISTRATION_TOKEN in docker-compose.yml"
|
||||
@echo " Then: docker compose up -d gitea-runner"
|
||||
@echo "6. Add secrets in repo Settings → Actions → Secrets:"
|
||||
@echo " (none needed — runner runs locally)"
|
||||
|
||||
# Показать все доступные цели
|
||||
help:
|
||||
@echo "=== Make targets ==="
|
||||
@echo ""
|
||||
@echo "Site management:"
|
||||
@echo " generate-configs — generate nginx configs from sites.yml"
|
||||
@echo " reconfig — generate configs + restart nginx"
|
||||
@echo ""
|
||||
@echo "Deploy:"
|
||||
@echo " all — full cycle all services"
|
||||
@echo " deploy — auto-detect changes, rebuild only changed"
|
||||
@echo " <service> — full cycle for one service"
|
||||
@echo ""
|
||||
@echo "Backup:"
|
||||
@echo " backup — run backup via running container"
|
||||
@echo " backup-run — run backup in one-shot container"
|
||||
@echo " restore DATE=... — restore from backup"
|
||||
@echo ""
|
||||
@echo "Gitea:"
|
||||
@echo " gitea — full cycle Gitea"
|
||||
@echo " gitea-runner — full cycle Runner"
|
||||
@echo " gitea-setup — first-time setup instructions"
|
||||
@echo ""
|
||||
@echo "Monitoring:"
|
||||
@echo " wn — watch docker ps"
|
||||
@echo " logs_<service> — logs for a service"
|
||||
@echo " bb_db — psql into bb_db"
|
||||
Reference in New Issue
Block a user