تخطّي إلى المحتوى الرئيسي
أدلة إعداد Studio أنا مطوّر ويب

إعداد Studio لمطوّري الويب

تحتوي حزمة Studio على الشفرة المصدرية الكاملة للإصدارين، وأداة نشر على Cloudflare، والمستندات التقنية. وهذا الدليل هو النسخة المختصرة لمن يفضّلون تنفيذ كل خطوة بأنفسهم.

الأفضل لـ
مطوّرو الويب وفرق تقنية المعلومات الذين يفضّلون تثبيت Studio بأنفسهم، انطلاقًا من الشفرة المصدرية الموجودة في حزمة Studio.
ما تحتاج إليه
حزمة Studio؛ ولإصدار PHP، استضافة تعمل بـ Apache أو LiteSpeed أو nginx مع PHP 8.0 أو أحدث؛ ولإصدار Cloudflare، حساب Cloudflare مفعّل فيه R2 مع Node.js 20 أو أحدث.
الإصدارات
إصداران من التطبيق نفسه، بعناوين URL وواجهة API للرفع ولوحة تحكم وأدوار متطابقة: تطبيق PHP بلا قاعدة بيانات، وCloudflare Worker يعتمد على R2 وD1.

احصل على حزمة Studio

سجّل الدخول إلى Maxisnap بالحساب الذي لديه Studio، ثم:

  • على Windows: في Maxisnap، افتح الإعدادات ← الحساب ← معالج إعداد Maxisnap Studio، وانقر على «ابدأ الآن»، ثم «تنزيل لوحة المعلومات». يحفظ Maxisnap ملف ZIP الخاص بـ Studio في مجلد التنزيلات لديك ويفتح ذلك المجلد.
  • على Mac: في Maxisnap، افتح «Settings»‏ ← «Welcome & Help»‏ ← «Studio Setup Guide»، وانقر على «Get Started» ثم «Download Dashboard». يحفظ Maxisnap ملف ZIP الخاص بـ Studio في مجلد التنزيلات لديك.

فك ضغط ملف ZIP. على Windows، انقر عليه بزر الماوس الأيمن واختر «استخراج الكل». وعلى Mac، انقر عليه نقرًا مزدوجًا.

Maxisnap-Studio-v<version>/
  Maxisnap Studio - Start Here.html   guided setup (branding + every route)
  snaps/                              PHP edition: upload this folder to a web host
  cloudflare/                         Cloudflare Workers edition (Worker + R2 + D1)
    deploy/cli.mjs                    deploys it through the Cloudflare API (Node 20+)
  docs/Developer guide.html           architecture, upload API, security, updates
  docs/Cloudflare setup - technical brief.html
  AGENTS.md                           instructions for AI coding assistants

يغطي «Developer guide» الكامل البنية، وواجهة API للرفع، والمفاتيح والأدوار، ونموذج الأمان، واستكشاف الأخطاء وإصلاحها. وهو الملف docs/Developer guide.html في الحزمة.

إصدار PHP: الرفع وإكمال الإعداد

  1. ارفع مجلد snaps إلى المجلد الجذر لموقعك (web root)، بما في ذلك ملفات ‎.htaccess المخفية فيه، بحيث تكون النتيجة public_html/snaps/index.php. وينطبق الأمر نفسه على ملف snaps.zip المخصص بعلامتك التجارية من صفحة Start Here؛ فك ضغطه في مكانه ولا تضع snaps داخل snaps (snaps/snaps).
  2. افتح https://yourcompany.com/snaps/ ‎مرة واحدة. تفحص صفحة الإعداد PHP وأذونات المجلد، وتقترح مفتاح مسؤول من 40 حرفًا؛ ويجب أن يحتوي المفتاح على 16 حرفًا على الأقل. انسخه، ثم انقر على «Create my dashboard».
  3. على nginx، أعد إنشاء قواعد التوجيه والمنع الواردة في snaps/.htaccess. وأبقِ uploads وdata وbranding خاصة.

تكتب صفحة الإعداد الملف your-settings.php، الذي يُحتفظ به عند التحديثات:

'dashboard_key' => '…',          // the Admin key; the setup page writes it
'base_url'      => 'https://yourcompany.com/snaps',  // the address setup was opened at; fix it here if share links come out wrong
'max_upload_mb' => 500,          // your host's PHP limits still apply

إصدار Cloudflare: النشر من الطرفية

تقرأ أداة سطر الأوامر (CLI) المضمّنة الحساب أولًا، ثم تعرض خطة بما ستنشئه وما لن تمسّه، وترفض الأسماء المستخدمة بالفعل. وإذا توقف النشر في منتصف العملية، فإن تشغيل الأمر نفسه مرة أخرى يتابع دون إنشاء أي شيء مرتين.

cd cloudflare
# Option 1: the bundled CLI (Node 20+; plan first, then --yes). PowerShell:
$env:CLOUDFLARE_API_TOKEN = "<token: Account Settings Read; Workers Scripts, R2 and D1 Edit;
                              for --zone/--hostname also Zone Read, DNS Read, Workers Routes Read>"
node deploy/cli.mjs whoami
node deploy/cli.mjs plan --account <account id> --name snaps
#   no workers.dev name on the account yet? The plan asks you to "Choose your free
#   workers.dev name": add --subdomain <your-company> to both commands (account-wide).
#   A subdomain of your domain as well: add --zone <zone id> --hostname snaps.example.com
node deploy/cli.mjs deploy --account <account id> --name snaps --yes
#   prints the Studio address and the Admin key once, and writes deployment.json here

# Option 2: plain Wrangler (create the bucket and database, set their ids in wrangler.jsonc)
npm install
npx wrangler r2 bucket create maxisnap-studio-media
npx wrangler d1 create maxisnap-studio
npx wrangler secret put ADMIN_KEY
npm run sync
npx wrangler deploy

يطبع النشر عنوان Studio ومفتاح المسؤول مرة واحدة، ويكتب الملف deployment.json في المجلد الذي يعمل منه. احتفظ بهذا الملف: يستخدمه الأمران update وremove.

تحقق من أنه يعمل

curl.exe -s -H "X-Dashboard-Key: <Admin key>" https://<studio address>/api/health.php
# {"ok":true,"app":"Maxisnap Studio","version":"…"}   the Cloudflare edition adds "edition":"cloudflare"

بعد ذلك افتح عنوان Studio في متصفح وسجّل الدخول بمفتاح المسؤول. الرمز 401 يعني مفتاحًا خاطئًا؛ والرمز 404 يعني عنوانًا أو مجلدًا خاطئًا.

اربط Maxisnap

  • Maxisnap لنظام Windows: افتح الإعدادات ← الحساب ← معالج إعداد Maxisnap Studio، وانقر على «ابدأ الآن»، ثم على «التالي» حتى الخطوة 4، «ربط Maxisnap». الصق عنوان Studio الخاص بك ومفتاحه، وانقر على «اختبار الاتصال»، ثم «التالي»، ثم «إنهاء وحفظ» في الصفحة الأخيرة. يمكنك استخدام مفتاح المسؤول الذي ظهر لك أثناء الإعداد، أو رمز رفع من «People & access» في لوحة التحكم.
  • Maxisnap لنظام Mac: افتح «Settings»‏ ← «Welcome & Help»‏ ← «Studio Setup Guide» واختر «I already have a dashboard». الصق عنوان Studio الخاص بك ومفتاحه، وانقر على «Test Connection»، ثم «Next»، ثم «Finish & Save».

تعرّف على واجهة API للرفع

  • ترفع تطبيقات Maxisnap الملفات إلى api/upload.php مع ترويسة X-Dashboard-Key. وتُقبل الصور (PNG وJPG وGIF وWebP) ومقاطع الفيديو (MP4 وWebM وMOV).
  • يرسل Maxisnap لنظام Windows وMaxisnap لنظام Mac كل عملية رفع إلى Studio على Cloudflare في طلب واحد، ويقبل Studio ما يصل إلى 25 MB لكل ملف.
  • يتضمن إصدار Cloudflare أيضًا واجهة API للرفع على أجزاء للملفات الأكبر، وهي موصوفة في «Developer guide»: api/upload/start وpart وcomplete.
  • تستخدم صفحات المشاركة وملفات الوسائط الخاصة بها هذه المسارات؛ وكل مسار آخر داخلي: /<slug> /<slug>.<ext>

حدّثه أو أزله لاحقًا

PHP: استبدل الملفات المدرجة في snaps/How to update.txt فقط، ثم امسح ذاكرتي التخزين المؤقت للاستضافة ولشبكة CDN. وتبقى اللقطات وأعضاء الفريق والعلامة التجارية والإعدادات كما هي.

Cloudflare: شغّل هذه الأوامر من مجلد cloudflare في الحزمة الأحدث، مع نسخ ملف deployment.json القديم إليه.

# Update: from a newer package's cloudflare folder, with the old deployment.json copied in
node deploy/cli.mjs update --record deployment.json --yes
# New Admin key (shown once):
node deploy/cli.mjs update --record deployment.json --yes --new-admin-key
# Remove the custom domain and the Worker; the bucket and database (the captures) stay
node deploy/cli.mjs remove --record deployment.json --yes
# Also delete every capture: cannot be undone
node deploy/cli.mjs remove --record deployment.json --yes --delete-data

اقرأ الموجز التقني لـ Cloudflare: كل مورد وإذن واستدعاء API.

إذا حدث خطأ ما

يُرجع فحص الحالة الرمز 401

{"error":"unauthorized"}

المفتاح خاطئ أو معطّل أو أقصر مما يقبله Studio، أو لم يكتمل الإعداد على استضافة PHP. أرسله في ترويسة X-Dashboard-Key، ولا ترسله أبدًا في العنوان.

يُرجع فحص الحالة الرمز 404، أو HTML بدلًا من JSON

العنوان أو المجلد خاطئ، أو أن الاستضافة تتجاهل قواعد ‎.htaccess الخاصة بـ Studio (nginx، أو Apache بدون إعادة كتابة العناوين)، أو أن CDN أو طبقة أمان تردّ بدلًا من Studio. على nginx، أعد إنشاء قواعد التوجيه والمنع الواردة في snaps/.htaccess؛ ويسردها «Developer guide».

يُرجع فحص الحالة الرمز 429

Too many incorrect codes. Wait a few minutes before trying again.

بعد تكرار إدخال مفاتيح خاطئة، يرفض Studio المحاولات الإضافية من شبكتك لمدة 15 دقيقة. انتظر ثم حاول مرة أخرى بالمفتاح الصحيح.

تُرجع عمليات الرفع الرمز 403 على نطاق مخصّص

يؤدي وجود Cloudflare Access أو قاعدة WAF أو Bot Fight Mode على اسم المضيف هذا إلى منع عمليات الرفع من التطبيقات. استثنِ اسم مضيف Studio؛ ففي الموجز التقني قائمة التحقق. كما يؤدي رمز Viewer إلى 403 عند الرفع: استخدم مفتاح المسؤول أو رمز رفع.

تُرجع عمليات الرفع الرمز 413

على PHP، يكون upload_max_filesize أو post_max_size أو حد لدى مزوّد الاستضافة أو CDN أقل من حجم الملف؛ أما حد Studio نفسه فهو max_upload_mb في your-settings.php.

على Cloudflare، يمكن أن يحمل الطلب الواحد ما يصل إلى 25 MB؛ أما الملفات الأكبر فتحتاج إلى واجهة API للرفع على أجزاء.

تُرجع كل صفحة في Studio على Cloudflare الرمز 503

This Studio is not set up correctly: its ADMIN_KEY secret must be at least 16 characters.

اضبط سرّ ADMIN_KEY بقيمة أطول، مثلًا باستخدام الأمر update مع ‎--new-admin-key، أو باستخدام npx wrangler secret put ADMIN_KEY.

تتوقف الخطة عند سطر «x»

كل سطر «x» هو عائق (blocker)، ويذكر ما يجب فعله: فعّل R2، أو أضف ‎--subdomain لحساب ليس له اسم workers.dev، أو غيّر ‎--name أو ‎--zone أو ‎--hostname عندما يكون الاسم غير صالح أو محجوزًا أو خارج النطاق. ثم شغّل الخطة (plan) مرة أخرى. أما أسماء الحاويات وقواعد البيانات المحجوزة فتحصل على الاسم المتاح التالي دون أن يظهر عائق.

ترفض أداة CLI الملف deployment.json

deployment.json belongs to the Studio "snaps". Keep it, and pass --record <another file> for this one.

لكل Studio سجلّه الخاص. احتفظ بهذا الملف، وأعطِ Studio الثاني سجلًا آخر باستخدام ‎--record. ومن دون أي سجل لا يمكن تشغيل الأمرين update وremove؛ مرّر مسار الملف الصحيح.

يعرض Studio على workers.dev الرسالة «Error 1027»

تم بلوغ حد الطلبات اليومي للخطة المجانية. يُعاد ضبطه عند منتصف الليل بتوقيت UTC.

لا تزال بحاجة إلى مساعدة؟

راسلنا عبر البريد الإلكتروني وسيرد عليك شخص، عادةً خلال يوم عمل واحد. تساعدنا هذه التفاصيل على الرد عليك برسالة واحدة:

  • خيار الإعداد الذي اخترته والخطوة التي أنت فيها.
  • لقطة شاشة للشاشة، مع أي رسالة خطأ كاملة.
  • المكان الذي ستضع فيه Studio: حساب Cloudflare جديد أو حالي، أو اسم مزوّد استضافة الويب لديك.
  • إصدار Maxisnap لديك: على Windows في الإعدادات ← حول؛ وعلى Mac ضمن «Maxisnap»، ثم «About Maxisnap».

يُرجى عدم إرسال مفتاح المسؤول أو مفتاح Cloudflare أو كلمة مرور. لا نحتاج إليها لمساعدتك.

أدلة إعداد أخرى