تشغيل مستقل على Coolify مع MySQL وS3
انشر الخلفية أولاً، نفّذ migrations مرة واحدة، تحقق من readiness، ثم انشر الواجهة على عنوان الخلفية الداخلي أو العام.
01
خدمات Coolify
أربع وحدات واضحة داخل المشروع.
- pentascope-be من GitLab/Dockerfile على port 3000
- pentascope-fe من GitLab/Dockerfile على port 3000
- MySQL 8 بvolume دائم ونسخ احتياطي
- MinIO/S3 بbucket خاص وvolume/retention
- نطاق HTTPS للواجهة ونطاق أو شبكة داخلية للخلفية
02
بيئة الخلفية
القيم الإلزامية لا تظهر في الواجهة.
- DATABASE_URL وDB_POOL_SIZE/timeout limits
- FRONTEND_URL
- S3_ENDPOINT/REGION/BUCKET/ACCESS_KEY_ID/SECRET_ACCESS_KEY
- QA_CREDENTIAL_MASTER_KEY: base64 32-byte key
- FILE_SIGNING_SECRET وTOKEN_HASH_SECRET
- WEBHOOK_ALLOWED_HOSTS
- OPENAI_API_KEY أو OPENROUTER_API_KEY اختياريان
03
بيئة الواجهة
لا تحتاج الواجهة اتصالاً مباشراً بقاعدة البيانات أو S3.
- BACKEND_URL=https://backend.example.com
- لا تنسخ DATABASE_URL أو S3 secret إلى frontend
- أعد النشر عند تغيير BACKEND_URL
- اختبر /api/health من المنصة و/api/ready من مراقب داخلي
04
ترتيب الإصدار
نفس commit المختبر ينتقل بين البيئات.
- feature → dev → testing → staging → main
- npm ci ثم typecheck/lint/test/build/audit
- نسخ احتياطي قبل migration غير القابل للعكس
- npm run db:migrate قبل backend الجديد
- فعّل webhook:retry وschedule:dispatch كـCoolify scheduled tasks
- تحقق من /api/ready ثم نفذ smoke test لمسارات الأعمال