تثبيت Nextcloud: التخزين السحابي المستضاف ذاتياً والتعاون
تثبيت Nextcloud مع Docker، تهيئة Apache/Nginx، إعداد قاعدة البيانات، شهادة SSL، مزامنة الملفات، متجر التطبيقات وتحسين الأداء.
جدول المحتويات
تثبيت Nextcloud: التخزين السحابي المستضاف ذاتياً والتعاون
Nextcloud هو بديل مفتوح المصدر ومستضاف ذاتياً لخدمات التخزين السحابي مثل Google Drive وDropbox وOneDrive. بالإضافة إلى تخزين الملفات ومزامنتها، يوفر التقويم وجهات الاتصال ومؤتمرات الفيديو وتحرير المستندات والمزيد. يتناول هذا الدليل تثبيت Nextcloud مع Docker Compose وتهيئة Nginx reverse proxy وتحسين الأداء.
ما هو Nextcloud؟
Nextcloud هو منصة تعاون تمنحك التحكم الكامل في بياناتك:
- تخزين الملفات: تخزين غير محدود (محدود فقط بسعة القرص)
- المزامنة: عملاء لـ Windows وmacOS وLinux وiOS وAndroid
- متجر التطبيقات: أكثر من 200 تطبيق (Nextcloud Talk، Calendar، Contacts، Office)
- إدارة المستخدمين: تكامل LDAP/AD، إدارة المجموعات
- الأمان: تشفير من طرف إلى طرف، 2FA، سجل التدقيق
متطلبات النظام
- Ubuntu 22.04 أو Debian 12
- ذاكرة RAM لا تقل عن 2 جيجابايت (يُنصح بـ 4 جيجابايت)
- قرص لا يقل عن 20 جيجابايت (مساحة إضافية للتخزين)
- Docker وDocker Compose مثبتان
التثبيت مع Docker Compose
إنشاء هيكل الدليل
mkdir -p /opt/nextcloud/{data,db,redis}
cd /opt/nextcloud
ملف docker-compose.yml
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
شهادة SSL
# شهادة 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 -
تشغيل Nextcloud
cd /opt/nextcloud
docker compose up -d
# متابعة السجلات
docker compose logs -f app
# بعد التثبيت، افتح:
# https://cloud.example.com
أوامر occ
إدارة 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
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 يحدث فرقاً حاسماً في نقل الملفات الكبيرة.
مقالات ذات صلة
تثبيت Coolify: نشر التطبيقات مع PaaS المستضاف ذاتياً
تثبيت Coolify، تكامل Docker وGit، نشر التطبيقات، إدارة قواعد البيانات، شهادات SSL، متغيرات البيئة وبديل PaaS المستضاف ذاتياً لـ Heroku/Netlify.
إدارة Docker مع Portainer: التحكم في الحاويات عبر واجهة الويب
تثبيت Portainer CE، إدارة Docker وKubernetes، نشر الـ stacks، إدارة الأحجام/الشبكات، تفويض المستخدمين، Webhooks وتكامل GitOps.
تثبيت Uptime Kuma: مراقبة وقت التشغيل المستضافة ذاتياً
تثبيت Uptime Kuma مع Docker، مراقبة HTTP/TCP/DNS/ping، تكاملات الإشعارات (Telegram، Discord، البريد الإلكتروني)، إنشاء صفحة الحالة وتهيئة التنبيهات.