التثبيت التلقائي

الطريقة التلقائية: سكربت واحد من الحساب الشخصي يجهّز السيرفر بالكامل (حزمة الويب Apache + PHP، قاعدة البيانات، أدوات الأمان، cron). بعد ذلك — نشر اللوحة، وإصدار SSL، وإدخال الترخيص. تعمل على Ubuntu/Debian: على VPS جديد تُعدّ كل شيء من الصفر، وعلى سيرفر مُعدّ مسبقًا — إضافةً فقط (ملف «سيرفر مُعدّ»، الخطوة 01). كل الأوامر أدناه مرتّبة، ما عليك سوى التمرير من الأعلى للأسفل.

القيم النائبة في الأوامر استبدلها بقيمك: monitor.example.com — نطاقك؛ 203.0.113.10 — عنوان IP الحقيقي للسيرفر؛ /var/www/monitor — جذر اللوحة (حيث توجد public/ وassets/ وconfig.php)؛ وابتكر كلمة مرور خاصة بك لقاعدة البيانات.
الحزمة الكاملة («الحماية الكاملة») مخصصة لـ VPS جديد. على Ubuntu/Debian نظيف تُعدّ نظام الأمان من الصفر — Fail2ban (jail.local)، وroot-crontab، وقواعد UFW، وإعداد Apache. إذا كان السيرفر مُعدًّا مسبقًا (لوحة تعمل، ومواقع، وبريد، وjail خاصة بك) — اختر ملف «سيرفر مُعدّ»: فهو يُدخل تغييرات إضافية فقط ولا يمسّ جدار الحماية، وFail2ban، والبريد، وSSH، وsysctl. عند اكتشاف لوحة استضافة يتحوّل السكربت إلى هذا الوضع تلقائيًا. قبل التشغيل الأول يمكنك تفعيل التشغيل التجريبي (بتحديد الخيار في الحساب) — سيعرض ما سيُنفَّذ دون تغيير أي شيء. وعلى سيرفر يعمل، خذ لقطة (snapshot) احتياطًا.

01. أمر الإعداد التلقائي من الحساب الشخصي

تحصل على الأمر من حسابك الشخصي my.arciveo.com ← قسم «إعداد السيرفر» (متاح بعد تفعيل Arcivéo Monitor). وهو مرتبط بحسابك ويحتوي على رمز شخصي.

يُجهّز السكربت السيرفر بالكامل: حزمة الويب (Apache + PHP)، وقاعدة البيانات، وأدوات SSL، والمجموعة الكاملة من وسائل الحماية ومهام cron (Lynis وSMART وdebsums وLogwatch والتقرير اليومي وتحديث ipsum).

1) اختر مستوى الحماية (في الحساب، قبل نسخ الأمر):

  • الحماية الكاملة (موصى بها) — UFW (جدار ناري)، Fail2ban، CrowdSec + bouncer، ipsum (قائمة حظر عناوين IP)، Suricata (IDS/IPS)، Falco، ModSecurity + OWASP CRS (WAF)، PSAD، mod_evasive (مضاد DoS)، AIDE (سلامة الملفات)، debsums، ClamAV + maldet (مضاد فيروسات)، Auditd، AppArmor، Monit، Lynis (تدقيق)، Logwatch، تحديثات الأمان التلقائية.
  • الخفيفة — للسيرفرات VPS ذات الذاكرة RAM المحدودة: مجموعة أساسية بدون المكوّنات الثقيلة.
  • سيرفر مُعَد مسبقًا (لوحة استضافة) — لسيرفر يعمل بالفعل مزوّد بلوحة (HestiaCP وما شابه) ومواقع وبريد: تغييرات إضافية فقط (تثبيت أدوات، cron، قواعد sudo)، بينما يبقى الجدار الناري وFail2ban والبريد وSSH وsysctl كما هي. على سيرفر مزوّد بلوحة يختار السكربت هذا الوضع تلقائيًا.
تشغيل تجريبي. في الحساب يمكن تفعيل خيار «تشغيل تجريبي» — عندها يعرض الأمر فقط ما سيثبّته السكربت ويغيّره، ثم ينتهي دون المساس بأي شيء. مفيد على سيرفر مُعَد مسبقًا: تشغيل تجريبي أولًا، ثم تشغيل فعلي بدون الخيار.

2) نفّذ على السيرفر بصلاحيات root الأمر من الحساب — يبدو هكذا:

curl -fsSL "https://my.arciveo.com/install.php?token=YOUR_TOKEN" | sudo bash
احتفظ بالأمر سرًّا — فهو مرتبط بحسابك. الرابط له مدة صلاحية محدودة؛ إذا انتهت، اضغط في الحساب «الحصول على رابط جديد».
بعد الإعداد التلقائي يكون سيرفر الويب Apache + PHP-FPM، وأدوات الأمان ومهام cron مثبّتة وتعمل «جاهزة للاستخدام» — دون حاجة إلى أي إعداد إضافي.

02. النطاق وDNS

لفتح لوحة التحكم عبر عنوان مثل monitor.example.com والحصول على SSL مجاني، يجب أن يشير النطاق إلى السيرفر. في لوحة إدارة DNS (لدى المُسجِّل أو المستضيف) أنشئ سجل A:

النوع: A الاسم: monitor (نطاق فرعي → monitor.example.com) أو @ (جذر النطاق → example.com) القيمة: 203.0.113.10 ← عنوان IP الخاص بسيرفرك TTL: 3600

بعد بضع دقائق (وأحياناً حتى ساعة) تحقق من أن النطاق يشير إلى السيرفر:

dig +short monitor.example.com # يجب أن يُرجِع عنوان IP الخاص بك # أو، إن لم يتوفر dig: getent hosts monitor.example.com
يُصدَر شهادة SSL (الخطوة 06) للنطاق فقط — لذلك يجب أن يشير DNS إلى السيرفر قبل إصدار الشهادة.

03. رفع ملفات اللوحة

الإعداد التلقائي أنشأ بالفعل مجلد اللوحة /var/www/monitor وضبط موقع Apache (DocumentRoot على جذر اللوحة، PHP-FPM، AllowOverride لملف .htaccess). لا حاجة لإنشاء المجلد أو vhost يدويًا — فقط ارفع الملفات واضبط الصلاحيات.
ملفات اللوحة (أرشيف التوزيعة) تُنزَّل بعد الشراء من الحساب الشخصي على my.arciveo.com«التنزيلات». فك ضغط الأرشيف قبل رفعه إلى السيرفر.

ارفع محتوى التوزيعة إلى /var/www/monitor (بحيث يظهر داخله public/ وassets/ وconfig.php إلخ) — عبر SFTP/SCP (FileZilla / WinSCP) أو بأمر scp من جهازك المحلي:

scp -r ./monitor/* deploy@203.0.113.10:/var/www/monitor/
لكي يُكتب نطاقك مباشرةً في vhost (ServerName)، مرّره إلى أمر الإعداد التلقائي في الخطوة 01 نفسها: … | sudo bash -s -- monitor.example.com (أو حدّد النطاق في حقل «نطاق اللوحة» في الحساب الشخصي). إن لم يُمرَّر النطاق — تستجيب اللوحة لأي مضيف وعبر عنوان IP، وسيكتب certbot قيمة ServerName عند إصدار SSL (الخطوة 06)؛ ولا حاجة لإعادة أي تثبيت.
اضبط صلاحيات الملفات — هذه خطوة إلزامية. إن رفعت الملفات بحساب root أو عبر SFTP، فستكون مملوكة لـroot، ولن يستطيع سيرفر الويب (www-data) قراءتها — فتُفتح اللوحة فارغة أو بخطأ 403 (في السجل: .htaccess unreadable / directory not executable). الأمر التالي يصلح ذلك:
# نضبط صلاحيات جذر الويب بالكامل: المجلد الذي أنشأه root غير متاح # لسيرفر الويب (www-data) — بدون ذلك تعرض اللوحة صفحة فارغة أو خطأ 403. cd /var/www/monitor # ننشئ مجلدات العمل قبل chown — وإلا ستبقى المجلدات الجديدة root:root # ولن يستطيع سيرفر الويب (www-data) الكتابة فيها عند chmod 750. sudo mkdir -p data/lynis data/logwatch tmp logs sudo chown -R www-data:www-data /var/www/monitor sudo find /var/www/monitor -type d -exec chmod 755 {} \; sudo find /var/www/monitor -type f -exec chmod 644 {} \; sudo chmod 640 /var/www/monitor/config.php sudo chmod 750 data tmp logs

افتح لنفسك رفع الملفات عبر SFTP. بعد الأمر أعلاه تصبح كل الملفات مملوكة لـwww-data، بينما يتصل FileZilla / WinSCP بحسابك أنت — عندئذ يفشل الرفع بالخطأ SSH_FX_PERMISSION_DENIED (Permission denied). اختر أحد الخيارين.

الخيار A — قائمة ACL لحسابك وحده (موصى به). صلاحية الكتابة تكون لك وحدك، ويبقى سيرفر الويب غير قادر على استبدال كود اللوحة:

sudo apt install -y acl # صلاحية كتابة لحسابك على كامل مجلد اللوحة: sudo setfacl -R -m u:deploy:rwX /var/www/monitor # القاعدة نفسها كإعداد افتراضي — للملفات والمجلدات التي تُنشأ لاحقًا: sudo setfacl -R -d -m u:deploy:rwX /var/www/monitor

الخيار B — عبر مجموعة www-data. أبسط، لكن صلاحية الكتابة على ملفات اللوحة يحصل عليها سيرفر الويب أيضًا: مع ثغرة في PHP يمكن استبدال الكود. ترتيب الأوامر مهم — config.php ومجلدات العمل تُغلق في النهاية:

sudo usermod -aG www-data deploy # كتابة للمجموعة + setgid (البِت 2): الملفات المرفوعة عبر SFTP تبقى # في مجموعة www-data، وإلا لن تستطيع اللوحة استبدالها. sudo find /var/www/monitor -type d -exec chmod 2775 {} \; sudo find /var/www/monitor -type f -exec chmod 664 {} \; sudo chmod 640 /var/www/monitor/config.php sudo chmod 2750 /var/www/monitor/data /var/www/monitor/tmp /var/www/monitor/logs
بعد الخيار B أعد الاتصال في FileZilla (الخادم ← قطع الاتصال، ثم الدخول من جديد) — المجموعة الجديدة لا تسري إلا عند تسجيل دخول جديد، وقبل ذلك تبقى بلا صلاحيات. التحقق: id deploy — يجب أن تظهر www-data في قائمة المجموعات؛ ls -ld /var/www/monitor — الصلاحيات drwxrwsr-x، وحرف s بدل x يعني أن setgid مفعَّل.

04. قاعدة البيانات

أنشئ قاعدة بيانات ومستخدمًا، ثم استورد المخطط. تُلصق كتلة قاعدة البيانات في الطرفية بالكامل (sudo mysql يدخل بحساب root عبر مقبس unix — لا حاجة لكلمة مرور root). monitor_db وmonitor_user اسمان للمثال، يمكنك اختيار أي اسمين؛ احفظ اسم قاعدة البيانات والمستخدم وكلمة المرور — ستُدخلها في config.php في الخطوة التالية:

# 1. قاعدة البيانات. كلمة المرور تُحدَّد مرة واحدة في DBPASS وتُدرَج في كل السطور. # تُلصق الكتلة في الطرفية بالكامل؛ sudo mysql يدخل بحساب root عبر مقبس unix # (لا حاجة لكلمة مرور root). لا تستخدم `sudo mysql -u root -p` التفاعلي # مع اللصق — فعند اللصق ستذهب سطور SQL إلى مطالبة كلمة المرور وتُفقَد. DBPASS='CHOOSE_A_PASSWORD' # ← غيّر هذا السطر فقط sudo mysql <<SQL CREATE DATABASE IF NOT EXISTS monitor_db CHARACTER SET utf8mb4; CREATE USER IF NOT EXISTS 'monitor_user'@'localhost' IDENTIFIED BY '$DBPASS'; GRANT ALL ON monitor_db.* TO 'monitor_user'@'localhost'; FLUSH PRIVILEGES; SQL # التحقق (يجب أن يُظهر monitor_db): mysql -u monitor_user -p"$DBPASS" -e "SHOW DATABASES;" # أدخِل كلمة المرور ذاتها في config.php → DB_PASS.
لا حاجة لاستيراد المخطط — تنشئ اللوحة الجداول وحساب admin تلقائيًا عند أول دخول من المتصفح (من database/db.sql)، إذا كانت قاعدة البيانات فارغة.
sudo لسيرفر الويب أعدّه الإعداد التلقائي بالفعل — ترى الوحدات بيانات النظام فورًا. لا تحتاج لإعداد sudo يدويًا إلا إذا كان PHP يعمل بمستخدم غير قياسي (ليس www-data).

05. إعداد config.php

config.php في جذر لوحة التحكم (/var/www/monitor/config.php) — الملف الوحيد الذي يجب تعديله يدويًا. جميع إعدادات اللوحة معرّفة فيه كثوابت define(). افتحه في محرر:

sudo nano /var/www/monitor/config.php

ضع قيمك مكان التمييزات، واترك الباقي كما هو:

// --- قاعدة البيانات (من الخطوة 04) --- define('DB_HOST', 'localhost'); // اتركه define('DB_NAME', 'db_name'); // ما أنشأته في الخطوة 04 define('DB_USER', 'user'); // ما أنشأته في الخطوة 04 define('DB_PASS', 'db_password'); // ما حددته في الخطوة 04 define('DB_CHARSET', 'utf8mb4'); // اتركه // --- التطبيق --- define('APP_URL', 'https://monitor.example.com'); // عنوان اللوحة، دون شرطة مائلة في النهاية define('TIMEZONE', 'Asia/Riyadh'); // منطقتك الزمنية // --- مدة الجلسة --- define('SESSION_LIFETIME', 28800); // مدة الخمول قبل إعادة تسجيل الدخول، ثانية (28800 = 8 س)

ما الذي يجب تغييره:

  • DB_NAME وDB_USER وDB_PASS — نفس اسم قاعدة البيانات والمستخدم وكلمة المرور التي حددتها عند إنشاء القاعدة في الخطوة 04 (إن أبقيت الأمثلة — monitor_db / monitor_user). لا تلمس DB_HOST وDB_CHARSET.
  • APP_URL — العنوان الكامل للوحة مع https://، دون شرطة مائلة في النهاية ودون www. يجب أن يطابق النطاق الذي تُفعّل عليه الترخيص (الخطوة 07)، وإلا سيُرفض المفتاح.
  • TIMEZONE — منطقتك الزمنية (القائمة — timedatectl list-timezones). يؤثر فقط على كيفية عرض اللوحة للتواريخ؛ ولا يؤثر على وقت تشغيل مهام cron (هناك تعمل منطقة النظام).
  • SESSION_LIFETIME — بعد كم ثانية من الخمول تطلب اللوحة تسجيل الدخول من جديد (افتراضيًا 8 ساعات). مثلًا 3600 = ساعة، 86400 = يوم.
  • كتلة تسجيل الأخطاء (display_errors, log_errors, error_log) — اتركها على الوضع الافتراضي.

احفظ الملف (Ctrl+O، Enter، ثم Ctrl+X) وأعد تشغيل PHP-FPM — وإلا فلن تُطبَّق التغييرات بسبب OPcache:

sudo systemctl restart php*-fpm
config.php ملف سري (يحتوي على كلمة مرور قاعدة البيانات). يوجد في جذر اللوحة الذي هو جذر الويب نفسه، لكنه محمي: صلاحيات 640 (مضبوطة في الخطوة 03) ومنع صريح في .htaccess الجذر. لا تنشره في مستودعات عامة ولا ترسله للدعم مع كلمة المرور الحقيقية.
شرح مفصل لجميع المعاملات — في الأسئلة الشائعة: «ملف config.php — جميع إعدادات اللوحة».

06. إصدار SSL (HTTPS)

لوحة التحكم تعمل عبر HTTPS فقط. جلسة الدخول تستخدم كوكيز آمنة، وWebAuthn (2FA) وفق المعيار لا يعمل إلا عبر HTTPS. عبر http:// لن تتمكن من تسجيل الدخول.

تم بالفعل تثبيت certbot وإضافة Apache عبر الإعداد التلقائي. يجب أن يكون DNS النطاق مُوجَّهًا مسبقًا إلى السيرفر (الخطوة 02). الإصدار بأمر واحد:

sudo certbot --apache -d monitor.example.com
ما الذي سيسأل عنه certbot:
  1. Enter email address — بريدك الإلكتروني (إليه تصل إشعارات انتهاء الشهادة).
  2. Terms of Service … (Y)es/(N)oY.
  3. Share email with the EFF … (Y)es/(N)o — حسب اختيارك.
بعد ذلك يُصدِر certbot الشهادة تلقائيًا، ويكتب <VirtualHost *:443>، ويُعدّ إعادة التوجيه http→https والتجديد التلقائي. في النهاية — Successfully enabled HTTPS.
إذا فشل الإصدار — تحقق من أن dig +short monitor.example.com يُرجِع عنوان IP السيرفر وأن المنفذين 80/443 مفتوحان (sudo ufw allow 80,443/tcp).

بعد الإصدار: يُفتح https://monitor.example.com بقفل الأمان، ويُعيد http:// التوجيه إلى https://.

07. تسجيل الدخول والإعداد الأولي

افتح https://monitor.example.com، وسجّل الدخول بـ admin / useradmin ثم أكمل قائمة التحقق:

  1. تغيير كلمة مرور admin — قسم «المستخدمون» في القائمة.
  2. تفعيل WebAuthn (2FA) — «مفاتيح WebAuthn» ← سجّل مفتاحاً/passkey (يتطلب HTTPS). سجّل مفتاحين دفعة واحدة: عند فقدان المفتاح الوحيد يتعذّر تسجيل الدخول به. التفاصيل.
  3. تقييد الوصول حسب عنوان IP — «الإعدادات» ← «تقييد الوصول حسب عنوان IP» (أدخل عنوان IP الخاص بك قبل التفعيل، وإلا ستحجب وصولك عن نفسك).
  4. إدخال الترخيص — فعّل رمز التفعيل ARCIVEO-… من الحساب الشخصي على نطاقك ثم ألصق المفتاح في «الإعدادات» ← «الترخيص». التفاصيل.
  5. إعداد الإشعارات — Telegram و/أو البريد الإلكتروني في «الإعدادات». التفاصيل.
  6. حذف أداة التثبيت public/start_db.php إن بقيت: فهي تتيح إعادة إنشاء قاعدة البيانات دون مصادقة. وما دام الملف موجوداً في جذر اللوحة أو في public/، تنبّه اللوحة إليه ببانر أحمر.
تم. أدوات الأمان تعمل بالفعل — ستعرض لوحة التحكم حالتها ودرجة الأمان فوراً. دليل كل أداة موجود في FAQ.
Arcivéo - Security Monitor © 2026