زیرساخت: رمزهای اجباری از .env + لایه تولید با TLS + healthcheck و مسیر سئوی Traefik + پشتیبانگیری
- docker-compose.yml همه مقادیر محرمانه را با ${VAR:?} از .env میخواند — بدون .env استک بالا نمیآید
- docker-compose.prod.yml: ورودی 443 + ریدایرکت HTTP به HTTPS + گواهی Let's Encrypt و قواعد Host برای همه روترها
- healthcheck بکاند (api/health) و فرانت (wget) + سوار کردن frontend/dist در بکاند برای تزریق متا + روتر سئو (robots/sitemap/blog/projects) با اولویت 50
- سرویس mc با پروفایل tools + scripts/backup.sh (pg_dump + آینه MinIO با نگهداری ۱۴ روزه)
- .env.example ریشه + بروزرسانی READMEها
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
#!/usr/bin/env bash
|
||||
# پشتیبانگیری روزانه — دیتابیس PostgreSQL (همه محتوای سایت) و تصاویر MinIO.
|
||||
#
|
||||
# اجرا: bash scripts/backup.sh
|
||||
# زمانبندی: cron (لینوکس) یا Task Scheduler (ویندوز)، مثلا هر شب ساعت ۳:
|
||||
# 0 3 * * * cd /path/to/aramesh-backend && bash scripts/backup.sh >> backups/backup.log 2>&1
|
||||
#
|
||||
# نگهداری: فایلهای قدیمیتر از RETENTION_DAYS (پیشفرض ۱۴) حذف میشوند.
|
||||
|
||||
set -euo pipefail
|
||||
cd "$(dirname "$0")/.."
|
||||
|
||||
RETENTION_DAYS="${RETENTION_DAYS:-14}"
|
||||
STAMP="$(date +%Y%m%d-%H%M%S)"
|
||||
mkdir -p backups
|
||||
|
||||
# متغیرهای .env (برای MINIO_ROOT_*) در دسترس قرار میگیرند
|
||||
if [ -f .env ]; then
|
||||
set -a
|
||||
# shellcheck disable=SC1091
|
||||
. ./.env
|
||||
set +a
|
||||
fi
|
||||
|
||||
echo "[backup] $STAMP"
|
||||
|
||||
# ۱) دیتابیس — همه متنها، مقالهها و تنظیمات سایت
|
||||
DB_FILE="backups/db-${STAMP}.sql.gz"
|
||||
docker compose exec -T db pg_dump -U aramesh arameshplaza | gzip > "$DB_FILE"
|
||||
echo "[backup] db: $DB_FILE ($(du -h "$DB_FILE" | cut -f1))"
|
||||
|
||||
# ۲) تصاویر MinIO — باکت aramesh-media
|
||||
docker compose run --rm -v "$(pwd)/backups:/backups" --entrypoint sh mc -c "
|
||||
mc alias set local http://minio:9000 \"\$MINIO_ROOT_USER\" \"\$MINIO_ROOT_PASSWORD\" >/dev/null &&
|
||||
mc mirror --overwrite local/aramesh-media /backups/images-${STAMP}
|
||||
"
|
||||
echo "[backup] images: backups/images-${STAMP}"
|
||||
|
||||
# ۳) پاکسازی نسخههای قدیمیتر
|
||||
find backups -name 'db-*.sql.gz' -mtime "+${RETENTION_DAYS}" -delete
|
||||
find backups -maxdepth 1 -type d -name 'images-*' -mtime "+${RETENTION_DAYS}" -exec rm -rf {} +
|
||||
echo "[backup] پاکسازی نسخههای قدیمیتر از ${RETENTION_DAYS} روز انجام شد"
|
||||
|
||||
echo "[backup] ✔ تمام شد"
|
||||
Reference in New Issue
Block a user