Initial commit: Hedena Gold monorepo.
First commit of the Hedena Gold product (separate from gold-bank): branding, package names, and deploy defaults aligned to the new brand; legacy Henza trees stay local-only via .gitignore.
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
# فهرست تنظیمات سرور اصلی
|
||||
|
||||
برای کسی که به سرور اصلی (سرور واقعیِ مشتریها) دسترسی دارد.
|
||||
|
||||
اگر موارد زیر درست نباشند، سرور باز هم روشن میشود ولی در گزارش سرور فهرست
|
||||
کامل ایرادها با یک هشدار بزرگ چاپ میشود و برای هر مورد جایگزین امن به کار
|
||||
میرود:
|
||||
|
||||
- کلیدهای `JWT_SECRET` و `JWT_CUSTOMER_SECRET`: یک کلید تصادفی یک بار ساخته و در
|
||||
جدول `Setting` نگه داشته میشود، پس با ریستارت عوض نمیشود.
|
||||
- `OTP_MASTER_CODE`: بیاثر میشود و کد ثابت کار نمیکند.
|
||||
- `CORS_ORIGINS`: همهی نشانیها مجازند.
|
||||
|
||||
باز هم بهتر است هر سه را درست تنظیم کنید و یک بار دوباره راهاندازی کنید.
|
||||
|
||||
این بررسی فقط در حالت اصلی (`NODE_ENV=production`) انجام میشود. تصویر داکرِ
|
||||
سرور همیشه در این حالت است.
|
||||
|
||||
---
|
||||
|
||||
## ۱. حذف کد ثابت ورود آزمایشی
|
||||
|
||||
| متغیر | مقدار درست |
|
||||
|---|---|
|
||||
| `OTP_MASTER_CODE` | **خالی** یا کلاً حذفشده |
|
||||
|
||||
تا وقتی این کد هست، هر کسی که آن را بداند وارد حساب **هر** مشتری میشود.
|
||||
|
||||
> سرور **آزمایشی**ای که عمداً این کد را لازم دارد، باید کنارش
|
||||
> `TEST_SERVER_ALLOW_MASTER_CODE=yes` بگذارد. این را **هرگز** روی سرور اصلی
|
||||
> نگذارید.
|
||||
|
||||
## ۲. کلید جدا برای مشتریها
|
||||
|
||||
| متغیر | مقدار درست |
|
||||
|---|---|
|
||||
| `JWT_SECRET` | یک رشتهی تصادفی، دستکم ۳۲ نویسه (کلید ورود مدیرها) |
|
||||
| `JWT_CUSTOMER_SECRET` | یک رشتهی تصادفیِ **دیگر**، دستکم ۳۲ نویسه (کلید ورود مشتریها و کارشناسها) |
|
||||
|
||||
دو مقدار **نباید یکی باشند**. ساختن مقدار تصادفی، روی هر سیستمی که Node دارد:
|
||||
|
||||
```
|
||||
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
|
||||
```
|
||||
|
||||
دو بار اجرا کنید و هر خروجی را برای یکی از دو متغیر بگذارید.
|
||||
|
||||
⚠ **عوض کردن این کلیدها همه را از حساب بیرون میکند.** مدیرها و مشتریها
|
||||
یک بار دوباره وارد میشوند. اطلاعات کسی از بین نمیرود.
|
||||
|
||||
⚠ اگر `ACCOUNTING_SECRET_KEY` خالی باشد، رمز ذخیرهشدهی نرمافزار حسابداری از
|
||||
`JWT_SECRET` ساخته میشود. با عوض شدن `JWT_SECRET` باید یک بار دوباره در
|
||||
«تنظیمات حسابداری» پنل وارد شوید. بهتر است `ACCOUNTING_SECRET_KEY` هم یک مقدار
|
||||
تصادفیِ جدا بگیرد و دیگر عوض نشود.
|
||||
|
||||
## ۳. نشانیهای مجاز
|
||||
|
||||
| متغیر | مقدار درست |
|
||||
|---|---|
|
||||
| `CORS_ORIGINS` | نشانی کامل پنل و اپها، با ویرگول جدا |
|
||||
|
||||
نمونه:
|
||||
|
||||
```
|
||||
CORS_ORIGINS=https://adm.henzagold.ir,https://app.henzagold.ir,https://app2.henzagold.ir
|
||||
```
|
||||
|
||||
- هر نشانی با `https://` شروع شود و **مسیر نداشته باشد**؛ مثلاً `/admin` در
|
||||
آخرش نیاید.
|
||||
- هر دامنهای که پنل یا یکی از دو اپ از آن باز میشود باید در فهرست باشد؛
|
||||
وگرنه آن صفحه نمیتواند با سرور حرف بزند.
|
||||
- `*` پذیرفته نمیشود.
|
||||
|
||||
## ۴. پیامک: نشانی سرور
|
||||
|
||||
| متغیر | مقدار درست |
|
||||
|---|---|
|
||||
| `SMS_RELAY_HOST` | **نشانی IP عمومی همین سرور** |
|
||||
|
||||
سرویس پیامک، سرور فرستنده را با این مقدار میشناسد. اگر خالی باشد، برنامه خودش
|
||||
نشانی عمومی سرور را پیدا میکند؛ ولی نوشتن آن مطمئنترین راه است. داخل داکر،
|
||||
نشانیِ خودِ برنامه یک نشانی داخلی (`172.x`) است و سرویس پیامک آن را نمیشناسد.
|
||||
|
||||
بعد از راهاندازی، در گزارش سرور خطی مثل `SMS relay host: …` نشانیای را که
|
||||
فرستاده میشود نشان میدهد. اگر هشدار «private address» دیدید، این متغیر را پر کنید.
|
||||
|
||||
---
|
||||
|
||||
## بعد از تنظیم
|
||||
|
||||
1. سرور را دوباره راهاندازی کنید.
|
||||
2. در گزارش سرور باید `Nest application successfully started` دیده شود.
|
||||
اگر سرور بالا نیامد، فهرست ایرادها همانجا چاپ شده است.
|
||||
3. پنل مدیریت و هر دو اپ را باز کنید و یک بار وارد شوید.
|
||||
4. ورود مشتری با پیامک را امتحان کنید. کد ثابت دیگر نباید کار کند.
|
||||
Reference in New Issue
Block a user