لماذا استضافة مدير المشاريع بنفسك
Linear وAsana وMonday.com — أدوات إدارة المشاريع SaaS تفرض رسوماً على كل مستخدم وترفع الأسعار بانتظام. TREK يعكس النموذج: تستضيف التطبيق على خادمك الخاص، لا تغادر بياناتك بنيتك التحتية أبداً، والتكلفة الشهرية هي تكلفة الخادم لا الاشتراكات.
مع أكثر من 14 ألف نجمة GitHub ورخصة AGPL-3.0، TREK مشروع مجتمعي نشط. الإصدار 4.3.3 مستقر وأصيل في Docker، ولا يحتاج قاعدة بيانات خارجية: SQLite مُدمج في الصورة.
ما الذي تحصل عليه مع TREK المستضاف ذاتيًا
- لوحات Kanban غير محدودة — أنشئ ما تشاء من المشاريع والأعمدة دون قيود على عدد المستخدمين.
- المعالم والسبرينت — خطط بدورات منتظمة وتابع التقدم في لوحة التحكم.
- إدارة الفريق — ادعُ أعضاء وحدد أدواراً (مدير، عضو، مراقب) لكل مشروع.
- واجهة REST API — ادمج خطوط CI/CD لإنشاء التذاكر أو تحديث الحالات تلقائياً.
- OIDC / SSO — وصّل Authentik أو Pocket ID أو Keycloak لتسجيل دخول مركزي.
- مرفقات الملفات — ارفع الملفات ولقطات الشاشة مباشرة على التذاكر.
- SQLite مدمج — لا قاعدة بيانات خارجية، والنسخ الاحتياطي بأمر واحد.
المتطلبات الأساسية
تحتاج إلى خادم VPS Ubuntu 24.04 بـ 1 جيجابايت من الذاكرة على الأقل و1 جيجابايت مساحة تخزين. Docker والإضافة Compose يجب أن يكونا مثبَّتين:
curl -fsSL https://get.docker.com | shلا يلزم اسم نطاق للتثبيت الأولي — يمكن الوصول إلى TREK عبر نفق SSH.
تثبيت TREK
إنشاء الدليل وملف Compose
على الخادم، أنشئ دليلاً مخصصاً:
mkdir -p /opt/trek && cd /opt/trekأنشئ
/opt/trek/docker-compose.yml:services: trek: image: mauriceboe/trek:4.3.3 restart: unless-stopped ports: - "127.0.0.1:3000:3000" environment: NODE_ENV: production ENCRYPTION_KEY: "استبدل-بسلسلة-عشوائية-32-حرفا" ADMIN_EMAIL: [email protected] ADMIN_PASSWORD: "كلمةمرورقوية42!" TRUST_PROXY: "1" volumes: - trek-data:/app/data - trek-uploads:/app/uploads volumes: trek-data: {} trek-uploads: {}⚠️ في بيئة الإنتاج، استبدل
ENCRYPTION_KEYبسلسلة عشوائية لا تقل عن 32 حرفاً واختر كلمة مرور قوية للمسؤول.تشغيل TREK
شغّل الحاوية:
docker compose up -dيُنزّل TREK الصورة (نحو 462 ميغابايت)، ويهيّئ قاعدة SQLite ثم يشغّل Node.js. تُنفَّذ هجرات Drizzle ORM عند أول تشغيل. انتظر من 30 إلى 45 ثانية قبل الوصول إلى الواجهة.
تحقق من بدء التشغيل:
docker compose logs -f trekابحث عن السطر
Server listening on port 3000، فهو الإشارة إلى أن TREK أصبح جاهزاً.الوصول إلى الواجهة
افتح نفقاً SSH من جهازك المحلي:
ssh -L 3000:127.0.0.1:3000 root@<ip-vps>ثم افتح
http://localhost:3000في متصفحك. تظهر صفحة تسجيل الدخول إلى TREK. سجّل الدخول بـ[email protected]وكلمة المرور التي حددتها فيADMIN_PASSWORD.إنشاء مشروعك الأول
بعد تسجيل الدخول:
1. انقر على مساحة عمل جديدة ← وامنحها اسماً.
2. انقر على مشروع جديد ← واختر قالب Kanban.
3. أضف أول تذكرة في عمود قيد الانتظار.أصبحت جاهزاً للعمل. ادعُ زملاءك من الإعدادات ← الأعضاء.
تكوين نطاق وخادم nginx
للوصول إلى TREK من أي جهاز دون نفق SSH، أضف نطاقاً وهيّئ nginx كوكيل عكسي. مثال على كتلة خادم nginx لـ HTTPS:
server {
listen 443 ssl;
server_name trek.your-domain.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}أضف بعد ذلك APP_URL: https://trek.your-domain.com إلى متغيرات بيئة خدمة TREK ليتم استخدام الرابط الصحيح في روابط الدعوة وإشعارات OIDC.
النسخ الاحتياطي والصيانة
يخزّن TREK بياناته في حجمَين Docker: trek-data (قاعدة SQLite) وtrek-uploads (المرفقات). احفظ نسخة احتياطية من كليهما:
# Database
docker run --rm -v trek_trek-data:/data -v /backup:/backup alpine \
tar czf /backup/trek-data-$(date +%Y%m%d).tar.gz -C /data .
# Uploads
docker run --rm -v trek_trek-uploads:/data -v /backup:/backup alpine \
tar czf /backup/trek-uploads-$(date +%Y%m%d).tar.gz -C /data .لتحديث TREK إلى إصدار جديد، عدّل وسم الصورة في docker-compose.yml ثم شغّل:
docker compose pull && docker compose up -dتُطبَّق هجرات SQLite تلقائياً عند بدء التشغيل.