تثبيت Coolify: نشر التطبيقات مع PaaS المستضاف ذاتياً
تثبيت Coolify، تكامل Docker وGit، نشر التطبيقات، إدارة قواعد البيانات، شهادات SSL، متغيرات البيئة وبديل PaaS المستضاف ذاتياً لـ Heroku/Netlify.
تثبيت Nextcloud مع Docker، تهيئة Apache/Nginx، إعداد قاعدة البيانات، شهادة SSL، مزامنة الملفات، متجر التطبيقات وتحسين الأداء.
Nextcloud هو بديل مفتوح المصدر ومستضاف ذاتياً لخدمات التخزين السحابي مثل Google Drive وDropbox وOneDrive. بالإضافة إلى تخزين الملفات ومزامنتها، يوفر التقويم وجهات الاتصال ومؤتمرات الفيديو وتحرير المستندات والمزيد. يتناول هذا الدليل تثبيت Nextcloud مع Docker Compose وتهيئة Nginx reverse proxy وتحسين الأداء.
Nextcloud هو منصة تعاون تمنحك التحكم الكامل في بياناتك:
mkdir -p /opt/nextcloud/{data,db,redis}
cd /opt/nextcloud
version: '3.8'
services:
db:
image: postgres:16-alpine
container_name: nextcloud-db
restart: unless-stopped
environment:
POSTGRES_DB: nextcloud
POSTGRES_USER: nextcloud
POSTGRES_PASSWORD: كلمة-مرور-قوية
volumes:
- ./db:/var/lib/postgresql/data
networks:
- nextcloud-net
redis:
image: redis:7-alpine
container_name: nextcloud-redis
restart: unless-stopped
command: redis-server --requirepass كلمة-مرور-redis
volumes:
- ./redis:/data
networks:
- nextcloud-net
app:
image: nextcloud:28-fpm-alpine
container_name: nextcloud-app
restart: unless-stopped
depends_on:
- db
- redis
environment:
POSTGRES_HOST: db
POSTGRES_DB: nextcloud
POSTGRES_USER: nextcloud
POSTGRES_PASSWORD: كلمة-مرور-قوية
NEXTCLOUD_ADMIN_USER: admin
NEXTCLOUD_ADMIN_PASSWORD: كلمة-مرور-المسؤول
NEXTCLOUD_TRUSTED_DOMAINS: cloud.example.com
REDIS_HOST: redis
REDIS_HOST_PASSWORD: كلمة-مرور-redis
PHP_MEMORY_LIMIT: 512M
PHP_UPLOAD_LIMIT: 10G
volumes:
- ./data:/var/www/html
networks:
- nextcloud-net
nginx:
image: nginx:alpine
container_name: nextcloud-nginx
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./data:/var/www/html:ro
- ./nginx.conf:/etc/nginx/nginx.conf:ro
- ./ssl:/etc/ssl/nextcloud:ro
depends_on:
- app
networks:
- nextcloud-net
cron:
image: nextcloud:28-fpm-alpine
container_name: nextcloud-cron
restart: unless-stopped
volumes:
- ./data:/var/www/html
entrypoint: /cron.sh
depends_on:
- db
- redis
networks:
- nextcloud-net
networks:
nextcloud-net:
driver: bridge
# شهادة Let's Encrypt مع Certbot
apt install certbot -y
certbot certonly --standalone -d cloud.example.com
# نسخ الشهادات
mkdir -p /opt/nextcloud/ssl
cp /etc/letsencrypt/live/cloud.example.com/fullchain.pem /opt/nextcloud/ssl/
cp /etc/letsencrypt/live/cloud.example.com/privkey.pem /opt/nextcloud/ssl/
# التجديد التلقائي عبر cron
echo "0 3 * * * certbot renew --quiet && cp /etc/letsencrypt/live/cloud.example.com/*.pem /opt/nextcloud/ssl/ && docker restart nextcloud-nginx" | crontab -
cd /opt/nextcloud
docker compose up -d
# متابعة السجلات
docker compose logs -f app
# بعد التثبيت، افتح:
# https://cloud.example.com
إدارة Nextcloud باستخدام أداة سطر الأوامر occ:
# تشغيل أمر occ
docker exec -u www-data nextcloud-app php occ [الأمر]
# التحقق من حالة النظام
docker exec -u www-data nextcloud-app php occ status
# تبديل وضع الصيانة
docker exec -u www-data nextcloud-app php occ maintenance:mode --on
docker exec -u www-data nextcloud-app php occ maintenance:mode --off
# إضافة الفهارس المفقودة
docker exec -u www-data nextcloud-app php occ db:add-missing-indices
# فحص الملفات (اكتشاف الملفات الجديدة)
docker exec -u www-data nextcloud-app php occ files:scan --all
# مسح ذاكرة التخزين المؤقت
docker exec -u www-data nextcloud-app php occ cache:clear
# قائمة المستخدمين
docker exec -u www-data nextcloud-app php occ user:list
# قائمة التطبيقات المتاحة
docker exec -u www-data nextcloud-app php occ app:list
# تثبيت التطبيقات
docker exec -u www-data nextcloud-app php occ app:install calendar
docker exec -u www-data nextcloud-app php occ app:install contacts
docker exec -u www-data nextcloud-app php occ app:install talk
docker exec -u www-data nextcloud-app php occ app:install onlyoffice
Redis مهيأ بالفعل في docker-compose.yml. أضف إلى تهيئة Nextcloud:
docker exec -u www-data nextcloud-app php occ config:system:set redis host --value="redis"
docker exec -u www-data nextcloud-app php occ config:system:set redis port --value=6379 --type=integer
docker exec -u www-data nextcloud-app php occ config:system:set redis password --value="كلمة-مرور-redis"
docker exec -u www-data nextcloud-app php occ config:system:set memcache.local --value="\\OC\\Memcache\\APCu"
docker exec -u www-data nextcloud-app php occ config:system:set memcache.distributed --value="\\OC\\Memcache\\Redis"
docker exec -u www-data nextcloud-app php occ config:system:set memcache.locking --value="\\OC\\Memcache\\Redis"
# إضافة نطاق موثوق
docker exec -u www-data nextcloud-app php occ config:system:set trusted_domains 1 --value="cloud.example.com"
# الحماية من القوة الغاشمة
docker exec -u www-data nextcloud-app php occ config:system:set auth.bruteforce.protection.enabled --value=true --type=boolean
# فرض 2FA
docker exec -u www-data nextcloud-app php occ twofactorauth:enforce --on
نوصي باستخدام تخزين SSD لـ Nextcloud على خوادم REXE. أداء NVMe SSD يحدث فرقاً حاسماً في نقل الملفات الكبيرة.
يحدث هذا الخطأ لأن النطاق الذي تصل إليه ليس في قائمة النطاقات الموثوقة في Nextcloud. أضف النطاق بالأمر: 'docker exec -u www-data nextcloud-app php occ config:system:set trusted_domains 1 --value="cloud.example.com"'. أو قم بتحرير /opt/nextcloud/data/config/config.php وأضفه إلى مصفوفة trusted_domains.
قم بزيادة قيم PHP_UPLOAD_LIMIT وPHP_MEMORY_LIMIT في docker-compose.yml. قم أيضاً بتحديث قيمة client_max_body_size في تهيئة Nginx. اضبط fastcgi_read_timeout على 3600 أو أعلى. أعد تشغيل الحاويات بعد إجراء التغييرات.
تأكد من أن التخزين المؤقت Redis نشط. قم بتفعيل APCu. أضف فهارس قاعدة البيانات بـ 'occ db:add-missing-indices'. إذا كنت تستخدم PostgreSQL (أسرع من MySQL)، قم بتشغيل VACUUM ANALYZE. تحقق من أن مهمة cron لتوليد المعاينات تعمل بانتظام.
قم بتحديث إصدار الصورة في docker-compose.yml (مثلاً nextcloud:28 → nextcloud:29). قم بتشغيل 'docker compose pull && docker compose up -d'. بعد التحديث، قم بتشغيل 'occ upgrade' و'occ db:add-missing-indices'. قم دائماً بعمل نسخة احتياطية قبل تحديثات الإصدارات الرئيسية.
يتطلب تطبيق Talk خادم TURN/STUN. قم بإعداد Coturn أو استخدم خادم STUN المجاني من Nextcloud. قم بتهيئة عنوان خادم STUN/TURN في إعدادات Talk. تأكد من أن المنافذ 3478 (UDP/TCP) و5349 (TLS) مفتوحة.
قم بتفعيل تطبيق 'External Storage Support' في Nextcloud. انتقل إلى Settings → Administration → External Storages في لوحة المسؤول. يمكنك إضافة أنواع التخزين: S3 وFTP وSFTP وSMB/CIFS وWebDAV. يمكنك تعريف تخزين خارجي مختلف لكل مستخدم أو مجموعة.
تثبيت Coolify، تكامل Docker وGit، نشر التطبيقات، إدارة قواعد البيانات، شهادات SSL، متغيرات البيئة وبديل PaaS المستضاف ذاتياً لـ Heroku/Netlify.
تثبيت Portainer CE، إدارة Docker وKubernetes، نشر الـ stacks، إدارة الأحجام/الشبكات، تفويض المستخدمين، Webhooks وتكامل GitOps.
تثبيت Uptime Kuma مع Docker، مراقبة HTTP/TCP/DNS/ping، تكاملات الإشعارات (Telegram، Discord، البريد الإلكتروني)، إنشاء صفحة الحالة وتهيئة التنبيهات.