راهنمای استقرار BLACK MONEY روی cPanel
Next.js 16 + PostgreSQL + Drizzle + Telegram Mini App — بدون Docker و بدون دسترسی root
معماری پروژه
Frontend (Mini App و پنل مدیریت) و Backend (Route Handlers در src/app/api) در یک پروسه Node.js اجرا میشوند. در cPanel فقط یک Application از نوع Node.js لازم است؛ Application Root همان پوشهای است که package.json در آن قرار دارد. رمز دیتابیس، توکن ربات و کلیدهای امنیتی فقط در Environment Variables سرور ذخیره میشوند و هیچکدام در باندل کلاینت قرار نمیگیرند.
Node.js
22.x (cPanel Setup Node.js App)
Startup File
server.mjs
Build
npm ci && npm run build
۱) پایگاه داده در cPanel
cPanel → PostgreSQL Databases → ساخت دیتابیس و کاربر → اتصال کاربر با ALL PRIVILEGES. سپس رشته اتصال را در DATABASE_URL قرار دهید.
postgresql://CPUSER_DBUSER:YOUR_PASSWORD@localhost:5432/CPUSER_BLACKMONEY
۲) اجرای دستورات روی سرور
از «Enter to the virtual environment» در Node.js App یا Terminal cPanel، داخل Application Root:
cd ~/blackmoney npm ci npx drizzle-kit push npm run build node scripts/seed.mjs
curl -s https://black-mony.rzk26.site/api/health
curl -s "https://api.telegram.org/bot<TELEGRAM_BOT_TOKEN>/setWebhook" \ -d "url=https://black-mony.rzk26.site/api/telegram/webhook" \ -d "secret_token=<TELEGRAM_WEBHOOK_SECRET>" \ -d 'allowed_updates=["message","callback_query"]'
curl -s "https://black-mony.rzk26.site/api/cron/broadcast?secret=CRON_SECRET&limit=15" >/dev/null
۳) فهرست متغیرهای محیطی
| متغیر | وضعیت | توضیح |
|---|---|---|
| DATABASE_URL | الزامی | postgresql://user:pass@localhost:5432/db (ساختهشده در cPanel) |
| AUTH_SECRET | الزامی | کلید امضای کوکی — openssl rand -hex 32 |
| ADMIN_PASSWORD | الزامی | رمز ورود /admin/login (در دیتابیس ذخیره نمیشود) |
| ADMIN_TELEGRAM_ID | توصیهشده | آیدی عددی مدیر ارشد برای ورود تلگرامی و ساخت superadmin |
| NEXT_PUBLIC_APP_URL | الزامی | https://black-mony.rzk26.site |
| NEXT_PUBLIC_API_URL | خالی | API روی همان دامنه است |
| TELEGRAM_BOT_TOKEN | برای ربات | توکن BotFather — فقط سرور |
| TELEGRAM_BOT_USERNAME | برای ربات | بدون @ |
| TELEGRAM_WEBHOOK_SECRET | توصیهشده | محافظت از وبهوک |
| TELEGRAM_AUTH_REQUIRED | الزامی | true |
| ALLOW_DEMO_AUTH | الزامی | false |
| CRON_SECRET | برای صف پیام | openssl rand -hex 24 |
| PASARGUARD_MODE | اختیاری | off | marzban-compatible |
۴) آنچه بدون اطلاعات بیرونی قابل تست نیست
- • ورود واقعی Mini App و اجرای /start — نیازمند TELEGRAM_BOT_TOKEN واقعی و دامنه HTTPS.
- • ساخت کانفیگ و تمدید — نیازمند پنل VPN واقعی (Marzban / 3x-ui / Hiddify / سفارشی).
- • Ping و وضعیت سرورها — نیازمند هاست و پورت واقعی (تست واقعی TCP، بدون داده تصادفی).
- • ارسال پیام همگانی — نیازمند توکن ربات و مخاطبان واقعی.