# نصب روی hosting.stormvps.ir

این بسته کد توسعه است؛ هنوز روی PHP/MySQL اجرا نشده و APK با تونل واقعی Xray آماده نیست. این راهنما نصب تازه را پوشش می‌دهد. برای دیتابیس نسخه قبلی، فایل PRICING-ADMIN.md و migration مربوط به نسخه نصب‌شده را بخوانید؛ schema را روی داده‌های موجود کورکورانه اجرا نکنید.

## ۱. مسیر دامنه

در بخش Domains سی‌پنل، Document Root دامنه hosting.stormvps.ir را بررسی کنید. بسته فرض می‌کند این مسیر `/home/CPANELUSER/public_html` است. در این حالت ZIP را داخل Home باز کنید تا `nava-backend` کنار `public_html` باشد و فایل‌های عمومی در `public_html/api` قرار بگیرند. فایل‌های سایت موجود را جایگزین نکنید.

اگر Document Root متفاوت است، پوشه api را داخل همان Document Root و پوشه nava-backend را کنار آن Document Root قرار دهید؛ front controllerها backend را یک سطح بالاتر از Document Root پیدا می‌کنند. backend، فایل config.php، SQL و رسیدها نباید زیر هیچ مسیر عمومی وب قرار بگیرند. اگر Document Root تو در تو و زیر public_html است، این چیدمان مناسب نیست و مسیر خصوصی bootstrap باید پیش از نصب اصلاح شود.

## ۲. PHP و دیتابیس

PHP 8.2 یا جدیدتر، ۶۴ بیتی، با pdo_mysql، curl، sodium، json، openssl، fileinfo و gd انتخاب کنید. دیتابیس و کاربر اختصاصی MySQL بسازید، کاربر را به دیتابیس متصل کنید و schema.mysql.sql را در phpMyAdmin همان دیتابیس import کنید.

بیرون public_html، config.example.php را به config.php کپی کنید. مقادیر db.name، db.user و db.password را با اطلاعات کامل سی‌پنل، شامل پیشوند نام اکانت، پر کنید. db.host معمولاً localhost است؛ مقدار واقعی را از هاست بگیرید. رمز دیتابیس را فقط داخل همین فایل وارد کنید؛ در چت ارسال نکنید.

در Terminal با PHP انتخاب‌شده هاست اجرا کنید:

```sh
php /home/CPANELUSER/nava-backend/bin/generate-secrets.php
```

دو مقدار خروجی را در signing_key و data_key بگذارید و از config خصوصی نسخه پشتیبان بگیرید. دسترسی فایل برای مالک باشد (در تنظیم معمول سی‌پنل 600). اگر Terminal ندارید، پشتیبانی هاست این دستور را اجرا کند؛ اسکریپت را عمومی نکنید.

public_api_url از قبل https://hosting.stormvps.ir/api و api_prefix برابر /api تنظیم شده است. تنظیم دامنه به‌تنهایی SSL صادر نمی‌کند؛ گواهی معتبر روی خود هاست لازم است.

## ۳. بررسی نصب و ورود مدیریت

```sh
php /home/CPANELUSER/nava-backend/bin/check.php
php /home/CPANELUSER/nava-backend/tests/selftest.php
```

check.php فقط پیش‌نیازها، اتصال و ستون‌های موردنیاز دیتابیس را بررسی می‌کند؛ تست اتصال پنل یا پرداخت نیست. selftest باید جداگانه موفق شود.

پس از نصب، آدرس‌ها:

- وضعیت API: https://hosting.stormvps.ir/api/health
- ورود مدیریت: https://hosting.stormvps.ir/api/admin.php
- پرداخت: لینک اختصاصی و امضاشده‌ای که برای هر سفارش توسط API ساخته می‌شود؛ payment.php را بدون پارامتر سفارش و توکن به کاربر ندهید.

نام مدیر arianamini است و هش رمز اعلام‌شده در تنظیمات نمونه وجود دارد. ورود مدیر نباید به ساخت یک حساب عادی با این نام وابسته باشد. نشانی ریشه دامنه صفحه اصلی فروشگاه ندارد؛ این بسته مسیرهای API، پرداخت و مدیریت را نصب می‌کند.

## ۴. پنل و فعال‌سازی فروش

manual_payment.enabled تا پایان تست false می‌ماند. تعرفه‌ها و کارت اعلام‌شده از قبل تنظیم شده‌اند. HTTPS این دامنه ارتباط جداگانه با پنل HTTP را امن نمی‌کند. panel.url و token عمداً خالی‌اند؛ روش احراز هویت و اتصال واقعی اینباند ۶۱ هنوز تأیید نشده است. برای ارسال کلید مدیریتی، مسیر HTTPS معتبر برای پنل لازم است؛ در این گفتگو ارسال کلید روی HTTP توسط بررسی خودکار رد شده است.

پس از تکمیل تنظیمات پنل و allowlist ساب مطابق README-CPANEL.md، panel-check.php را اجرا کنید. قبل از فروش، چرخه ثبت سفارش، آپلود رسید، رد و ارسال مجدد، تأیید و ساخت دقیق یک اشتراک را روی محیط آزمایشی بررسی کنید. صحت ظاهر رسید کافی نیست؛ مدیر باید واریز را با گردش بانکی تطبیق دهد.

Cron Jobs را هر دقیقه با مسیر PHP واقعی هاست تنظیم کنید:

```sh
php /home/CPANELUSER/nava-backend/bin/worker.php
```

این نمونه برای چیدمان پیش‌فرض است؛ CPANELUSER و مسیر PHP را تغییر دهید. خروجی cron را تا پایان تست بررسی کنید. worker فقط سفارش تأییدشده را اعمال می‌کند. بعد از موفقیت تست‌ها manual_payment.enabled را true کنید. اپ از قبل به همین /api اشاره می‌کند، اما ساخت APK و اتصال Xray همچنان کار باقی‌مانده است.
