4.4 KiB
دليل نشر Dealix على Railway (بالعربي)
لماذا Railway؟
- ✅ لا SSH — نشر مباشر من GitHub
- ✅ PostgreSQL مبني
- ✅ SSL تلقائي
- ✅ دومين مجاني
- ✅ $5 مجاني شهرياً
- ✅ لا يتأثر بحجب ISP
الخطوات (15 دقيقة)
1. إنشاء الحساب
افتح railway.com → Login with GitHub (بحسابك VoXc2).
2. إنشاء المشروع
- اضغط New Project
- اختر Deploy from GitHub repo
- اختر
VoXc2/dealix - Railway يكتشف Dockerfile تلقائياً ويبدأ البناء
3. إضافة PostgreSQL
داخل المشروع:
- اضغط + New → Database → Add PostgreSQL
- Railway يولد
DATABASE_URLتلقائياً ويربطه بالتطبيق
4. إضافة Environment Variables
في service الـ API → Variables → + New Variable (أو Raw Editor للصق دفعة واحدة):
POSTHOG_API_KEY=<from Computer chat>
POSTHOG_HOST=https://us.i.posthog.com
POSTHOG_ENABLED=true
MOYASAR_PUBLIC_KEY=<from Computer chat>
MOYASAR_SECRET_KEY=<from Computer chat>
MOYASAR_WEBHOOK_SECRET=<from Computer chat>
CALENDLY_WEBHOOK_SECRET=<from Computer chat>
CALENDLY_OAUTH_CLIENT_ID=<from Computer chat>
CALENDLY_OAUTH_CLIENT_SECRET=<from Computer chat>
ENV=production
APP_ENV=production
DATABASE_URL=${{Postgres.DATABASE_URL}}
All real values are in the Computer chat message that contains this guide. Paste them into Railway's Raw Editor.
مهم: القيمة ${{Postgres.DATABASE_URL}} هذي مرجع ديناميكي لقاعدة البيانات اللي ضفتها.
5. تشغيل alembic migrations
بعد أول نشر ناجح:
- Service → Settings → Deploy → Start Command
- تأكد إنه:
alembic upgrade head && uvicorn api.main:app --host 0.0.0.0 --port $PORT
أو استخدم Deploy Triggers → أضف pre-deploy command: alembic upgrade head
6. توليد رابط عام
- Service → Settings → Networking → Generate Domain
- Railway يعطيك شي مثل:
dealix-production-abc.up.railway.app - احفظ الرابط
7. اختبار API
https://dealix-production-abc.up.railway.app/healthz
https://dealix-production-abc.up.railway.app/readyz
لازم يرجع 200 OK.
8. ربط الدومين dealix.me
Railway:
- Settings → Networking → Custom Domain →
dealix.me - Railway يعطيك CNAME مثل:
abc123.up.railway.app
GoDaddy:
- Domain dealix.me → DNS Records → أضف:
- Type:
CNAME - Name:
@(أوwww) - Value:
abc123.up.railway.app - TTL: 600
- Type:
ملاحظة: CNAME على root domain أحياناً يسمى ALIAS أو ANAME في GoDaddy.
9. تحديث Webhooks
Moyasar (dashboard.moyasar.com/webhooks):
- URL:
https://dealix.me/api/v1/webhooks/moyasar - Secret: قيمة
MOYASAR_WEBHOOK_SECRETمن Railway Variables
Calendly (webhook مسجل مسبقاً بـ PAT — نحدث URL):
- تلقائي إذا URL الـ endpoint ما تغير (
/api/v1/webhooks/calendly)
10. اختبار Pilot Payment (1 SAR)
curl -X POST https://dealix.me/api/v1/checkout \
-H "Content-Type: application/json" \
-d '{"plan": "pilot_1sar"}'
المراقبة
Logs حية
داخل Service → Deployments → اختر آخر deployment → View Logs
Restart
Service → Settings → Restart
Rollback
Deployments → اختر deployment قديم → Redeploy
التكلفة
- Free trial: $5 رصيد
- Hobby plan: $5/شهر بعد انتهاء Free trial
- PostgreSQL: محسوبة من نفس الرصيد (~$1-2/شهر للاستخدام البسيط)
استكشاف الأخطاء
| المشكلة | الحل |
|---|---|
| Build failed | افحص logs → غالباً requirements.txt |
| 503 Service Unavailable | API لم يبدأ — افحص Variables |
| Healthcheck failing | غيّر path في railway.json لـ /health |
| Database connection failed | تأكد إن DATABASE_URL=${{Postgres.DATABASE_URL}} |
الخطوات التالية
- ✅ نشر على Railway
- ✅ ربط dealix.me
- ✅ تسجيل webhooks (Moyasar + Calendly)
- ✅ اختبار pilot payment
- ⏳ تحديث gates من 18/30 إلى 22/30