راهنمای استقرار 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 قرار دهید.

DATABASE_URL
postgresql://CPUSER_DBUSER:YOUR_PASSWORD@localhost:5432/CPUSER_BLACKMONEY

۲) اجرای دستورات روی سرور

از «Enter to the virtual environment» در Node.js App یا Terminal cPanel، داخل Application Root:

install + schema + build + seed
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"]'
Cron صف پیام همگانی (هر دقیقه)
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، بدون داده تصادفی).
  • • ارسال پیام همگانی — نیازمند توکن ربات و مخاطبان واقعی.