Files
MathApp/.env.production.example
Zareian eaa4b761dd stop a deploy from silently blocking the frontend or leaving 0000 open
سه حالتِ خراب که هیچ‌کدام در لاگِ سرور ردی نمی‌گذارند و فقط وقتی کشف می‌شدند
که یک آدم از بیرون اپ را دستی امتحان کند.

CORS_ALLOWED_ORIGINS فقط از env خوانده می‌شد و با DEBUG روشن به localhost
محدود می‌ماند. یعنی بک‌اندِ کاملاً سالم، ولی مرورگر همه‌ی درخواست‌های
math.tadrisino2.ir را بلاک می‌کند — خطایی که سمتِ سرور دیده نمی‌شود و فقط در
کنسولِ مرورگر پیداست. origin های شناخته‌شده حالا پیش‌فرضِ داخلِ کدند تا یک
متغیرِ فراموش‌شده اتصال را نشکند؛ env همچنان بازنویسی‌شان می‌کند.

/api/health حالا warnings هم می‌دهد. مهم‌ترینش: با DEBUG روشن روی سرورِ عمومی،
DEV_MASTER_OTP یعنی هر کسی با کدِ 0000 می‌تواند به‌جای هر شماره‌ای وارد شود.
این تا امروز فقط با خواندنِ تنظیماتِ سرور معلوم می‌شد، و ما به سرور دسترسی
نداریم. allowedOrigins هم برگردانده می‌شود تا مشکلِ CORS از بیرون قابلِ
تشخیص باشد.

deploy.sh قبل از دست زدن به دیتابیس متغیرهای لازم را بررسی می‌کند و با پیامِ
روشن می‌ایستد، به‌جای اینکه وسطِ کار بشکند و 502 بدهد.
.env.production.example همان‌ها را یک‌جا مستند می‌کند.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 20:46:23 +03:30

45 lines
2.5 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# نمونه‌ی فایلِ .env برای سرور. یک‌بار پر می‌شود و بعد دیگر کاری با آن نیست.
#
# بعد از پر کردن، هر آپدیت فقط این است:
# git pull && ./deploy.sh
# ─── اجباری ──────────────────────────────────────────────────────────────
# دامنه‌هایی که این سرویس روی آن‌ها سرو می‌شود (با ویرگول جدا).
DJANGO_ALLOWED_HOSTS=api.math.tadrisino2.ir
# ─── حالتِ پروداکشن ──────────────────────────────────────────────────────
# DJANGO_DEBUG را ست نکنید (یا 0 بگذارید).
#
# ⚠️ با DJANGO_DEBUG=1 روی یک سرورِ عمومی:
# • صفحه‌های خطا کلِ تنظیمات و traceback را نشان می‌دهند
# • کدِ ورودِ آزمایشیِ 0000 برای هر شماره‌ای پذیرفته می‌شود،
# یعنی هر کسی می‌تواند به‌جای هر کاربری وارد شود
DJANGO_DEBUG=0
# با DEBUG خاموش این دو اجباری‌اند:
DJANGO_SECRET_KEY=
# یک رشته‌ی تصادفیِ بلند. ساختنش:
# python -c "import secrets; print(secrets.token_urlsafe(64))"
CACHE_URL=redis://127.0.0.1:6379/1
# بدونِ کشِ مشترک، محدودیتِ نرخ بینِ workerهای gunicorn مشترک نیست.
# دامنه‌هایی که فرم/ادمین از آن‌ها POST می‌کند
CSRF_TRUSTED_ORIGINS=https://api.math.tadrisino2.ir
# ─── اختیاری ─────────────────────────────────────────────────────────────
# origin های فرانت. اگر خالی باشد از فهرستِ پیش‌فرضِ داخلِ کد استفاده می‌شود
# که https://math.tadrisino2.ir را شامل است — معمولاً لازم نیست ست شود.
# CORS_ALLOWED_ORIGINS=https://math.tadrisino2.ir
# کلیدهای سرویس‌های بیرونی
OPENAI_API_KEY=
OPENAI_BASE_URL=https://api.gapgpt.app/v1
QDRANT_URL=https://qdrant.tadrisino2.ir:443
QDRANT_API_KEY=
KAVENEGAR_API_KEY=
KAVENEGAR_SENDER=
# نامِ سرویسِ systemd تا deploy.sh خودش ری‌استارت کند
# TADRISINO_SERVICE=tadrisino