3 Commits
Author SHA1 Message Date
aramesh-site deploy b070125f51 fix(frontend): مسیرهای /assets/* هرگز به index.html برنگردند — مسموم‌شدن کش CDN
در پنجرهٔ تعویض کانتینر فرانت‌اند، درخواستِ هشِ جدید که در dist کانتینرِ در
حال اجرا نبود با fallback اسپا پاسخ 200ٔ text/html می‌گرفت؛ CDN (WCDN، SMART)
همین پاسخ HTML را زیر URL فایل جاوااسکریپت با هدر immutable یک‌ساله کش می‌کرد
و اسکریپت ماژول برای همهٔ بازدیدکننده‌ها می‌شکست (سایت روی پری‌لودر قفل می‌شد).
حالا فایل ناموجود در assets واقعاً 404 می‌دهد که کش نمی‌شود.
2026-09-30 10:53:46 +00:00
MMD ce0735d775 feat(stack): full overhaul — hardening, ops tooling, monitoring, analytics, chatbot
Security: deep /api/health (DB+MinIO probes, 503 on failure) + /api/live;
rate-limited public forms with honeypots; real client IP behind Traefik
(--proxy-headers); TipTap URL sanitization on write (nh3); non-root
containers + slim .dockerignore; prod MinIO console bound to 127.0.0.1;
HSTS/nosniff on TLS routers; JWT 8h; no default credentials in code.

Reliability: Alembic migrations (create_all baseline); graceful shutdown
(exec uvicorn); hardened backups (checksums, sanity check, freshness gauge,
optional rclone off-site) + restore.sh + hourly db-backup sidecar (ops
profile); stack.sh ops tooling (deploy/logs/health/backup/restore/monitoring);
.gitattributes LF for shell scripts.

Orchestration: json-file log rotation, pinned images, per-service memory
limits, edge/internal networks, Traefik ping/accesslog/metrics + flood
limiter, conditional minio-setup, pgvector db image, one-shot db-init
(umami + aramesh_chatbot databases).

Chatbot: unified from site-chatbot branch (RAG + pgvector, SSE, ChatWidget).

Monitoring: Prometheus/Alertmanager/Loki/Promtail/Grafana + cAdvisor,
node/postgres/blackbox exporters, provisioned dashboards and 10 alert
rules; alerts delivered to Bale (tapi.bale.ai — Telegram-compatible).

Analytics: Umami on shared Postgres, build-time tracker injection, custom
events (contact/newsletter/phone/chat/lang) via frontend/src/analytics.ts.

Hygiene: CSV export for contact messages and subscribers; upload image
optimization (Pillow); CI script + GitHub-compatible workflow; audit.sh;
gen-env.sh for strong credentials.
2026-09-19 00:24:57 +03:30
MMD 3a7c7b0908 زیرساخت: Traefik به‌جای nginx به‌عنوان نقطه ورود واحد + سرو MinIO
- سرویس traefik:v3 روی پورت ۵۱۷۳ (پورت هاست) — تنها نقطه ورود استک:
  /       → frontend (فایل‌های استاتیک SPA)
  /api    → backend:8000
  /media  → MinIO:9000 با rewrite به باکت aramesh-media
  مسیریابی با Docker labels در docker-compose.yml
- حذف کامل nginx: Caddy فقط فایل‌های استاتیک را سرو می‌کند
  (fallback به index.html برای SPA، کش یک‌ساله immutable برای assets/)
- سرویس minio + minio-setup (ساخت خودکار باکت و دسترسی عمومی خواندن —
  یک‌بار در اولین اجرا)؛ کنسول MinIO روی پورت ۹۰۰۱
- وابستگی backend به سلامت db و minio
- vite dev: پروکسی /api و /media به Traefik برای هم‌مبدأ بودن در توسعه
2026-09-06 20:49:17 +03:30