مقارنة

Cap بديل Loom المستضاف ذاتياً: دليل النشر على VPS

مقارنات9 دقائق للقراءةعدد الخطوات: 7

في فبراير 2026، أزال Loom دور Creator Lite: أصبحت الفرق المكونة من 2 إلى 5 أشخاص التي كانت تسجّل مقاطع فيديو قصيرة دون دفع السعر الكامل مضطرة إلى الانتقال إلى خطط بـ 18 دولاراً لكل مقعد شهرياً. Cap (CapSoftware/Cap، رخصة AGPL-3.0، أكثر من 23000 نجمة على ‏GitHub) هو بديل مفتوح المصدر يمكن استضافته ذاتياً على VPS باستخدام Docker Compose. يشرح هذا الدليل سبب إجبار هذا التغيير للوكالات على التصرف، وكيفية تقييم Cap، وكيفية نشره بشكل صحيح.

المحتويات· لماذا يُجبر تغيير تسعير Loom الوكالات على التصرف1/8
  1. 01لماذا يُجبر تغيير تسعير Loom الوكالات على التصرف
  2. 02لماذا يناسب Cap الوكالات
  3. 03متطلبات VPS لنشر Cap
  4. 04نشر Cap على VPS الخاص بك
  5. 05تعزيز الأمان بعد النشر
  6. 06الإعداد بعد النشر: النطاق والتخزين والفريق
  7. 07استكشاف الأخطاء: أخطاء شائعة
  8. 08Cap في حزمة وكالتك المستضافة ذاتياً

لماذا يُجبر تغيير تسعير Loom الوكالات على التصرف

كان دور Creator Lite يتيح إضافة أعضاء إلى مساحة عمل Loom دون احتسابهم كمنشئين مدفوعين. أزالت Atlassian، التي استحوذت على Loom، هذا الدور لجميع الحسابات المنشأة بعد فبراير 2026، وتنتقل الحسابات الحالية إلى الفوترة عبر Atlassian تدريجياً.

عملياً، لفريق صغير مكوّن من 10 منشئين مدفوعين و20 مستخدماً من فئة Creator Lite: ترتفع الفاتورة الشهرية من 180 دولاراً إلى 540 دولاراً في شهر الترحيل. يُفيد بعض المستخدمين بأن فواتيرهم قفزت من 18 دولاراً إلى 220 دولاراً شهرياً بين عشية وضحاها. تُفوتر خطة Business بـ 18 دولاراً لكل مستخدم شهرياً دون استثناء.

بالنسبة لوكالة تفوتر عملاءها بنطاق ثابت، فإن هذا التفاوت في التكلفة غير مقبول. التقاط الشاشة غير المتزامن أداة تواصل داخلي مع العملاء — يجب أن تكون تكلفته قابلة للتنبؤ، أو يجب استضافته ذاتياً.

لماذا يناسب Cap الوكالات

  • تكلفة ثابتة: تدفع مقابل VPS، وليس اشتراكاً لكل مقعد يرتفع مع كل توظيف جديد.
  • البيانات مستضافة على بنيتك التحتية: لقطات النماذج والعروض التجريبية لا تغادر خادمك أبداً.
  • رخصة AGPL-3.0: الكود قابل للتدقيق، وخارطة الطريق عامة، والمشروع نشط (أكثر من 23000 نجمة على ‏GitHub في 5 أكتوبر 2026).
  • المشاركة عبر روابط: يتلقى عملاؤك رابطاً موقّعاً، تماماً كما في Loom، دون إنشاء حساب.
  • نطاق مخصص: تعرض Cap على cap.‏your-domain.com، وليس تحت نطاق طرف ثالث.
  • تخزين قابل للتكوين: MinIO المدمج للبداية، أو bucket S3/Cloudflare R2 خارجي للإنتاج.
  • واجهة بسيطة بدون طبقة ذكاء اصطناعي مدفوعة مفروضة: الأداة تفعل ما وعدت به فحسب.
  • النشر بأمر واحد: docker compose up -d من المستودع الرسمي.

متطلبات VPS لنشر Cap

يتكوّن Cap من أربعة خدمات Docker: تطبيق الويب (cap-web)، وقاعدة بيانات MySQL 8.0 (‏ps-mysql)، وخادم وسائط للتحويل البرمجي (cap-media-server)، وMinIO للتخزين الكائني المتوافق مع S3. تستهلك المجموعة حوالي 1 غيغابايت من الذاكرة العشوائية في وضع الخمول؛ في بيئة الإنتاج مع عدة تسجيلات متزامنة، خطط لـ 2 vCPU و4 غيغابايت RAM كحد أدنى للعمل. خصص 20 غيغابايت من قرص SSD/NVMe للملفات الثنائية ومقاطع الفيديو الأولية، ثم أضف أو اخرّج التخزين حسب الحجم.

متطلبات أخرى:
- ‏Docker Engine 24+ وDocker Compose v2 مثبتان على VPS.
- نطاق فرعي مخصص (مثل cap.‏your-domain.com) يشير إلى عنوان IP الخاص بـ VPS.
- خادم وكيل عكسي يتولى HTTPS (‏Caddy أو Nginx مع Certbot).
- المنافذ 3000 (التطبيق) و3456 (خادم الوسائط) و3902/3903 (‏MinIO) يمكن الوصول إليها من الخادم الوكيل العكسي، لكن لا تُكشف مباشرةً للعموم.

نشر Cap على VPS الخاص بك

  1. استنساخ المستودع الرسمي

    على VPS الخاص بك، استنسخ مستودع CapSoftware وانتقل إلى المجلد الجذر:

    git clone https://github.com/CapSoftware/Cap.git
    cd Cap

    يحتوي المستودع على ملف docker-compose.template.yml. انسخه باسم docker-compose.yml لتجنب الكتابة فوق تعديلاتك عند تنفيذ git pull مستقبلاً:

    cp docker-compose.template.yml docker-compose.yml
  2. ضبط متغيرات البيئة

    أنشئ ملف .env في الجذر من النموذج المرفق، ثم حرّر القيم الحرجة:

    cp .env.example .env

    المتغيرات الواجب تعريفها قبل أي كشف عام:

    # عنوان URL العام للتطبيق
    NEXTAUTH_URL=https://cap.your-domain.com
    WEB_URL=https://cap.your-domain.com
    
    # الأسرار — أعد توليد هذه القيم، لا تترك الافتراضية أبداً
    NEXTAUTH_SECRET=<سلسلة-عشوائية-32-حرفاً>
    DATABASE_ENCRYPTION_KEY=<سلسلة-عشوائية-32-حرفاً>
    
    # قاعدة بيانات MySQL
    DATABASE_URL=mysql://root:كلمة-المرور@ps-mysql:3306/planetscale
    
    # تخزين MinIO المدمج (استبدله بـ S3 خارجي في الإنتاج)
    CAP_AWS_ACCESS_KEY=minioadmin
    CAP_AWS_SECRET_KEY=minioadmin
    CAP_AWS_BUCKET=cap-media
    CAP_AWS_REGION=us-east-1
    S3_PUBLIC_ENDPOINT=https://cap.your-domain.com/s3
    S3_INTERNAL_ENDPOINT=http://minio:9000
    
    # خادم الوسائط
    MEDIA_SERVER_URL=http://cap-media-server:3456
    MEDIA_SERVER_WEBHOOK_SECRET=<سلسلة-عشوائية-32-حرفاً>

    إن لم تضبط خادم SMTP، تظهر روابط تسجيل الدخول في سجلات حاوية cap-web: docker compose logs cap-web. يكفي ذلك للاختبارات الأولية.

  3. تشغيل المجموعة

    شغّل الخدمات الأربع في الخلفية:

    docker compose up -d

    تحقق من أن جميع الحاويات في حالة running:

    docker compose ps

    يستمع تطبيق الويب على المنفذ 3000، وخادم الوسائط على 3456، وMinIO على 3902 (API) و3903 (وحدة التحكم). راجع السجلات إن بقيت خدمة في حالة restarting:

    docker compose logs cap-web --tail 50
  4. ضبط الخادم الوكيل العكسي HTTPS مع Caddy

    ‏Caddy هو الحل الأكثر مباشرة: يتولى شهادات Let's Encrypt تلقائياً. أنشئ ملف /etc/caddy/Caddyfile أو أضف كتلة إلى الإعداد الحالي:

    cap.your-domain.com {
        reverse_proxy localhost:3000
    }

    أعد تحميل Caddy:

    systemctl reload caddy

    إن كنت تستخدم Nginx، أنشئ vhost مع proxy_pass http://127.0.0.1:3000; واحصل على شهادة عبر certbot --nginx -d cap.your-domain.com.

  5. أول تسجيل دخول وإنشاء الحساب المسؤول

    افتح https://cap.your-domain.com في متصفحك. يطلب منك Cap إنشاء حساب بإدخال عنوان بريدك الإلكتروني. إن لم تضبط SMTP، استرجع رابط تسجيل الدخول من السجلات:

    docker compose logs cap-web 2>&1 | grep -i 'signin\|magic\|link'

    انسخ عنوان URL المعروض والصقه في متصفحك لتسجيل الدخول. يصبح أول حساب يُنشأ مدير النسخة.

  6. ضبط تخزين S3 خارجي (موصى به في الإنتاج)

    ‏MinIO المدمج يصلح للاختبار، أما في الإنتاج فيُفضَّل bucket S3 خارجي (AWS S3 أو Cloudflare R2 أو Backblaze B2). في إعدادات نسخة Cap (قسم التخزين)، أدخل:

    - Access Key وSecret Key من مزودك
    - Bucket name وRegion
    - Public URL للـ bucket (لروابط المشاركة)

    حدّث متغيرات CAP_AWS_* في ملف .env، ثم أعد تشغيل الخدمة:

    docker compose up -d cap-web
  7. دعوة الفريق واختبار تسجيل

    من لوحة تحكم Cap، ادعُ زملاءك عبر البريد الإلكتروني. يثبّت كل عضو تطبيق Cap لسطح المكتب (macOS أو Windows) أو يستخدم امتداد المتصفح، ويشير إلى عنوان URL لنسختك في الإعدادات (حقل "Custom server"). أجرِ تسجيلاً تجريبياً وتحقق من ظهور الفيديو في لوحة التحكم وإمكانية الوصول إلى رابط المشاركة من متصفح خارجي.

تعزيز الأمان بعد النشر

قبل دعوة العملاء لمشاهدة الفيديوهات، تحقق من هذه النقاط الأربع:

1. استبدال الأسرار الافتراضية — يجب ألا تكون NEXTAUTH_SECRET وDATABASE_ENCRYPTION_KEY وMEDIA_SERVER_WEBHOOK_SECRET تلك الموجودة في المستودع. ينتج openssl rand -hex 32 قيمة قوية.
2. MinIO غير مكشوف للعموم — يجب أن تكون المنفذان 3902 و3903 متاحَين من الخادم الوكيل العكسي فقط. أضف 127.0.0.1:3902:9000 في docker-compose.yml لربط المنفذ بالمضيف المحلي فقط.
3. التحديثات التلقائية معطلة افتراضياً — لا يحدّث Cap نفسه. جدول تنفيذ docker compose pull && docker compose up -d شهرياً، مسبوقاً بلقطة من volume قاعدة بيانات MySQL.
4. نسخ احتياطية لقاعدة MySQL — mysqldump يومي يكفي للبيانات الوصفية (الفيديوهات نفسها في MinIO أو S3). مثال باستخدام cron: 0 2 * * * docker exec ps-mysql mysqldump -u root -pكلمة-المرور planetscale > /backups/cap-$(date +%F).sql.

الإعداد بعد النشر: النطاق والتخزين والفريق

بمجرد تشغيل Cap، ثلاثة تعديلات تجعل النسخة جاهزة لاستخدام الوكالة:

النطاق المخصص: إن استخدمت نطاقاً فرعياً مؤقتاً أثناء النشر، حدّث NEXTAUTH_URL وWEB_URL في .env، وأعد تشغيل cap-web وحدّث إدخال DNS. تظل روابط المشاركة الموجودة صالحة طالما أنك تعيد توجيه النطاق الفرعي القديم.

مساحة العمل: ينظّم Cap التسجيلات في Spaces. أنشئ مساحة لكل عميل أو مشروع لإبقاء الفيديوهات منفصلة. يمكن للضيوف المشاهدة دون حساب إذا كان الرابط عاماً.

حصة التخزين: إن كنت تخزّن الفيديوهات على MinIO المحلي، راقب مساحة قرص VPS بالأمر df -h. يزن تسجيل Cap بين 10 و50 ميغابايت حسب المدة والدقة. فكّر في وحدة تخزين إضافية أو الانتقال إلى S3 خارجي حين يتجاوز الحجم بضعة عشرات من الغيغابايتات.

استكشاف الأخطاء: أخطاء شائعة

Error: connect ECONNREFUSED 127.0.0.1:3306 — حاوية MySQL لم تبدأ بعد، أو كلمة مرورها في DATABASE_URL لا تطابق تلك المحددة في خدمة ps-mysql. تحقق باستخدام docker compose logs ps-mysql وتأكد من تطابق متغيري MYSQL_ROOT_PASSWORD في docker-compose.yml وDATABASE_URL في .env.

عنوان URL لتسجيل الدخول لا يصل عبر البريد الإلكتروني — بدون SMTP مضبوط، يظهر الرابط فقط في سجلات حاوية cap-web. نفّذ docker compose logs cap-web 2>&1 | grep http لإيجاده.

الفيديو يتحمّل إلى ما لا نهاية بعد التسجيل — خادم الوسائط (cap-media-server) غير قابل للوصول من cap-web. تحقق من ضبط MEDIA_SERVER_URL=http://cap-media-server:3456 ومن أن الخدمتين على نفس شبكة Docker (docker compose ps يجب أن يُظهر كلتيهما بحالة running).

رابط المشاركة يُعيد خطأ 404 — قد يشير S3_PUBLIC_ENDPOINT إلى عنوان URL غير صحيح أو MinIO غير قابل للوصول خارجياً. إن كنت تستخدم MinIO محلياً، اكشفه خلف الخادم الوكيل العكسي تحت مسار مخصص (مثلاً /s3/) أو انتقل إلى bucket S3 خارجي.

العميل لا يستطيع توجيه التطبيق المكتبي إلى نسختك — تحقق من أن حقل "Custom server" في إعدادات تطبيق Cap Desktop يقبل عنوان URL العام بالضبط بدون شرطة مائلة أخيرة: https://cap.your-domain.com.

Cap في حزمة وكالتك المستضافة ذاتياً

يندمج Cap بشكل طبيعي في حزمة حيث يحل التقاط غير المتزامن محل اجتماعات مراجعة العملاء. إلى جانب Penpot للتصميم التعاوني وChatwoot لدعم العملاء، يغطي ثلاث قنوات تواصل غير متزامن لوكالة دون اشتراك SaaS متغير.

إن كانت بنيتك التحتية تعتمد بالفعل على أدوات Atlassian المنتقلة إلى بدائل مستضافة ذاتياً — Jira مستبدَل بـ Plane، وConfluence بـ Outline — فإن الانتقال من Loom إلى Cap يتبع المنطق ذاته: تكلفة ثابتة، وبيانات مضبوطة، وتحديثات بسرعتك.

Cap لا يزال مشروعاً ناشئاً بمجتمع ينمو بسرعة. للاستخدام في بيئة الإنتاج اليوم، مجموعة Docker Compose مع MinIO أو S3 الخارجي مستقرة. تطبيق سطح المكتب لنظام macOS هو الأكثر نضجاً؛ وإصدار Windows يعمل بشكل صحيح.

فريقك يستضيف أدوات الإنتاج بنفسه

يُنشر Cap في دقائق على VPS من ServOrbit. وصول root، وعنوان IPv4 مخصص، وDocker جاهز للتشغيل، وتخزين NVMe لمقاطع الفيديو غير المتزامنة.

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

تصفّح مركز المساعدة والأسئلة الشائعة، أو تواصل مع فريقنا — معاودة اتصال أو WhatsApp أو بريد إلكتروني. الدعم بـالعربية والفرنسية والإنجليزية.

راسلنا على WhatsAppيُفتح في علامة تبويب جديدة