سيرفر مخصص: تثبيت Nextcloud
تم إنشاء هذا الدليل باستخدام المنتجات التالية:
(قد تختلف التفاصيل مع المنتجات من مزودين مختلفين ولكن المفاهيم الرئيسية تظل كما هي)
مقدمة
Nextcloud هو حل سحابي مفتوح المصدر وفرع من Owncloud، تأسس في 2016 على يد مؤسس Owncloud السابق فرانك كاليشيك.
لتحقيق أفضل أداء واستقرار ووظائف، يُنصح بالإعداد التالي لاستضافة سيرفر Nextcloud. سيرفر Nextcloud غير متوافق مع Windows وMacOS، على الأقل ليس بدون استخدام تقنيات افتراضية أو حلول مشابهة.
التحضير
المتطلبات التالية موصى بها من قبل المطورين وتعتمد على تجربتنا الخاصة. قد تواجه مشاكل إذا لم تستوفِ هذه المتطلبات الأساسية.
العتاد
المكونات | الحد الأدنى | الموصى به |
---|---|---|
المعالج (CPU) | 2x 1 GHz | 4x 2+ GHz |
الذاكرة (RAM) | 512 ميجابايت | 4+ جيجابايت |
التخزين | 10 جيجابايت | 50+ جيجابايت |
عرض النطاق | 100 ميجابت/ث (رفع وتنزيل) | 500 ميجابت/ث (رفع وتنزيل) موصى به إذا كان من المفترض أن يستخدم عدة مستخدمين السحابة |
البرمجيات
النظام الأساسي | الخيارات |
---|---|
نظام التشغيل | Ubuntu (14.04, 16.04, 18.04)، Debian(8,9,10)، CentOS 6.5/7 |
قاعدة البيانات | MySQL أو MariaDB 5.5+ (موصى به)، SQLite (موصى به فقط للاختبار والحالات البسيطة) |
سيرفر الويب | Apache 2.4 مع mod_php أو php-fpm (موصى به) |
PHP | 5.6، 7.0 (موصى به)، 7.1 (موصى به)، 7.2 |
التحضير
يجب إنشاء اتصال عبر عميل SSH لتثبيت السحابة على سيرفر Linux. إذا لم تكن متأكدًا من كيفية استخدام SSH، إليك دليل لذلك: الوصول الأولي (SSH)
بمجرد إنشاء الاتصال، يمكنك البدء بتثبيت الحزم اللازمة لتثبيت Nextcloud فعليًا. يشمل ذلك تثبيت سيرفر ويب وPHP.
- Debian
- Ubuntu
- CentOS
Apache (سيرفر الويب)
🗄️ Debian 8/9/10:
sudo apt update && sudo apt -y upgrade
sudo apt -y install apache2
PHP (مفسر النصوص الفائقة)
🗄️ Debian 8:
# الخطوة 1: إضافة مستودع PHP 7.3 PPA
sudo apt -y install lsb-release apt-transport-https ca-certificates
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php7.3.list
# الخطوة 2: تثبيت PHP 7.3
sudo apt -y install php7.3
# الخطوة 3: تثبيت امتدادات PHP 7.3
sudo apt install php7.3-cli php7.3-fpm php7.3-json php7.3-pdo php7.3-mysql php7.3-zip php7.3-gd php7.3-mbstring php7.3-curl php7.3-xml php7.3-bcmath php7.3-json
🗄️ Debian 9:
# الخطوة 1: إضافة مستودع PHP 7.3 PPA
sudo apt -y install lsb-release apt-transport-https ca-certificates
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php7.3.list
# الخطوة 2: تثبيت PHP 7.3
sudo apt -y install php7.3
# الخطوة 3: تثبيت امتدادات PHP 7.3
sudo apt install php7.3-cli php7.3-fpm php7.3-json php7.3-pdo php7.3-mysql php7.3-zip php7.3-gd php7.3-mbstring php7.3-curl php7.3-xml php7.3-bcmath php7.3-json
🗄️ Debian 10:
# الخطوة 1: تثبيت PHP 7.3
sudo apt -y install php php-common
# الخطوة 2: تثبيت امتدادات PHP 7.3
sudo apt -y install php-cli php-fpm php-json php-pdo php-mysql php-zip php-gd php-mbstring php-curl php-xml php-pear php-bcmath
تحقق من إصدار PHP للتأكد من الوظائف
php -v
Apache (سيرفر الويب)
🗄️ Ubuntu 16.X/18.X/19.X:
sudo apt update && sudo apt -y upgrade
sudo apt-get -y install apache2
PHP (مفسر النصوص الفائقة)
🗄️ Ubuntu 16.X:
# الخطوة 1: إضافة مستودع PHP 7.3 PPA
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ondrej/php
# الخطوة 2: تثبيت PHP 7.3
sudo apt-get update
sudo apt-get install -y php7.3
# الخطوة 3: تثبيت امتدادات PHP 7.3
sudo apt install php7.3-cli php7.3-fpm php7.3-json php7.3-pdo php7.3-mysql php7.3-zip php7.3-gd php7.3-mbstring php7.3-curl php7.3-xml php7.3-bcmath php7.3-json
🗄️ Ubuntu 18.X:
# الخطوة 1: إضافة مستودع PHP 7.3 PPA
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ondrej/php
# الخطوة 2: تثبيت PHP 7.3
sudo apt-get update
sudo apt-get install -y php7.3
# الخطوة 3: تثبيت امتدادات PHP 7.3
sudo apt install php7.3-cli php7.3-fpm php7.3-json php7.3-pdo php7.3-mysql php7.3-zip php7.3-gd php7.3-mbstring php7.3-curl php7.3-xml php7.3-bcmath php7.3-json
🗄️ Ubuntu 19.X:
# الخطوة 1: إضافة مستودع PHP 7.3 PPA
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ondrej/php
# الخطوة 2: تثبيت PHP 7.3
sudo apt-get update
sudo apt-get install -y php7.3
# الخطوة 3: تثبيت امتدادات PHP 7.3
sudo apt install php7.3-cli php7.3-fpm php7.3-json php7.3-pdo php7.3-mysql php7.3-zip php7.3-gd php7.3-mbstring php7.3-curl php7.3-xml php7.3-bcmath php7.3-json
تحقق من إصدار PHP للتأكد من الوظائف
php -v
Apache (سيرفر الويب)
🗄️ CentOS 6:
sudo yum -y update
sudo yum -y install httpd
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
sudo systemctl start httpd
sudo systemctl enable httpd.service
🗄️ CentOS 7:
sudo yum -y update
sudo yum -y install httpd
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
sudo systemctl start httpd
sudo systemctl enable httpd
🗄️ CentOS 8:
sudo yum -y update
sudo yum -y install httpd
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
sudo systemctl start httpd
sudo systemctl enable httpd
PHP (مفسر النصوص الفائقة)
🗄️ CentOS 6:
# الخطوة 1: إعداد مستودع Yum
yum install epel-release
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
# الخطوة 2: تثبيت PHP 7.3
yum --enablerepo=remi-php73 install php
# الخطوة 3: تثبيت امتدادات PHP 7.3
yum --enablerepo=remi-php73 install php-xml php-soap php-xmlrpc php-mbstring php-json php-gd php-mcrypt
🗄️ CentOS 7:
# الخطوة 1: إعداد مستودع Yum
yum install epel-release
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
# الخطوة 2: تثبيت PHP 7.3
yum --enablerepo=remi-php73 install php
# الخطوة 3: تثبيت امتدادات PHP 7.3
yum --enablerepo=remi-php73 install php-xml php-soap php-xmlrpc php-mbstring php-json php-gd php-mcrypt
🗄️ CentOS 8:
# الخطوة 1: إعداد مستودع Yum
dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm
# الخطوة 2: تثبيت PHP 7.3
dnf module reset php
dnf module enable php:remi-7.3
dnf install php
تحقق من إصدار PHP للتأكد من الوظائف
php -v
الخطوة التالية هي تحديد نوع قاعدة البيانات لتخزين المعلومات ذات الصلة. هناك عدة خيارات:
- MariaDB
- MySQL
- PostgreSQL
- SQLite
إذا قررت استخدام هذا النوع من قواعد البيانات، فعليك اتباع الخطوات التالية:
تثبيت الحزمة:
sudo apt-get install mariadb-server php-mysql
أثناء التثبيت سيُطلب منك تعيين كلمة مرور root. إذا لم يُطلب تعيين كلمة مرور، فالكلمة الافتراضية فارغة. هذا غير آمن ويجب تغييره فورًا!
الخطوة التالية هي الاتصال بسيرفر قاعدة البيانات وإنشاء قاعدة البيانات المطلوبة:
mysql -u root -p
CREATE DATABASE nextcloud;
بعد ذلك يجب إنشاء مستخدم يحصل على صلاحية الوصول إلى قاعدة بيانات Nextcloud.
CREATE USER 'nc_user'@'localhost' IDENTIFIED BY 'YOUR_PASSWORD_HERE';
لا تتخطى هذه الخطوة باستخدام مستخدم root. هذا غير آمن وقد يعرض بياناتك للخطر!
الخطوة الأخيرة هي منح الصلاحيات للمستخدم الجديد:
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nc_user'@'localhost';
FLUSH PRIVILEGES;
بعد الانتهاء، يمكنك الضغط على Ctrl-D للخروج من قاعدة البيانات ومتابعة الخطوات التالية.
إذا قررت استخدام هذا النوع من قواعد البيانات، فعليك اتباع الخطوات التالية:
تثبيت الحزمة:
sudo apt-get install mysql-server php-mysql
أثناء التثبيت سيُطلب منك تعيين كلمة مرور root. إذا لم يُطلب تعيين كلمة مرور، فالكلمة الافتراضية فارغة. هذا غير آمن ويجب تغييره فورًا!
الخطوة التالية هي الاتصال بسيرفر قاعدة البيانات وإنشاء قاعدة البيانات المطلوبة:
mysql -u root -p
CREATE DATABASE nextcloud;
بعد ذلك يجب إنشاء مستخدم يحصل على صلاحية الوصول إلى قاعدة بيانات Nextcloud.
CREATE USER 'nc_user'@'localhost' IDENTIFIED BY 'YOUR_PASSWORD_HERE';
لا تتخطى هذه الخطوة باستخدام مستخدم root. هذا غير آمن وقد يعرض بياناتك للخطر!
الخطوة الأخيرة هي منح الصلاحيات للمستخدم الجديد:
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nc_user'@'localhost';
FLUSH PRIVILEGES;
بعد الانتهاء، يمكنك الضغط على Ctrl-D للخروج من قاعدة البيانات ومتابعة الخطوات التالية.
إذا قررت استخدام هذا النوع من قواعد البيانات، فعليك اتباع الخطوات التالية:
تثبيت الحزمة:
sudo apt-get update
sudo apt-get install postgresql postgresql-contrib
أثناء التثبيت سيُطلب منك تعيين كلمة مرور root. إذا لم يُطلب تعيين كلمة مرور، فالكلمة الافتراضية فارغة. هذا غير آمن ويجب تغييره فورًا!
الخطوة التالية هي الاتصال بسيرفر قاعدة البيانات وإنشاء قاعدة البيانات المطلوبة:
sudo -u postgres psql
CREATE DATABASE nextcloud;
بعد ذلك يجب إنشاء مستخدم يحصل على صلاحية الوصول إلى قاعدة بيانات Nextcloud.
CREATE USER nextcloud with encrypted password 'YOUR_PASSWORD_HERE';
لا تتخطى هذه الخطوة باستخدام مستخدم root. هذا غير آمن وقد يعرض بياناتك للخطر!
الخطوة الأخيرة هي منح الصلاحيات للمستخدم الجديد:
grant all privileges on database mydb to myuser;
FLUSH PRIVILEGES;
بعد الانتهاء، يمكنك الضغط على Ctrl-D للخروج من قاعدة البيانات. بعد ذلك يمكنك تعديل قاعدة بيانات PostgreSQL إما عبر مثبت الويب أو عبر ملف config.php.
<?php
$AUTOCONFIG = array(
"dbtype" => "pgsql",
"dbname" => "nextcloud",
"dbuser" => "username",
"dbpass" => "password",
"dbhost" => "localhost",
"dbtableprefix" => "",
);
إذا قررت استخدام هذا النوع من قواعد البيانات، فعليك اتباع الخطوات التالية:
تثبيت الحزمة:
apt-get install sqlite3 php-sqlite3
إنشاء قاعدة بيانات SQLite 3 جديدة
sqlite3 DatabaseName.db
بعد ذلك، يمكن تعديل قاعدة بيانات SQLite 3 إما عبر مثبت الويب أو عبر ملف config.php.
<?php
$AUTOCONFIG = array(
"dbtype" => "sqlite",
"dbname" => "nextcloud",
"dbtableprefix" => "",
);
التثبيت
الآن يمكن بدء التثبيت الفعلي لـ Nextcloud. يجب تنزيل البرنامج وفك ضغطه:
cd /var/www/
wget https://download.nextcloud.com/server/releases/latest.zip
apt-get install unzip
unzip latest.zip
chown -R www-data:www-data nextcloud
rm latest.zip
بمجرد الانتهاء من هذه الخطوة، حان الوقت لتشغيل سكربت التثبيت. يمكن الوصول إليه عبر المتصفح من خلال الرابط التالي:
تظهر صفحة إعداد سكربت التثبيت، حيث يتم إنشاء مستخدم root وتعريف معلومات قاعدة البيانات:
الأمان والسلامة
تحذيرات الإعداد
مجلد البيانات
ننصح بشدة بوضع مجلد البيانات خارج مجلد الجذر الخاص بالويب (أي خارج /var/www). أسهل طريقة للقيام بذلك هي أثناء التثبيت الجديد. يمكن تحديد المجلد أثناء الإعداد. ومع ذلك، يجب إنشاء المجلد أولاً وتعيين الأذونات المناسبة. يمكن تخزين البيانات مثلاً في مجلد يسمى Cloud داخل مجلد المنزل.
mkdir /home/cloud/
chown -R www-data:www-data /home/cloud/
HTTPS عبر شهادة SSL (Let's Encrypt)
يجب أن يكون الحل السحابي الجيد متاحًا فقط عبر اتصال SSL. بدون تشفير SSL، يتم نقل البيانات والمعلومات كنص عادي. يمكن اعتراض هذه المعلومات بسهولة وسرعة وقراءتها بدون تشفير.
<IfModule mod_ssl.c>
<VirtualHost *:443>
DocumentRoot "/var/www/nextcloud"
ServerName domain.tld
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/nextcloud/>
Options +FollowSymlinks
AllowOverride All
<IfModule mod_dav.c>
Dav off
</IfModule>
SetEnv HOME /var/www/nextcloud
SetEnv HTTP_HOME /var/www/nextcloud
Satisfy Any
</Directory>
SSLCertificateFile /etc/letsencrypt/live/domain.tld/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/domain.tld/privkey.pem
</VirtualHost>
</IfModule>
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15768000; preload"
</IfModule>
علاوة على ذلك، يجب إعادة توجيه كل حركة HTTP إلى HTTPS باستخدام إعادة توجيه دائمة مع رمز الحالة 301. يمكن تحقيق ذلك باستخدام Apache مع تكوين مثل تكوين Apache VirtualHosts التالي:
<VirtualHost *:80>
ServerName domain.tld
Redirect permanent / https://domain.tld/
</VirtualHost>
إدارة Nextcloud
يمكن الوصول إلى Nextcloud عبر المتصفح، وكذلك عبر الهاتف الذكي والكمبيوتر باستخدام التطبيق. يمكن العثور على مصادر التنزيل هنا: https://nextcloud.com/install/#install-clients
ضمن الإعدادات يمكنك تعديل بعض الخيارات حتى بعد الإعداد وعرض معلومات مهمة مثل السجلات والأنشطة. يشمل ذلك إعدادات أمان إضافية (المصادقة الثنائية، التشفير، ...)، إعدادات التصميم (الشعار، اللون، الشعار النصي، الرأس)، إعدادات الوصول والمزيد.
التطبيقات
بالإضافة إلى ذلك، هناك إمكانية تثبيت تطبيقات إضافية بخلاف التطبيقات الافتراضية. يمكنك الوصول إليها عبر عنصر القائمة التطبيقات.
مع هذه التطبيقات يمكنك تخصيص Nextcloud أكثر حسب رغباتك.