تثبيت Coolify: نشر التطبيقات مع PaaS المستضاف ذاتياً
تثبيت Coolify، تكامل Docker وGit، نشر التطبيقات، إدارة قواعد البيانات، شهادات SSL، متغيرات البيئة وبديل PaaS المستضاف ذاتياً لـ Heroku/Netlify.
تثبيت Portainer CE، إدارة Docker وKubernetes، نشر الـ stacks، إدارة الأحجام/الشبكات، تفويض المستخدمين، Webhooks وتكامل GitOps.
Portainer هو منصة إدارة حاويات مفتوحة المصدر تتيح لك إدارة بيئات Docker وKubernetes عبر متصفح الويب. دون الحاجة إلى معرفة سطر الأوامر، يمكنك بسهولة تشغيل الحاويات وإيقافها وعرض السجلات ونشر الـ stacks.
Portainer Community Edition (CE) مجاني ومفتوح المصدر. الميزات الرئيسية:
# إنشاء حجم لتخزين بيانات Portainer
docker volume create portainer_data
docker run -d \
--name portainer \
--restart=always \
-p 8000:8000 \
-p 9443:9443 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
بعد التثبيت:
https://IP_الخادم:9443
عند تسجيل الدخول الأول، تحتاج إلى تعيين كلمة مرور المسؤول. إذا لم تسجل الدخول خلال 5 دقائق، يحتاج Portainer إلى إعادة التشغيل لأسباب أمنية.
# portainer-compose.yml
version: '3.8'
services:
portainer:
image: portainer/portainer-ce:latest
container_name: portainer
restart: always
ports:
- "8000:8000"
- "9443:9443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- portainer_data:/data
security_opt:
- no-new-privileges:true
volumes:
portainer_data:
docker compose -f portainer-compose.yml up -d
يتواصل Portainer مع Docker daemon عبر /var/run/docker.sock. يوفر الوصول إلى هذا الـ socket تحكماً كاملاً في Docker:
# التحقق من أذونات الـ socket
ls -la /var/run/docker.sock
# إضافة المستخدم إلى مجموعة docker (إذا لزم الأمر)
usermod -aG docker $USER
الوصول إلى Docker socket يعادل صلاحيات root. قم بتشغيل Portainer على شبكات موثوقة واستخدم كلمة مرور قوية.
# مثال: WordPress Stack
version: '3.8'
services:
wordpress:
image: wordpress:latest
restart: always
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: ${DB_USER}
WORDPRESS_DB_PASSWORD: ${DB_PASSWORD}
WORDPRESS_DB_NAME: wordpress
volumes:
- wordpress_data:/var/www/html
depends_on:
- db
db:
image: mysql:8.0
restart: always
environment:
MYSQL_DATABASE: wordpress
MYSQL_USER: ${DB_USER}
MYSQL_PASSWORD: ${DB_PASSWORD}
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
volumes:
- db_data:/var/lib/mysql
volumes:
wordpress_data:
db_data:
https://github.com/user/repo# في واجهة Portainer:
# Containers → اختر الحاوية → Actions:
# - Start / Stop / Restart / Kill / Pause
# - Logs (في الوقت الفعلي)
# - Console (طرفية الويب)
# - Inspect (تفاصيل JSON)
# - Stats (استخدام CPU وRAM والشبكة)
# Containers → انقر على اسم الحاوية
# تبويب Console → Connect
# اختر الـ shell: /bin/bash أو /bin/sh
# Settings → Teams → Add Team
# اسم الفريق: developers
# إضافة الأعضاء: مستخدم1، مستخدم2
# إنشاء webhook لـ Stack أو Service:
# Stack → اسم الـ Stack → Webhooks
# نسخ URL الـ webhook
# الاستخدام في GitHub Actions:
curl -X POST https://portainer.example.com/api/webhooks/WEBHOOK_TOKEN
# تثبيت Edge Agent على الخادم البعيد:
docker run -d \
--name portainer_edge_agent \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/lib/docker/volumes:/var/lib/docker/volumes \
-v /:/host \
-v portainer_agent_data:/data \
-e EDGE=1 \
-e EDGE_ID=EDGE_ID_الخاص_بك \
-e EDGE_KEY=EDGE_KEY_الخاص_بك \
-e EDGE_INSECURE_POLL=1 \
portainer/agent:latest
# إيقاف وحذف الحاوية الحالية
docker stop portainer
docker rm portainer
# سحب أحدث صورة
docker pull portainer/portainer-ce:latest
# إعادة التشغيل (البيانات محفوظة في الحجم)
docker run -d \
--name portainer \
--restart=always \
-p 8000:8000 \
-p 9443:9443 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
بتثبيت Portainer على خوادم REXE، يمكنك إدارة جميع حاويات Docker من واجهة ويب واحدة. مفيد بشكل خاص للخوادم التي تشغّل خدمات متعددة.
افتح المنفذ 9443 في جدار حماية الخادم: 'ufw allow 9443/tcp'. تحقق من أن الحاوية تعمل: 'docker ps | grep portainer'. إذا أردت استخدام HTTP، افتح أيضاً المنفذ 9000 وأضف المعامل '-p 9000:9000'.
أوقف حاوية Portainer. أعد تعيين كلمة المرور بالأمر 'docker run --rm -v portainer_data:/data portainer/helper-reset-password'. ستظهر كلمة المرور المؤقتة الجديدة على الشاشة. أعد تشغيل Portainer وسجل الدخول بكلمة المرور المؤقتة وعيّن كلمة مرور جديدة.
تحقق من أذونات Docker socket: 'ls -la /var/run/docker.sock'. تأكد من أن حاوية Portainer لديها وصول إلى الـ socket. إذا كان SELinux أو AppArmor نشطاً، أضف علامة ':z' أو ':Z' لتركيب الـ socket.
تأكد من أن مشغّل السجلات للحاوية هو 'json-file' أو 'local'. تحقق بالأمر 'docker inspect CONTAINER_ID | grep LogConfig'. إذا كان مشغّل 'none' مستخدماً، لا يمكن عرض السجلات. حدد مشغّل التسجيل صراحةً في docker-compose.yml.
أضف بيئات جديدة من قائمة Environments. اختر 'Local' لـ Docker على نفس الخادم. للخوادم البعيدة، اختر 'Docker Standalone' أو 'Docker Swarm' وأدخل TCP endpoint (المنفذ 2375/2376). استخدم شهادات TLS للاتصالات الآمنة. مع Edge Agent يمكنك الاتصال بالخوادم خلف جدران الحماية.
نعم، يوفر Portainer CE دعم Kubernetes. أضف بيئتك عبر Environments → Add Environment → Kubernetes برفع ملف kubeconfig أو تثبيت agent. يمكنك إدارة namespaces وdeployments وservices وingresses وpods من واجهة الويب.
تثبيت Coolify، تكامل Docker وGit، نشر التطبيقات، إدارة قواعد البيانات، شهادات SSL، متغيرات البيئة وبديل PaaS المستضاف ذاتياً لـ Heroku/Netlify.
تثبيت Nextcloud مع Docker، تهيئة Apache/Nginx، إعداد قاعدة البيانات، شهادة SSL، مزامنة الملفات، متجر التطبيقات وتحسين الأداء.
تثبيت Uptime Kuma مع Docker، مراقبة HTTP/TCP/DNS/ping، تكاملات الإشعارات (Telegram، Discord، البريد الإلكتروني)، إنشاء صفحة الحالة وتهيئة التنبيهات.