decide in the repo what the server should not have to guess

فایلِ نمونه‌ی قبلی هنوز چند جای خالی داشت که کسی باید پرشان می‌کرد، و دو بار
همین باعثِ رفت‌وبرگشت شد. حالا فقط چیزهایی جای خالی‌اند که واقعاً فقط آن طرف
می‌داند: کلیدهای سرویس‌های بیرونی و نامِ سرویسِ systemd.

بقیه از قبل تصمیم گرفته شده‌اند و اگر فایل خالی هم باشد سرویس بالا می‌آید.
حالتِ پیش‌فرض عمداً مرحله‌ی توسعه است (DEBUG=1) با ریسک‌هایش نوشته، نه
پروداکشن — چون وضعیتِ امروزِ پروژه همین است و فایلی که وضعیتِ واقعی را
توصیف نکند دوباره حدس‌زدنی می‌شود.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-13 21:09:12 +03:30
parent 37d66a4a4c
commit 3e31fea42e

View File

@@ -1,38 +1,37 @@
# نمونه‌ی فایلِ .env برای سرور. یک‌بار پر می‌شود و بعد دیگر کاری با آن نیست. # نمونه‌ی فایلِ .env برای سرور.
# #
# بعد از پر کردن، هر آپدیت فقط این است: # cp .env.production.example .env
#
# تقریباً هیچ چیزی لازم نیست پر شود. هر چیزی که ما می‌توانستیم از قبل تصمیم
# بگیریم، در خودِ کد پیش‌فرض شده: دامنه‌ها، origin های مجاز، کلیدِ امضا (اولین
# اجرا خودش یک کلیدِ تصادفی می‌سازد و نگه می‌دارد). حتی اگر این فایل خالی
# باشد سرویس بالا می‌آید.
#
# بعد از این، هر آپدیت فقط:
# git pull && ./deploy.sh # git pull && ./deploy.sh
# ─── اجباری ──────────────────────────────────────────────────────────────
# دامنه‌هایی که این سرویس روی آن‌ها سرو می‌شود (با ویرگول جدا).
DJANGO_ALLOWED_HOSTS=api.math.tadrisino2.ir
# ─── حالتِ پروداکشن ────────────────────────────────────────────────────── # ─── مرحله‌ی توسعه (وضعیتِ فعلی) ─────────────────────────────────────────
# DJANGO_DEBUG را ست نکنید (یا 0 بگذارید). # با DEBUG=1 اپ راحت‌تر بالا می‌آید و خطاها کامل دیده می‌شوند.
# #
# ⚠️ با DJANGO_DEBUG=1 روی یک سرورِ عمومی: # ⚠️ ولی روی یک سرورِ عمومی این دو ریسک را بپذیرید:
# • صفحه‌های خطا کلِ تنظیمات و traceback را نشان می‌دهند # • صفحه‌های خطا کلِ تنظیمات و traceback را نشان می‌دهند
# • کدِ ورودِ آزمایشیِ 0000 برای هر شماره‌ای پذیرفته می‌شود، # • کدِ ورودِ آزمایشیِ 0000 برای هر شماره‌ای پذیرفته می‌شود،
# یعنی هر کسی می‌تواند به‌جای هر کاربری وارد شود # یعنی هر کسی می‌تواند به‌جای هر کاربری وارد شود
DJANGO_DEBUG=0 #
# تا وقتی کاربرِ واقعی ندارید اشکالی ندارد. قبل از اولین کاربرِ واقعی
# حتماً 0 کنید.
DJANGO_DEBUG=1
# با DEBUG خاموش این دو اجباری‌اند:
DJANGO_SECRET_KEY=
# یک رشته‌ی تصادفیِ بلند. ساختنش:
# python -c "import secrets; print(secrets.token_urlsafe(64))"
CACHE_URL=redis://127.0.0.1:6379/1 # ─── ری‌استارتِ خودکار ───────────────────────────────────────────────────
# بدونِ کشِ مشترک، محدودیتِ نرخ بینِ workerهای gunicorn مشترک نیست. # نامِ سرویسِ systemd. فقط شما می‌دانید چیست؛ یک‌بار پر کنید تا deploy.sh
# دیگر خودش ری‌استارت کند و لازم نباشد دستی بزنید.
# TADRISINO_SERVICE=
# دامنه‌هایی که فرم/ادمین از آن‌ها 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_API_KEY=
OPENAI_BASE_URL=https://api.gapgpt.app/v1 OPENAI_BASE_URL=https://api.gapgpt.app/v1
QDRANT_URL=https://qdrant.tadrisino2.ir:443 QDRANT_URL=https://qdrant.tadrisino2.ir:443
@@ -40,5 +39,17 @@ QDRANT_API_KEY=
KAVENEGAR_API_KEY= KAVENEGAR_API_KEY=
KAVENEGAR_SENDER= KAVENEGAR_SENDER=
# نامِ سرویسِ systemd تا deploy.sh خودش ری‌استارت کند
# TADRISINO_SERVICE=tadrisino # ─── وقتی به پروداکشنِ واقعی رسیدید ──────────────────────────────────────
# این‌ها را آن موقع باز کنید، الان لازم نیستند:
#
# DJANGO_DEBUG=0
# CACHE_URL=redis://127.0.0.1:6379/1
# بدونِ Redis سرویس بالا می‌آید ولی محدودیتِ نرخ بینِ workerها مشترک
# نیست؛ /api/health همین را هشدار می‌دهد.
#
# این‌ها پیش‌فرضِ درست دارند و فقط اگر دامنه عوض شد لازم می‌شوند:
# DJANGO_ALLOWED_HOSTS=api.math.tadrisino2.ir,math.tadrisino2.ir
# CSRF_TRUSTED_ORIGINS=https://api.math.tadrisino2.ir
# CORS_ALLOWED_ORIGINS=https://math.tadrisino2.ir
# DJANGO_SECRET_KEY=