لماذا تختار مدير مشاريع بسيطًا؟
تميل أدوات إدارة المشاريع SaaS إلى الثقل مع كل إصدار: عروض جديدة ولوحات ذكاء اصطناعي وتقارير تدفن الميزات التي تستخدمها فعلاً. ينطلق Kaneo من الافتراض المعاكس: معظم الفرق تحتاج فقط إلى لوحة Kanban وارتباط بمستودع الكود. بالاستضافة الذاتية، تستعيد السيطرة الكاملة — مهامك في قاعدة بيانات PostgreSQL على خادمك، قابلة للتصدير بـ SQL في أي وقت، دون خطة مميزة لتفعيل webhooks أو سجل غير محدود.
ما تحصل عليه مع Kaneo المستضاف ذاتيًا
- لوحات Kanban بالسحب والإفلات — أنشئ الأعمدة وأضف المهام وتابع التقدّم بنظرة واحدة.
- مزامنة GitHub Milestones — اربط تطبيق GitHub الخاص بك لتنعكس المعالم كمشاريع والمسائل كمهام تلقائيًا.
- وجهات Webhook — أطلق نداءات HTTP خارجية عند كل تغيّر في حالة مهمة، لإشعار Slack أو خط التكامل المستمر لديك.
- رخصة MIT — بلا قيود تجارية، والاشتقاق والتعديل حرّان.
- حاويتان فقط — تطبيق Node.js وPostgreSQL 16، بأثر ذاكرة أقل من 400 ميغابايت إجمالًا.
- تسجيل دخول بلا SMTP — بريد إلكتروني وكلمة مرور، دون خطوة تحقق برابط.
- مساحات عمل متعددة — اعزل المشاريع حسب العميل أو الفريق في مساحات منفصلة.
المتطلبات الأساسية
يكفي خادم ServOrbit VPS بنظام Ubuntu 24.04 وذاكرة لا تقل عن 1 جيجابايت لفريق صغير. Kaneo خفيف: واجهة Hono البرمجية (Node.js) وتطبيق Vue.js أحادي الصفحة يستهلكان معًا أقل من 200 ميغابايت أثناء الخمول، ويضيف PostgreSQL 16 نحو 300 ميغابايت. يُثبَّت Docker وDocker Compose تلقائيًا عند النشر. لا يُشترط اسم نطاق — يعمل Kaneo خلف العنوان الذي تمنحه ServOrbit — لكن نطاقًا فرعيًا مخصصًا (مثل projects.your-domain.com) يسهّل المشاركة.
انشر Kaneo على خادمك VPS
نشر بنقرة واحدة من سوق ServOrbit
افتح لوحة تحكم ServOrbit واذهب إلى سوق التطبيقات ← التعاون والإنتاجية ← Kaneo، ثم انقر نشر. يُثبّت AWX تلقائيًا Docker ويُولّد أسرار قاعدة البيانات والمصادقة ويضبط nginx ويُشغّل الحاويتين في أقل من دقيقتين.
أنشئ حساب المشرف الأول
افتح رابط Kaneo في متصفحك. يظهر نموذج تسجيل — هذا هو التشغيل الأول. أدخل اسمك وبريدك الإلكتروني وكلمة مرور. يحصل المستخدم الأول تلقائيًا على صلاحيات المشرف على مساحة العمل الافتراضية.
أنشئ مساحة عمل وأول مشروع
بعد تسجيل الدخول تصل إلى صفحة مساحة العمل. انقر مشروع جديد، وسمّه واختر لونًا. أضف أول مهمة بالنقر على + في عمود Kanban الذي تريده. حدّد مسؤولًا وأضف وصفًا وتاريخ استحقاق إن احتجت.
اربط GitHub (اختياري)
إذا كان كودك على GitHub، ثبّت تطبيق Kaneo من الإعدادات ← التكاملات. بعد الإذن، يُزامن Kaneo معالم GitHub كمشاريع ومسائل كمهام. تستطيع Webhooks تحديث حالة المهمة تلقائيًا عند دمج Pull Request.
اضبط webhooks الإشعارات (اختياري)
في الإعدادات ← Webhooks، أضف رابط قناة Slack الواردة أو نظام التذاكر لديك. يرسل Kaneo طلب POST بصيغة JSON عند كل تغيّر في الحالة — مفيد لإشعار الفريق دون استطلاع دوري.
أغلق التسجيل فور تجهيز فريقك: من الإعدادات ← عام، عطّل خيار السماح بالتسجيل. بدون هذه الخطوة يستطيع أي شخص يعرف الرابط إنشاء حساب. وللفرق التقنية التي تفضّل الالتزامات على القصص، اربط تطبيق GitHub ودع طلبات الدمج تُحدّث اللوحة تلقائيًا.
الإعداد المتقدم: مساحات عمل متعددة وعزل الفرق
يدعم Kaneo مساحات عمل متعددة على نفس الخادم. لكل مساحة مشاريعها وأعضاؤها وwebhooks الخاصة بها — مناسب لعزل العملاء أو الفرق على VPS واحد دون تعدد عمليات النشر.
لإنشاء مساحة عمل ثانية، انقر على المحدد في أعلى يسار الواجهة واختر مساحة عمل جديدة. أعضاء مساحة لا يمكنهم الوصول إلى الأخرى: العزل تطبيقي وليس مجرد واجهة. يمكنك استضافة مشاريع العميل أ ومشاريع العميل ب على نفس الخادم، كل منها بلوحاته وتكاملاته مع GitHub بشكل منفصل.
إذا احتجت إلى حقول مخصصة على المهام، تحقق من التوثيق الرسمي لـ Kaneo قبل الاعتماد عليها: الحقول المخصصة ضمن خارطة الطريق، لكن توفرها يختلف حسب الإصدار المنشور.
Webhooks لأتمتة CI/CD
تُعدّ webhooks Kaneo من أبرز مزاياه لفرق التطوير. عند كل تغيير في حالة مهمة — نقل عمود، تعيين، تعليق — يرسل Kaneo طلب POST بصيغة JSON إلى العنوان الذي تختاره.
حالات الاستخدام الشائعة:
- إشعار Slack: أضف رابط Incoming Webhook لقناتك لتلقي تنبيه عند انتقال مهمة إلى "قيد التنفيذ" أو "مكتملة".
- تشغيل خط CI: أرسل الحدث إلى نظام CI الخاص بك (GitHub Actions، Gitea Actions، Jenkins) لتشغيل بناء أو نشر تلقائي عند وصول مهمة إلى عمود مستهدف.
- مزامنة مع نظام خارجي: يمكن توجيه الطلبات إلى أي API — أداة تقارير، قاعدة تذاكر، أو webhook لـ n8n لأتمتة تدفقات معقدة.
اختبر نقاط الوصول بخدمة مثل webhook.site قبل ربطها بالإنتاج، للتحقق من تطابق التنسيق مع ما يتوقعه نظام CI الخاص بك.
النسخ الاحتياطي واستعادة PostgreSQL
يخزّن Kaneo جميع بياناته في PostgreSQL 16. النسخ الاحتياطي المنتظم ضروري: بدونه، قد تفقد سجل مهامك كاملًا في حال تعطّل التحديث أو تلف وحدة التخزين.
أتمتة النسخ الاحتياطي بـ cron وrclone
# /etc/cron.d/kaneo-backup
0 3 * * * root docker exec kaneo-db pg_dump -U kaneo kaneo | gzip > /var/backups/kaneo/$(date +\%Y\%m\%d).sql.gz
5 3 * * * root rclone copy /var/backups/kaneo/ s3:my-bucket/kaneo/ --max-age 30dاستبدل kaneo-db باسم حاوية PostgreSQL الفعلي (docker ps للتحقق).
استعادة نسخة احتياطية
docker stop kaneo-app
gunzip -c /var/backups/kaneo/20260901.sql.gz | docker exec -i kaneo-db psql -U kaneo kaneo
docker start kaneo-appاحتفظ بسبعة نسخ محلية على الأقل و30 يومًا من النسخ البعيدة. اختبر الاستعادة على بيئة منفصلة قبل أن تحتاجها فعلاً.
تحديث Kaneo إلى إصدار جديد
يُصدر Kaneo نسخه على GitHub. إجراء التحديث معياري لنشر Docker Compose:
docker compose pull
docker compose up -d
docker compose psقبل أي تحديث، أجرِ نسخًا احتياطيًا كاملًا. اقرأ ملاحظات الإصدار على GitHub: بعض التحديثات تتضمن ترحيل قاعدة بيانات يعمل تلقائيًا عند بدء تشغيل الحاوية. إذا فشل الترحيل، ستجد التفاصيل في سجلات الحاوية (docker logs kaneo-app).
إعداد SMTP لإشعارات البريد الإلكتروني
لا يتطلب Kaneo افتراضيًا خادم SMTP: التسجيل يتم بالبريد وكلمة المرور دون رابط تحقق. هذا يبسّط النشر الأولي لكنه يحدّ من إشعارات البريد (إعادة تعيين كلمة المرور، تنبيهات المهام).
إذا كان إصدارك من Kaneo يدعم إعداد SMTP، فالمتغيرات في ملف docker-compose.yml:
SMTP_HOST=smtp.your-domain.com
SMTP_PORT=587
SMTP_USER=kaneo@your-domain.com
SMTP_PASSWORD=your-password
SMTP_FROM=kaneo@your-domain.comبعد تعديل المتغيرات، أعد تشغيل الحاويات بـ docker compose up -d. اختبر الإرسال من واجهة الإدارة قبل إغلاق التسجيل العام.
استكشاف الأخطاء: أكثر المشكلات شيوعًا
الحاوية تُعيد التشغيل باستمرار عند البدء
السبب الأكثر شيوعًا: متغير سري مفقود أو مشوّه في ملف البيئة. تحقق من سجلات الحاوية (docker logs kaneo-app) — يُشير الخطأ عادةً إلى المتغير الغائب.
الواجهة تحمّل لكن تسجيل الدخول يفشل بـ "Invalid credentials"
أول حساب يُنشأ هو المشرف. إذا أعدت تشغيل الحاوية دون حذف وحدة تخزين PostgreSQL، فالحساب موجود في قاعدة البيانات: جرّب تسجيل الدخول ببيانات أول تسجيل.
Webhooks لا تُطلَق
تحقق أن عنوان URL الوجهة متاح من الحاوية (ليس localhost على المضيف — استخدم عنوان IP خارجي أو اسم نطاق).
مزامنة GitHub تتوقف بعد ساعات
تطبيق GitHub يتطلب أن يكون عنوان الاستدعاء متاحًا عبر HTTPS من الإنترنت. تحقق من صلاحية شهادة SSL وأن المنفذ 443 مفتوح على خادمك.
أداء متراجع مع كثرة المهام
على VPS بذاكرة 1 جيجابايت، قد يصبح PostgreSQL عائقًا مع تنامي البيانات. زد shared_buffers في إعدادات PostgreSQL أو انتقل إلى خطة بذاكرة 2 جيجابايت.
Kaneo وPlane وHuly: أيهم تستضيف ذاتيًا؟
مرّر الجدول أفقيًا
| المعيار | Kaneo | Plane | Huly |
|---|---|---|---|
| الرخصة | MIT | AGPL-3.0 | EPL-2.0 |
| الحاويات المطلوبة | 2 (تطبيق + PostgreSQL) | 5–7 (API، worker، Redis، RabbitMQ، MinIO…) | 6–8 (API، Collaborator، MongoDB، MinIO، Elastic…) |
| الذاكرة الموصى بها | 1 جيجابايت (يعمل) | 2–4 جيجابايت كحد أدنى | 4–8 جيجابايت موصى به |
| لوحات Kanban | نعم | نعم (Cycles، Modules) | نعم (Issues، Planner) |
| تكامل GitHub | Milestones + webhooks | استيراد Issues، GitLab أيضًا | Issues وPRs والفروع |
| عروض Gantt | لا | نعم | نعم (Planner) |
| دردشة مدمجة | لا | لا | نعم (Chunter) |
| توثيق / ويكي | لا | Pages | Chunter + Documents |
| صعوبة النشر | منخفضة جدًا | متوسطة | عالية |
| الأنسب لـ | فرق الكود الأول، Kanban فقط | فرق المنتج المنظمة | استبدال Linear + Notion + Slack |
يعتمد الاختيار الصحيح على ما تريد استبداله. Kaneo يستبدل Trello أو Kanban خفيفًا بأدنى احتكاك في التثبيت. Plane يستبدل Jira المبسّط مع دورات ووحدات. Huly يستبدل منظومة أوسع (Linear + Notion + Slack) لكنه يحتاج جهازًا أقوى وإعدادًا أطول. على VPS بذاكرة 1 جيجابايت، يعمل Kaneo فقط بشكل مريح — يحتاج Plane 2 جيجابايت، بينما يستلزم Huly 4 جيجابايت على الأقل للاستقرار.