🚀 SRVOS

دليلك الشامل لإعداد خادم Apache احترافي على دبيان لينكس

ماذا ستتعلم في هذا الدليل؟

دليل شامل من الصفر حتى الاحتراف — خادم ويب + شبكة منزلية محصّنة بالكامل

💿 تثبيت دبيان لينكس

إعداد النظام من الصفر، تقسيم القرص، إعداد SSH والاتصال من جهازك

🌐 خادم الويب الكامل

Apache 2.4 + PHP 8.2 + MariaDB + phpMyAdmin + SSL مجاني من Let's Encrypt

🔒 تأمين الخادم

UFW، Fail2Ban، SSH Key فقط، إخفاء معلومات الخادم، Logwatch للمراقبة

⚡ تحسين الأداء

OPcache، Gzip، Browser Caching، PHP-FPM، نسخ احتياطية تلقائية

📤 رفع الملفات

SFTP عبر FileZilla و WinSCP، FTP آمن، Git + Auto-Deploy، rsync

🐳 Docker والتطبيقات

Docker Compose، Portainer، WordPress، Nextcloud، Jellyfin، Vaultwarden

🛡️ جدار الحماية OPNsense

تحويل جهاز قديم لراوتر احترافي — IDS/IPS Suricata، Firewall Rules، DHCP

🔐 WireGuard VPN

وصول آمن لشبكتك المنزلية من أي مكان في العالم — مشفر بالكامل

🌍 DNS المشفر + DDNS

DNSCrypt-Proxy لتشفير استعلامات DNS، وربط دومينك من Cloudflare أو Namecheap بـ IP ديناميكي

📝 WordPress و Nginx

تثبيت WordPress احترافي مع wp-config، وإعداد Nginx كبديل خفيف وسريع

🛡️ AdGuard + IDS/IPS

حجب الإعلانات لكل الشبكة، وكشف الهجمات ومنعها بقواعد Emerging Threats

🔧 حل المشاكل

9 مشاكل شائعة مع حلولها: Apache، MariaDB، SSL، SSH، VPN، امتلاء القرص

🎯
للمبتدئين والمحترفين

شرح مفصل خطوة بخطوة

⌨️
أوامر جاهزة للنسخ

كل الأوامر قابلة للنسخ بضغطة

🆓
100% مجاني

كل البرامج مفتوحة المصدر

🇸🇦
باللغة العربية

شرح كامل بالعربي

🏠 ابنِ سيرفرك المحلي في منزلك!

لماذا تدفع آلاف الريالات سنوياً لشركات الاستضافة؟
استضف موقعك بنفسك بتحكم كامل 100%!

💰

وفّر المال

لا رسوم شهرية، لا تجديد سنوي، لا مفاجآت!

🎮

تحكم كامل

خادمك، قواعدك، لا قيود على الموارد!

🚀

تعلّم مهارات حقيقية

أصبح مدير أنظمة محترف من منزلك!

🔒

خصوصية مطلقة

بياناتك في منزلك، بعيدة عن السحابة!

💡 كل ما تحتاجه:

✓ كمبيوتر قديم
حتى لو عمره 10 سنوات يكفي!
✓ اتصال إنترنت
سرعة عادية تكفي تماماً
✓ ساعتين من وقتك
لإعداد كل شيء مرة واحدة
✓ هذا الدليل
كل الخطوات موجودة هنا!

🎯 ابدأ الآن واستضف مواقعك بنفسك!
اتبع الخطوات البسيطة أدناه ↓

💿 تثبيت دبيان لينكس كخادم

ℹ️ قبل البدء: هذا القسم يشرح كيفية تثبيت نظام دبيان لينكس على جهاز كمبيوتر ليصبح خادم منزلي. إذا كان لديك دبيان مثبت مسبقاً، انتقل مباشرة إلى قسم التثبيت والإعداد.
0

تحضير متطلبات التثبيت

قبل البدء في تثبيت دبيان، تحتاج إلى تحضير بعض الأشياء البسيطة.

أ) تحميل نسخة دبيان

✅ تحميل دبيان :
  • اذهب إلى: https://www.debian.org/download
  • اختر AMD64 للأجهزة الحديثة (64-bit)
  • حمّل النسخة netinst (حجمها صغير حوالي 600MB)
  • أو حمّل DVD-1 إذا كان الإنترنت بطيء (حوالي 4GB)

ب) إنشاء فلاشة التثبيت

ℹ️ الأدوات المطلوبة:
  • ويندوز: استخدم برنامج Rufus أو balenaEtcher
  • ماك: استخدم balenaEtcher
  • لينكس: استخدم dd أو balenaEtcher
⚠️ مهم جداً: حرق الفلاشة سيحذف جميع محتوياتها! احفظ ملفاتك المهمة أولاً.

ج) متطلبات الجهاز الموصى بها

الحد الأدنى (للخادم البسيط):
  • المعالج: أي معالج 1GHz
  • الذاكرة: 512MB RAM (1GB موصى به)
  • القرص: 10GB مساحة (20GB موصى به)
موصى به (لأداء جيد):
  • المعالج: ثنائي النواة 2GHz أو أفضل
  • الذاكرة: 4GB RAM
  • القرص: SSD 120GB أو أكثر
  • شبكة: كابل إيثرنت (أفضل من WiFi)
0.1

عملية التثبيت الأساسية

الآن سنبدأ عملية تثبيت دبيان لينكس على الجهاز.

الخطوة 1: الإقلاع من الفلاشة

ℹ️ كيفية الإقلاع:
  • أدخل الفلاشة في الجهاز
  • أعد تشغيل الجهاز
  • اضغط F12 أو F2 أو Del أو Esc (حسب نوع الجهاز)
  • اختر الإقلاع من USB

الخطوة 2: بدء التثبيت

في قائمة التثبيت:
  1. اختر "Install" (وليس Graphical Install للخادم)
  2. اللغة: اختر English (أفضل للخوادم)
  3. الموقع: اختر موقعك الجغرافي
  4. لوحة المفاتيح: اختر التخطيط المناسب

الخطوة 3: إعدادات الشبكة

  1. اسم المضيف (Hostname): اكتب srvos
  2. اسم النطاق (Domain): اتركه فارغاً أو اكتب local
  3. سيتم إعداد DHCP تلقائياً

الخطوة 4: إعداد المستخدمين

  1. كلمة مرور Root: اختر كلمة مرور قوية جداً واحفظها!
  2. إنشاء مستخدم عادي: اكتب اسمك
  3. اسم المستخدم: مثل admin أو اسمك
  4. كلمة المرور: كلمة مرور قوية للمستخدم
⚠️ مهم جداً: احفظ كلمات المرور في مكان آمن! ستحتاجها دائماً.

الخطوة 5: تقسيم القرص

للمبتدئين (موصى به):
  1. اختر "Guided - use entire disk"
  2. اختر القرص الصحيح (احذر من اختيار القرص الخطأ!)
  3. اختر "All files in one partition"
  4. اختر "Finish partitioning"
  5. اختر "Yes" لتأكيد التغييرات
⚠️ تحذير شديد: هذا سيحذف جميع البيانات على القرص المختار! تأكد من اختيار القرص الصحيح.

الخطوة 6: اختيار البرامج

في شاشة Software Selection:
  • SSH server (مهم جداً للوصول عن بُعد)
  • standard system utilities
  • ❌ أزل التحديد عن Desktop Environment (لا نحتاجه للخادم)
  • ❌ أزل التحديد عن Web server (سنثبته لاحقاً بطريقتنا)
✅ لماذا بدون واجهة رسومية؟
  • الخادم يستهلك موارد أقل
  • أداء أفضل وأسرع
  • أكثر أماناً
  • سنتحكم به عبر SSH من جهازك الشخصي

الخطوة 7: إنهاء التثبيت

  1. اختر Yes لتثبيت GRUB على القرص الرئيسي
  2. اختر القرص الذي ثبّت عليه النظام
  3. انتظر حتى ينتهي التثبيت
  4. اختر Continue لإعادة التشغيل
  5. أخرج الفلاشة عند إعادة التشغيل
🎉 تهانينا! دبيان لينكس الآن مثبت على جهازك! بعد إعادة التشغيل، ستظهر لك شاشة تسجيل الدخول السوداء.
0.2

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

الآن سنقوم بتسجيل الدخول الأول وإعداد الوصول عبر SSH للتحكم بالخادم من جهازك الشخصي.

تسجيل الدخول الأول

  1. اكتب اسم المستخدم الذي أنشأته
  2. اكتب كلمة المرور
  3. ستظهر لك شاشة الطرفية (Terminal)

معرفة عنوان IP الخادم

# معرفة عنوان IP
ip addr show
# أو استخدم الأمر الأبسط
hostname -I
ℹ️ ستحصل على عنوان IP مثل: 192.168.1.100 أو شبيه به - احفظ هذا العنوان!

الاتصال بالخادم من جهازك الشخصي

✅ من ويندوز:
  • حمّل برنامج PuTTY من putty.org
  • افتح PuTTY
  • أدخل عنوان IP الخادم
  • المنفذ: 22
  • اضغط Open
✅ من ماك أو لينكس: افتح Terminal واكتب:
# استبدل username بإسم مستخدمك
# استبدل 192.168.1.100 بعنوان IP خادمك
🎊 ممتاز! الآن يمكنك التحكم بخادمك بالكامل من جهازك الشخصي المريح!
انتقل الآن إلى الخطوة 1 لبدء تثبيت Apache وباقي البرامج ↓

📦 التثبيت والإعداد الأولي

1

تحديث النظام

قبل البدء بأي عملية تثبيت، يجب تحديث نظام دبيان للحصول على أحدث الحزم والتصحيحات الأمنية.

# تحديث قائمة الحزم المتوفرة
sudo apt update
# ترقية جميع الحزم المثبتة
sudo apt upgrade -y
# تثبيت الأدوات الأساسية
sudo apt install curl wget git vim -y
2

تثبيت Apache2

Apache هو أشهر وأقوى خادم ويب في العالم، يستخدمه ملايين المواقع لموثوقيته واستقراره.

# تثبيت خادم Apache
sudo apt install apache2 -y
# بدء تشغيل خدمة Apache
sudo systemctl start apache2
# تفعيل التشغيل التلقائي عند بدء النظام
sudo systemctl enable apache2
# التحقق من حالة الخدمة
sudo systemctl status apache2
✅ نجح التثبيت! يمكنك الآن فتح المتصفح وزيارة عنوان IP الخاص بخادمك لرؤية صفحة Apache الافتراضية.
3

تثبيت PHP

PHP هي لغة البرمجة الأساسية لمعظم تطبيقات الويب الديناميكية مثل WordPress و Joomla و Laravel.

# تثبيت PHP ووحدة Apache الخاصة بها
sudo apt install php libapache2-mod-php -y
# تثبيت الامتدادات الأساسية لـ PHP
sudo apt install php-mysql php-curl php-gd php-xml php-mbstring php-zip php-intl -y
# التحقق من إصدار PHP المثبت
php -v
# إعادة تشغيل Apache لتطبيق التغييرات
sudo systemctl restart apache2
4

تثبيت MariaDB

MariaDB هي قاعدة بيانات علائقية قوية ومفتوحة المصدر، بديل ممتاز ومتوافق تماماً مع MySQL.

# تثبيت خادم وعميل MariaDB
sudo apt install mariadb-server mariadb-client -y
# بدء تشغيل خدمة MariaDB
sudo systemctl start mariadb
# تفعيل التشغيل التلقائي
sudo systemctl enable mariadb
# تشغيل معالج تأمين قاعدة البيانات
sudo mysql_secure_installation
⚠️ مهم جداً! عند تشغيل معالج التأمين mysql_secure_installation:
  • اختر كلمة مرور قوية جداً لحساب root
  • أجب بـ "Y" (نعم) على جميع الأسئلة الأمنية
  • احذف المستخدمين المجهولين
  • امنع تسجيل الدخول root عن بُعد
  • احذف قاعدة بيانات الاختبار

إنشاء قاعدة بيانات ومستخدم جديد

ℹ️ لماذا ننشئ مستخدم جديد؟
استخدام حساب root في التطبيقات خطير أمنياً! دائماً أنشئ مستخدم خاص لكل تطبيق.
# الدخول إلى MySQL
sudo mysql -u root -p
# أدخل كلمة مرور root
✅ الآن أنت داخل MySQL Shell، نفّذ الأوامر التالية:
-- إنشاء قاعدة بيانات جديدة CREATE DATABASE mywebsite CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- إنشاء مستخدم جديد مع كلمة مرور قوية CREATE USER 'webuser'@'localhost' IDENTIFIED BY 'strong_password_here'; -- منح جميع الصلاحيات على قاعدة البيانات للمستخدم GRANT ALL PRIVILEGES ON mywebsite.* TO 'webuser'@'localhost'; -- تطبيق التغييرات FLUSH PRIVILEGES; -- الخروج EXIT;
⚠️ استبدل القيم التالية:
  • mywebsite - اسم قاعدة البيانات (استخدم اسم مشروعك)
  • webuser - اسم المستخدم (اختر اسم ذو معنى)
  • strong_password_here - كلمة مرور قوية (حروف + أرقام + رموز)

التحقق من المستخدم وقاعدة البيانات

# اختبار تسجيل الدخول بالمستخدم الجديد
mysql -u webuser -p
# داخل MySQL Shell:
-- عرض قواعد البيانات المتاحة SHOW DATABASES; -- اختيار قاعدة البيانات USE mywebsite; -- عرض الجداول (فارغة الآن) SHOW TABLES; -- الخروج EXIT;
✅ ممتاز! إذا نجح تسجيل الدخول، معنى ذلك أن المستخدم تم إنشاؤه بنجاح.

مثال عملي: إنشاء مستخدم لـ WordPress

# الدخول كـ root
sudo mysql -u root -p
-- قاعدة بيانات WordPress CREATE DATABASE wordpress_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- مستخدم WordPress CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'Wp@Strong#Pass2024'; -- منح الصلاحيات GRANT ALL PRIVILEGES ON wordpress_db.* TO 'wp_user'@'localhost'; -- تطبيق FLUSH PRIVILEGES; -- عرض المستخدمين للتحقق SELECT User, Host FROM mysql.user WHERE User = 'wp_user'; EXIT;

أوامر إضافية مفيدة

-- عرض جميع قواعد البيانات SHOW DATABASES; -- عرض جميع المستخدمين SELECT User, Host FROM mysql.user; -- عرض صلاحيات مستخدم معين SHOW GRANTS FOR 'webuser'@'localhost'; -- حذف مستخدم (إذا أخطأت) DROP USER 'webuser'@'localhost'; -- حذف قاعدة بيانات (احذر!) DROP DATABASE mywebsite; -- تغيير كلمة مرور مستخدم ALTER USER 'webuser'@'localhost' IDENTIFIED BY 'new_password';
💡 نصائح أمنية لكلمات المرور:
  • ✓ استخدم 16 حرف على الأقل
  • ✓ امزج حروف كبيرة وصغيرة وأرقام ورموز
  • ✓ لا تستخدم كلمات من القاموس
  • ✓ لا تستخدم نفس الكلمة لعدة مستخدمين
  • ✓ احفظها في مكان آمن (مدير كلمات المرور)

🔧 تكوين Apache والمواقع

5

إنشاء مجلد الموقع

سننشئ مجلد خاص لموقع srvos.com ونعين الصلاحيات المناسبة لضمان الأمان.

# إنشاء مجلد الموقع الرئيسي
sudo mkdir -p /var/www/srvos.com/public_html
# تعيين Apache كمالك للمجلد
sudo chown -R www-data:www-data /var/www/srvos.com
# تعيين صلاحيات القراءة والتنفيذ
sudo chmod -R 755 /var/www/srvos.com
6

إنشاء Virtual Host

Virtual Host يسمح لك باستضافة عدة مواقع مختلفة على خادم واحد، كل موقع بإعداداته الخاصة.

# إنشاء ملف تكوين الموقع
sudo nano /etc/apache2/sites-available/srvos.com.conf
ℹ️ محتوى ملف التكوين: انسخ والصق المحتوى التالي في الملف:
<VirtualHost *:80> ServerAdmin [email protected] ServerName srvos.com ServerAlias www.srvos.com DocumentRoot /var/www/srvos.com/public_html <Directory /var/www/srvos.com/public_html> Options -Indexes +FollowSymLinks AllowOverride All Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/srvos-error.log CustomLog ${APACHE_LOG_DIR}/srvos-access.log combined </VirtualHost>
# تفعيل الموقع الجديد
sudo a2ensite srvos.com.conf
# تعطيل الموقع الافتراضي
sudo a2dissite 000-default.conf
# تفعيل وحدة mod_rewrite للروابط الصديقة
sudo a2enmod rewrite
# اختبار صحة التكوين
sudo apache2ctl configtest
# إعادة تشغيل Apache
sudo systemctl restart apache2
✅ تم التكوين بنجاح! موقعك الآن جاهز على http://srvos.com
7

اختبار PHP

سننشئ صفحة اختبار بسيطة للتأكد من أن PHP يعمل بشكل صحيح مع Apache.

# إنشاء صفحة اختبار PHP
echo "<?php phpinfo(); ?>" | sudo tee /var/www/srvos.com/public_html/info.php
✅ جاهز للاختبار! افتح المتصفح وزر: http://srvos.com/info.php ستظهر لك صفحة تحتوي على جميع معلومات PHP المثبت.
⚠️ تنبيه أمني مهم: احذف ملف info.php فوراً بعد الاختبار لأسباب أمنية:
sudo rm /var/www/srvos.com/public_html/info.php
8

تثبيت phpMyAdmin

phpMyAdmin هي أداة رسومية قوية ومجانية لإدارة قواعد بيانات MySQL/MariaDB بسهولة عبر المتصفح.

# تثبيت phpMyAdmin
sudo apt install phpmyadmin -y
ℹ️ أثناء عملية التثبيت ستظهر لك عدة أسئلة:
  • اختر apache2 كخادم ويب (اضغط مسافة للتحديد ثم Enter)
  • اختر Yes لتكوين قاعدة البيانات باستخدام dbconfig-common
  • أدخل كلمة مرور MySQL root الخاصة بك
  • أدخل كلمة مرور جديدة قوية لمستخدم phpMyAdmin
# إنشاء رابط رمزي لـ phpMyAdmin
sudo ln -s /usr/share/phpmyadmin /var/www/srvos.com/public_html/phpmyadmin
# إعادة تشغيل Apache
sudo systemctl restart apache2
✅ تم التثبيت بنجاح! يمكنك الآن الوصول إلى phpMyAdmin عبر: http://srvos.com/phpmyadmin

تأمين phpMyAdmin (مهم جداً)

# إنشاء ملف .htaccess للحماية الإضافية
sudo nano /usr/share/phpmyadmin/.htaccess
ℹ️ أضف المحتوى التالي في الملف:
AuthType Basic AuthName "Restricted Access" AuthUserFile /etc/phpmyadmin/.htpasswd Require valid-user
# إنشاء ملف كلمات المرور
sudo htpasswd -c /etc/phpmyadmin/.htpasswd admin
# تعيين الصلاحيات المناسبة
sudo chown www-data:www-data /usr/share/phpmyadmin/.htaccess
⚠️ نصائح أمنية مهمة:
  • استخدم كلمة مرور قوية جداً (حروف كبيرة وصغيرة وأرقام ورموز)
  • يُفضل تغيير مسار الوصول من /phpmyadmin إلى اسم آخر عشوائي
  • فعّل HTTPS قبل استخدام phpMyAdmin في بيئة الإنتاج
  • قيّد الوصول لعناوين IP محددة إن أمكن

🔒 تأمين الخادم

9

تفعيل جدار الحماية UFW

UFW (Uncomplicated Firewall) هو جدار حماية بسيط وقوي يحمي خادمك من الوصول غير المصرح به.

# تثبيت UFW
sudo apt install ufw -y
# السماح بـ SSH (مهم جداً قبل التفعيل!)
sudo ufw allow ssh
# السماح بحركة Apache (HTTP و HTTPS)
sudo ufw allow 'Apache Full'
# تفعيل جدار الحماية
sudo ufw enable
# عرض حالة الجدار
sudo ufw status verbose
⚠️ تحذير شديد الأهمية! تأكد من السماح بـ SSH قبل تفعيل جدار الحماية، وإلا ستفقد الوصول إلى خادمك!
10

تثبيت شهادة SSL

شهادة SSL/TLS تشفر الاتصال بين الزوار والخادم، وهي مجانية تماماً من Let's Encrypt.

# تثبيت Certbot وإضافة Apache
sudo apt install certbot python3-certbot-apache -y
# الحصول على شهادة SSL وتكوينها تلقائياً
sudo certbot --apache -d srvos.com -d www.srvos.com
# اختبار التجديد التلقائي
sudo certbot renew --dry-run
✅ تم تفعيل SSL بنجاح! موقعك الآن يعمل بأمان على https://srvos.com سيتم تجديد الشهادة تلقائياً قبل انتهائها.
11

تأمين Apache

سنطبق إعدادات أمنية متقدمة لإخفاء معلومات الخادم وحمايته من الهجمات.

# تحرير ملف الأمان الرئيسي
sudo nano /etc/apache2/conf-enabled/security.conf
ℹ️ ابحث عن هذه الأسطر وعدّلها:
ServerTokens Prod ServerSignature Off TraceEnable Off
# تفعيل وحدة Headers للحماية الإضافية
sudo a2enmod headers
# إعادة تشغيل Apache لتطبيق التغييرات
sudo systemctl restart apache2

⚡ تحسين الأداء

12

تفعيل الضغط والتخزين المؤقت

تحسين سرعة الموقع عن طريق ضغط المحتوى وتخزينه مؤقتاً في متصفح الزائر.

# تفعيل وحدة الضغط
sudo a2enmod deflate
# تفعيل وحدة التخزين المؤقت
sudo a2enmod expires
# تفعيل وحدات Cache
sudo a2enmod cache
sudo a2enmod cache_disk
# إعادة تشغيل Apache
sudo systemctl restart apache2
✅ تم التفعيل بنجاح! الموقع الآن أسرع بكثير بفضل الضغط والتخزين المؤقت.
13

تحسين PHP

تحسين إعدادات PHP لأداء أفضل باستخدام OPcache ورفع حدود الموارد.

# تحرير ملف تكوين PHP
sudo nano /etc/php/8.2/apache2/php.ini
ℹ️ ابحث عن هذه الإعدادات وعدّلها:
memory_limit = 256M max_execution_time = 300 upload_max_filesize = 64M post_max_size = 64M ; تفعيل وتحسين OPcache opcache.enable=1 opcache.memory_consumption=128 opcache.max_accelerated_files=4000 opcache.revalidate_freq=60 opcache.fast_shutdown=1
# إعادة تشغيل Apache لتطبيق التغييرات
sudo systemctl restart apache2
14

النسخ الاحتياطية التلقائية

إنشاء نظام نسخ احتياطي آلي يومي للموقع وقاعدة البيانات لحماية بياناتك.

# إنشاء مجلد النسخ الاحتياطية
sudo mkdir -p /backup
# إنشاء سكريبت النسخ الاحتياطي
sudo nano /backup/backup.sh
ℹ️ أضف المحتوى التالي في السكريبت:
#!/bin/bash DATE=$(date +%Y%m%d_%H%M%S) BACKUP_DIR="/backup" # نسخ ملفات الموقع tar -czf $BACKUP_DIR/website_$DATE.tar.gz /var/www/srvos.com # نسخ قاعدة البيانات mysqldump -u root -p'YOUR_PASSWORD' database_name > $BACKUP_DIR/db_$DATE.sql gzip $BACKUP_DIR/db_$DATE.sql # حذف النسخ الأقدم من 7 أيام find $BACKUP_DIR -type f -mtime +7 -delete echo "تمت النسخة الاحتياطية بنجاح: $DATE"
# جعل السكريبت قابلاً للتنفيذ
sudo chmod +x /backup/backup.sh
# جدولة التنفيذ اليومي في الساعة 2 صباحاً
sudo crontab -e
ℹ️ أضف هذا السطر في ملف crontab:
0 2 * * * /backup/backup.sh >> /var/log/backup.log 2>&1
✅ تم الإعداد بنجاح! سيتم إنشاء نسخة احتياطية تلقائياً كل يوم في الساعة 2 صباحاً.

📤 رفع الملفات للخادم

15

الطريقة الأولى: SFTP (الأكثر أماناً)

SFTP (SSH File Transfer Protocol) هي أأمن طريقة لنقل الملفات، حيث يتم تشفير جميع البيانات المنقولة.

أ) باستخدام FileZilla (ويندوز/ماك/لينكس)

ℹ️ تحميل وتثبيت FileZilla:
  • قم بتحميل FileZilla من: https://filezilla-project.org
  • اختر FileZilla Client (وليس Server)
  • ثبّت البرنامج على جهازك
✅ الاتصال بالخادم:
  • المضيف (Host): عنوان IP الخادم أو srvos.com
  • اسم المستخدم: اسم مستخدم SSH الخاص بك
  • كلمة المرور: كلمة مرور SSH
  • المنفذ (Port): 22
  • البروتوكول: اختر SFTP
⚠️ نصيحة مهمة: بعد الاتصال، انتقل إلى مجلد: /var/www/srvos.com/public_html ثم اسحب وأفلت ملفاتك من جهازك إلى الخادم.

ب) باستخدام WinSCP (ويندوز فقط)

ℹ️ تحميل WinSCP: قم بتحميله من: https://winscp.net
✅ إعدادات الاتصال:
  • File protocol: SFTP
  • Host name: عنوان IP الخادم
  • Port number: 22
  • User name: اسم مستخدم SSH
  • Password: كلمة المرور

ج) باستخدام سطر الأوامر (Linux/Mac)

# رفع ملف واحد
scp /path/to/file.zip [email protected]:/var/www/srvos.com/public_html/
# رفع مجلد كامل
scp -r /path/to/folder [email protected]:/var/www/srvos.com/public_html/
# تحميل ملف من الخادم
scp [email protected]:/var/www/srvos.com/public_html/file.zip /local/path/
16

الطريقة الثانية: إنشاء مستخدم FTP آمن

إذا كنت تفضل استخدام FTP التقليدي، سنستخدم VSFTPD مع التشفير SSL/TLS.

# تثبيت VSFTPD
sudo apt install vsftpd -y
# نسخ احتياطية من ملف التكوين
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.backup
# تحرير ملف التكوين
sudo nano /etc/vsftpd.conf
ℹ️ ابحث عن هذه الأسطر وعدّلها:
anonymous_enable=NO local_enable=YES write_enable=YES chroot_local_user=YES allow_writeable_chroot=YES # تفعيل SSL/TLS ssl_enable=YES rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key allow_anon_ssl=NO force_local_data_ssl=YES force_local_logins_ssl=YES ssl_tlsv1=YES ssl_sslv2=NO ssl_sslv3=NO # إعدادات المنفذ listen=YES listen_ipv6=NO pasv_enable=YES pasv_min_port=40000 pasv_max_port=50000
# إنشاء مستخدم FTP جديد
sudo adduser ftpuser
# منح الصلاحيات على مجلد الموقع
sudo usermod -d /var/www/srvos.com/public_html ftpuser
sudo chown -R ftpuser:ftpuser /var/www/srvos.com/public_html
# السماح بـ FTP في جدار الحماية
sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw allow 40000:50000/tcp
# إعادة تشغيل VSFTPD
sudo systemctl restart vsftpd
sudo systemctl enable vsftpd
✅ جاهز للاستخدام! يمكنك الآن الاتصال باستخدام:
  • المضيف: srvos.com
  • المنفذ: 21
  • المستخدم: ftpuser
  • التشفير: اختر "Require explicit FTP over TLS"
⚠️ ملاحظة أمنية: FTP أقل أماناً من SFTP حتى مع التشفير. نوصي باستخدام SFTP عندما يكون ممكناً.
17

الطريقة الثالثة: استخدام Git (للمطورين)

Git طريقة احترافية لإدارة ورفع ملفات المشاريع مع إمكانية تتبع التغييرات.

أ) إعداد Git على الخادم

# تثبيت Git (إذا لم يكن مثبتاً)
sudo apt install git -y
# الانتقال إلى مجلد الموقع
cd /var/www/srvos.com/public_html
# تهيئة مستودع Git
sudo git init
# إعداد المستخدم
sudo git config user.name "Your Name"
sudo git config user.email "[email protected]"

ب) رفع الملفات من GitHub/GitLab

# استنساخ مشروع من GitHub
cd /var/www/srvos.com/
sudo git clone https://github.com/username/project.git public_html
# سحب آخر التحديثات
cd /var/www/srvos.com/public_html
sudo git pull origin main

ج) إعداد النشر التلقائي (GitHub Webhook)

# إنشاء سكريبت النشر التلقائي
sudo nano /var/www/deploy.php
ℹ️ محتوى ملف deploy.php:
<?php // سر Webhook (غيّره إلى قيمة عشوائية قوية) $secret = "your_secret_key_here"; // التحقق من التوقيع $headers = getallheaders(); $signature = $headers['X-Hub-Signature'] ?? ''; if ($signature) { $payload = file_get_contents('php://input'); $hash = 'sha1=' . hash_hmac('sha1', $payload, $secret); if (hash_equals($hash, $signature)) { // تنفيذ أوامر Git $output = shell_exec('cd /var/www/srvos.com/public_html && git pull origin main 2>&1'); echo "Deployment successful!\n$output"; } else { echo "Invalid signature!"; } } else { echo "No signature provided!"; } ?>
✅ إعداد GitHub Webhook:
  • اذهب إلى إعدادات المستودع في GitHub
  • Webhooks → Add webhook
  • Payload URL: https://srvos.com/deploy.php
  • Content type: application/json
  • Secret: نفس السر في السكريبت
  • اختر "Just the push event"
18

الطريقة الرابعة: رفع من سطر الأوامر (rsync)

rsync أداة قوية لمزامنة الملفات بين جهازك والخادم بكفاءة عالية.

# مزامنة مجلد محلي مع الخادم
rsync -avz /local/website/ [email protected]:/var/www/srvos.com/public_html/
# مزامنة مع حذف الملفات الزائدة
rsync -avz --delete /local/website/ [email protected]:/var/www/srvos.com/public_html/
# استبعاد ملفات معينة
rsync -avz --exclude '.git' --exclude 'node_modules' /local/website/ [email protected]:/var/www/srvos.com/public_html/
# عرض التقدم أثناء النقل
rsync -avz --progress /local/website/ [email protected]:/var/www/srvos.com/public_html/
ℹ️ شرح الخيارات:
  • -a: وضع الأرشيف (يحفظ الصلاحيات والتواريخ)
  • -v: عرض مفصل للعملية
  • -z: ضغط البيانات أثناء النقل
  • --delete: حذف الملفات الموجودة في الوجهة وليست في المصدر
  • --exclude: استبعاد ملفات أو مجلدات معينة
19

تصحيح الصلاحيات بعد الرفع

بعد رفع الملفات، من المهم جداً ضبط الصلاحيات بشكل صحيح لضمان الأمان والعمل السليم.

# تعيين المالك الصحيح (Apache)
sudo chown -R www-data:www-data /var/www/srvos.com/public_html
# تعيين صلاحيات المجلدات
sudo find /var/www/srvos.com/public_html -type d -exec chmod 755 {} \;
# تعيين صلاحيات الملفات
sudo find /var/www/srvos.com/public_html -type f -exec chmod 644 {} \;
# للملفات القابلة للتنفيذ فقط (مثل سكريبتات)
sudo chmod +x /var/www/srvos.com/public_html/script.sh
⚠️ صلاحيات مهمة:
  • 755 للمجلدات: يسمح بالقراءة والكتابة والتنفيذ للمالك، قراءة وتنفيذ للآخرين
  • 644 للملفات: يسمح بالقراءة والكتابة للمالك، قراءة فقط للآخرين
  • لا تستخدم 777: خطير جداً ويسمح للجميع بالتعديل!

📊 مقارنة طرق رفع الملفات

🥇 SFTP

الأمان: ⭐⭐⭐⭐⭐

السهولة: ⭐⭐⭐⭐

الأفضل لـ: الاستخدام اليومي

🥈 Git

الأمان: ⭐⭐⭐⭐⭐

السهولة: ⭐⭐⭐

الأفضل لـ: المطورين والفرق

🥉 rsync

الأمان: ⭐⭐⭐⭐⭐

السهولة: ⭐⭐⭐

الأفضل لـ: المزامنة الكبيرة

FTP/FTPS

الأمان: ⭐⭐⭐

السهولة: ⭐⭐⭐⭐⭐

الأفضل لـ: المبتدئين

📚 أدلة إضافية

🐳

Docker للمبتدئين

تعلم كيفية تشغيل تطبيقاتك في حاويات Docker المعزولة والآمنة.

تثبيت Docker

# تحديث النظام
sudo apt update
# تثبيت المتطلبات
sudo apt install apt-transport-https ca-certificates curl software-properties-common -y
# إضافة مفتاح GPG الرسمي لـ Docker
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# إضافة مستودع Docker
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list
# تثبيت Docker
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
# إضافة مستخدمك لمجموعة docker (بدون sudo)
sudo usermod -aG docker $USER
newgrp docker
# التحقق من التثبيت
docker --version && docker compose version
✅ تم التثبيت! Docker و Docker Compose جاهزان للاستخدام.

تشغيل أول حاوية

# تشغيل حاوية اختبار
docker run hello-world
# تشغيل Nginx في حاوية
docker run -d -p 8080:80 --name my-nginx nginx
# عرض الحاويات النشطة
docker ps
# إيقاف حاوية
docker stop my-nginx

Docker Compose — إدارة تطبيقات متعددة الحاويات

Docker Compose يتيح تشغيل عدة حاويات معاً بملف واحد. مثال: WordPress + MariaDB + Nginx بأمر واحد.

# إنشاء مجلد المشروع
mkdir ~/wordpress-docker && cd ~/wordpress-docker
nano docker-compose.yml
version: '3.8' services: db: image: mariadb:10.11 restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: rootpassword MYSQL_DATABASE: wordpress MYSQL_USER: wpuser MYSQL_PASSWORD: wppassword volumes: - db_data:/var/lib/mysql wordpress: image: wordpress:latest restart: unless-stopped ports: - "8081:80" environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_USER: wpuser WORDPRESS_DB_PASSWORD: wppassword WORDPRESS_DB_NAME: wordpress volumes: - wp_content:/var/www/html depends_on: - db volumes: db_data: wp_content:
# تشغيل الكل بأمر واحد:
docker compose up -d
# مراقبة الحاويات:
docker compose ps
# عرض السجلات:
docker compose logs -f
# إيقاف كل شيء:
docker compose down

Portainer — واجهة رسومية لإدارة Docker

Portainer يعطيك لوحة تحكم ويب جميلة لإدارة كل حاوياتك بدلاً من سطر الأوامر.

# إنشاء Volume لبيانات Portainer
docker volume create portainer_data
# تشغيل Portainer
docker run -d \
-p 9000:9000 \
--name portainer \
--restart=unless-stopped \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
# افتح المتصفح على:
# http://192.168.1.X:9000
💡 بعد فتح Portainer: أنشئ حساب المدير في أول تسجيل دخول، ثم يمكنك إدارة كل حاوياتك بضغطات من المتصفح.

حاويات مفيدة جاهزة للتشغيل

📊 Uptime Kuma

مراقبة حالة الخدمات

docker run -d -p 3001:3001 \
-v uptime:/app/data \
--name uptime-kuma \
louislam/uptime-kuma:1
🔐 Vaultwarden

مدير كلمات مرور ذاتي الاستضافة

docker run -d -p 8082:80 \
-v vw-data:/data \
--name vaultwarden \
vaultwarden/server:latest
🎬 Jellyfin

خادم وسائط منزلي مجاني

docker run -d -p 8096:8096 \
-v /srv/media:/media \
--name jellyfin \
jellyfin/jellyfin
☁️ Nextcloud

سحابة خاصة بديل Google Drive

docker run -d -p 8083:80 \
-v nextcloud:/var/www/html \
--name nextcloud \
nextcloud
📝

تثبيت WordPress

دليل سريع لتثبيت WordPress - أشهر نظام إدارة محتوى في العالم.

الخطوة 1: إنشاء قاعدة بيانات

# الدخول إلى MySQL
sudo mysql -u root -p
-- إنشاء قاعدة بيانات WordPress CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- إنشاء مستخدم خاص CREATE USER 'wordpressuser'@'localhost' IDENTIFIED BY 'strong_password'; -- منح الصلاحيات GRANT ALL ON wordpress.* TO 'wordpressuser'@'localhost'; -- تطبيق التغييرات FLUSH PRIVILEGES; EXIT;

الخطوة 2: تحميل WordPress

# الانتقال للمجلد المؤقت
cd /tmp
# تحميل WordPress
curl -O https://wordpress.org/latest.tar.gz
# فك الضغط
tar xzvf latest.tar.gz
# نقل الملفات
sudo cp -a wordpress/. /var/www/srvos.com/public_html/
# تعيين الصلاحيات
sudo chown -R www-data:www-data /var/www/srvos.com/public_html

الخطوة 3: إعداد ملف wp-config وإتمام التثبيت

# إنشاء ملف wp-config.php من النموذج:
cd /var/www/srvos.com/public_html
sudo cp wp-config-sample.php wp-config.php
sudo nano wp-config.php

عدّل هذه الأسطر بمعلومات قاعدة البيانات التي أنشأتها:

/** اسم قاعدة البيانات */ define( 'DB_NAME', 'wordpress' ); /** مستخدم قاعدة البيانات */ define( 'DB_USER', 'wordpressuser' ); /** كلمة المرور */ define( 'DB_PASSWORD', 'strong_password' ); /** خادم قاعدة البيانات */ define( 'DB_HOST', 'localhost' ); /** ترميز قاعدة البيانات */ define( 'DB_CHARSET', 'utf8mb4' ); /** أمان إضافي: مفاتيح التشفير — احصل عليها من: */ /** https://api.wordpress.org/secret-key/1.1/salt/ */ define('AUTH_KEY', 'ضع مفتاحاً عشوائياً هنا'); define('SECURE_AUTH_KEY', 'ضع مفتاحاً عشوائياً هنا'); define('LOGGED_IN_KEY', 'ضع مفتاحاً عشوائياً هنا'); define('NONCE_KEY', 'ضع مفتاحاً عشوائياً هنا');
⚙️ إعداد Apache Virtual Host لـ WordPress
# تفعيل mod_rewrite (مطلوب لـ Permalinks):
sudo a2enmod rewrite
# تعديل Virtual Host للسماح بـ .htaccess:
sudo nano /etc/apache2/sites-available/srvos.com.conf
<VirtualHost *:80> ServerName srvos.com ServerAlias www.srvos.com DocumentRoot /var/www/srvos.com/public_html <Directory /var/www/srvos.com/public_html> AllowOverride All Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/srvos.com-error.log CustomLog ${APACHE_LOG_DIR}/srvos.com-access.log combined </VirtualHost>
sudo systemctl restart apache2
✅ جاهز للتثبيت!
  • افتح المتصفح واذهب إلى: http://srvos.com
  • اختر اللغة ثم اضغط ابدأ الآن
  • أدخل معلومات قاعدة البيانات واضغط إرسال
  • أنشئ حساب المدير وسم الموقع
  • اضغط تثبيت WordPress
⚠️ تحسينات أمنية موصى بها:
  • غيّر رابط لوحة التحكم من /wp-admin
  • ثبّت إضافة Wordfence Security
  • فعّل المصادقة الثنائية
  • خذ نسخ احتياطية دورية
🔐

أمان متقدم للخادم

تقنيات أمنية متقدمة لحماية خادمك من التهديدات المعقدة.

تثبيت وتكوين Fail2Ban

# تثبيت Fail2Ban
sudo apt install fail2ban -y
# إنشاء ملف تكوين محلي
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
# تحرير التكوين
sudo nano /etc/fail2ban/jail.local
ℹ️ إعدادات موصى بها في jail.local:
[DEFAULT] bantime = 3600 findtime = 600 maxretry = 5 [sshd] enabled = true port = 22 logpath = /var/log/auth.log [apache-auth] enabled = true port = http,https logpath = /var/log/apache2/error.log [apache-noscript] enabled = true [apache-overflows] enabled = true
# إعادة تشغيل Fail2Ban
sudo systemctl restart fail2ban
# التحقق من الحالة
sudo fail2ban-client status

تعطيل تسجيل الدخول بكلمة المرور (SSH Key فقط)

# على جهازك المحلي: إنشاء مفتاح SSH
ssh-keygen -t rsa -b 4096
# نسخ المفتاح للخادم
ssh-copy-id [email protected]
# على الخادم: تعطيل تسجيل الدخول بكلمة المرور
sudo nano /etc/ssh/sshd_config
PasswordAuthentication no PubkeyAuthentication yes PermitRootLogin no
# إعادة تشغيل SSH
sudo systemctl restart sshd
⚠️ مهم جداً: قبل إغلاق الجلسة الحالية، افتح نافذة SSH جديدة وتأكد من قدرتك على الدخول بالمفتاح!

مراقبة الخادم مع Logwatch

# تثبيت Logwatch
sudo apt install logwatch -y
# إرسال تقرير يومي إلى البريد
sudo nano /etc/cron.daily/00logwatch
#!/bin/bash /usr/sbin/logwatch --output mail --mailto [email protected] --detail high

تثبيت Nginx كبديل لـ Apache

Nginx خادم ويب خفيف وسريع جداً، مثالي للمواقع ذات الزيارات العالية.

⚠️ تنبيه: إذا كان لديك Apache مثبت، يجب إيقافه أولاً لتجنب تعارض المنافذ.

إيقاف Apache وتثبيت Nginx

# إيقاف Apache (اختياري)
sudo systemctl stop apache2
sudo systemctl disable apache2
# تثبيت Nginx
sudo apt install nginx -y
# بدء تشغيل Nginx
sudo systemctl start nginx
sudo systemctl enable nginx

إعداد Server Block (مثل Virtual Host)

# إنشاء ملف تكوين الموقع
sudo nano /etc/nginx/sites-available/srvos.com
server { listen 80; server_name srvos.com www.srvos.com; root /var/www/srvos.com/public_html; index index.php index.html index.htm; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.ht { deny all; } }
# تفعيل الموقع
sudo ln -s /etc/nginx/sites-available/srvos.com /etc/nginx/sites-enabled/
# إزالة الموقع الافتراضي
sudo rm /etc/nginx/sites-enabled/default
# اختبار التكوين
sudo nginx -t
# إعادة تحميل Nginx
sudo systemctl reload nginx
✅ Nginx جاهز! موقعك الآن يعمل على Nginx بأداء فائق السرعة.

مقارنة سريعة: Apache vs Nginx

Apache
  • ✓ سهل التكوين
  • ✓ .htaccess مدعوم
  • ✓ وحدات كثيرة
  • ✗ استهلاك ذاكرة أعلى
Nginx
  • ✓ سرعة فائقة
  • ✓ استهلاك ذاكرة قليل
  • ✓ ممتاز للمحتوى الثابت
  • ✗ تكوين أعقد قليلاً

📌 أوامر مرجعية سريعة — احفظها!

🌐 Apache sudo systemctl restart apache2
sudo apache2ctl configtest
sudo a2ensite site.conf
sudo a2dissite site.conf
sudo a2enmod rewrite ssl
sudo tail -f /var/log/apache2/error.log
🗄️ MariaDB sudo systemctl restart mariadb
sudo mysql -u root -p
SHOW DATABASES;
SHOW GRANTS FOR 'user'@'localhost';
mysqldump -u root -p db > backup.sql
mysql -u root -p db < backup.sql
🔒 الأمان sudo ufw status numbered
sudo fail2ban-client status
sudo certbot renew --dry-run
sudo lastlog
sudo who
sudo ss -tlnp
🐳 Docker docker ps -a
docker compose up -d
docker compose down
docker logs -f container
docker exec -it container bash
docker system prune -a
⚡ النظام htop
df -h
free -h
sudo apt update && sudo apt upgrade
sudo reboot
uptime
💾 النسخ الاحتياطي rsync -avz /var/www/ /backup/
tar -czf backup.tar.gz /var/www
mysqldump --all-databases > all.sql
ls -lh /backup/
sudo systemctl status cron

🛡️ بناء جدار حماية احترافي للشبكة المنزلية

🏰 حوّل شبكتك المنزلية إلى قلعة محصّنة!

جدار حماية متقدم • VPN مدمج • حماية من التهديدات • تحكم كامل بالشبكة

🔒
حماية متقدمة
📊
مراقبة شاملة
🌐
VPN آمن
سرعة عالية
ℹ️ ما هو OPNsense/pfSense؟
نظام تشغيل مجاني ومفتوح المصدر مبني على FreeBSD، يحول أي كمبيوتر عادي إلى جدار حماية وراوتر احترافي بمميزات تفوق الأجهزة التجارية التي تكلف آلاف الدولارات!
🖥️

متطلبات الجهاز والإعداد

الطوبولوجيا المطلوبة (البنية)

┌─────────────────────────────────────────────────────────┐
│                   الإنترنت (ISP)                       │
└──────────────────────┬──────────────────────────────────┘
                       │ كابل من الشركة
                       ↓
        ┌──────────────────────────────┐
        │   جهاز Firewall (OPNsense)  │
        │                              │
        │  WAN Port  ←  منفذ 1         │
        │  (من الشركة)                │
        │                              │
        │  LAN Port  ←  منفذ 2         │
        │  (للشبكة الداخلية)          │
        └──────────────┬───────────────┘
                       │ كابل إيثرنت
                       ↓
        ┌──────────────────────────────┐
        │        Switch (السويتش)      │
        │      توزيع الشبكة الداخلية   │
        └──┬────────┬──────────┬────────┘
           │        │          │
           ↓        ↓          ↓
      ┌────────┐ ┌──────┐ ┌─────────┐
      │ Server │ │ AP   │ │ أجهزة   │
      │ Apache │ │WiFi  │ │ أخرى    │
      └────────┘ └──────┘ └─────────┘
                        

المتطلبات الدنيا للجهاز

✅ الحد الأدنى (شبكة منزلية):
  • المعالج: Intel/AMD ثنائي النواة 1GHz
  • الذاكرة: 2GB RAM
  • القرص: 8GB SSD/HDD
  • مهم: منفذي شبكة (Network Ports) على الأقل
🚀 موصى به (أداء ممتاز):
  • المعالج: Intel i3 أو أحدث / AMD Ryzen
  • الذاكرة: 4-8GB RAM
  • القرص: 32GB SSD
  • منفذي شبكة Gigabit
💡 نصيحة: يمكنك استخدام كمبيوتر قديم! أي جهاز من 2010 فما فوق سيعمل بشكل ممتاز.

إضافة منفذ شبكة ثاني (إذا لزم الأمر)

خيارات إضافة المنفذ الثاني:
  • كرت PCI-E: شراء كرت شبكة إضافي (~50-100 ريال)
  • USB to Ethernet: محول USB (غير موصى به للأداء العالي)
  • الأفضل: استخدام جهاز به منفذين مدمجين
💿

تحميل وتثبيت OPNsense

الخطوة 1: تحميل OPNsense

# زيارة الموقع الرسمي
https://opnsense.org/download/
اختيارات التحميل:
  • Architecture: اختر AMD64 (للأجهزة الحديثة)
  • Image Type: اختر dvd (تثبيت كامل)
  • Mirror: اختر أقرب سيرفر لك

الخطوة 2: حرق الـ ISO على فلاشة

استخدم:
  • Rufus (ويندوز)
  • balenaEtcher (جميع الأنظمة)
  • dd command (لينكس/ماك)

الخطوة 3: التثبيت

عملية التثبيت:
  1. أقلع من الفلاشة
  2. اختر "Install (UFS)" من القائمة
  3. اختر لوحة المفاتيح (us عادة)
  4. اختر "Install OPNsense"
  5. اختر القرص للتثبيت (سيُحذف كل شيء!)
  6. اختر "Complete Install"
  7. عيّن كلمة مرور root قوية
  8. انتظر حتى ينتهي التثبيت
  9. أزل الفلاشة وأعد التشغيل
⚠️ مهم: تأكد من توصيل شاشة ولوحة مفاتيح للإعداد الأولي!
🔌

توصيل الكابلات وتكوين المنافذ

ترتيب التوصيل الصحيح

📍 خطة التوصيل:
المنفذ الأول (WAN):
→ الكابل القادم من راوتر شركة الاتصالات
→ أو مباشرة من الـ ONT/Modem
المنفذ الثاني (LAN):
→ كابل متصل بالـ Switch
→ Switch يوزع على: السيرفر + Access Point + أجهزة أخرى

الإعداد الأولي من الـ Console

بعد أول إقلاع، ستظهر لك قائمة:
*** Welcome to OPNsense ***

WAN (wan)  -> em0 -> v4: DHCP4
LAN (lan)  -> em1 -> v4: 192.168.1.1/24

0) Logout
1) Assign interfaces
2) Set interface IP address
3) Reset webConfigurator password
4) Reset to factory defaults
8) Shell
9) pfTop
10) Firewall log
11) Reload all services
12) Update from console
13) Restore a backup
14) Reboot system
15) Shut down system
# اختر 1 لتعيين المنافذ
WAN: em0 (المنفذ المتصل بالإنترنت)
LAN: em1 (المنفذ المتصل بالسويتش)
✅ الإعداد الافتراضي:
LAN سيحصل تلقائياً على: 192.168.1.1
🌐

الوصول إلى واجهة الويب والإعداد الكامل

الدخول إلى لوحة التحكم

من أي جهاز متصل بالسويتش:
  • افتح المتصفح
  • اذهب إلى: https://192.168.1.1
  • اسم المستخدم: root
  • كلمة المرور: opnsense (افتراضية)
⚠️ غيّر كلمة المرور فوراً!
اذهب إلى: System → Access → Users → Edit root user

الإعداد الأساسي (Wizard)

سيظهر معالج الإعداد، اتبع الخطوات:
  1. General Information:
    • Hostname: firewall
    • Domain: local
    • DNS: 8.8.8.8, 1.1.1.1
  2. Time Server: اتركه افتراضي
  3. WAN Configuration:
    • Type: DHCP (معظم الحالات)
    • أو Static IP إذا أعطتك الشركة IP ثابت
  4. LAN Configuration:
    • IP: 192.168.1.1
    • Subnet: /24 (255.255.255.0)
  5. Root Password: غيّر كلمة المرور!

تفعيل DHCP Server

# في لوحة التحكم:
Services → DHCPv4 → [LAN]
# فعّل DHCP وحدد النطاق:
Range: 192.168.1.100 إلى 192.168.1.250
ℹ️ الآن جميع الأجهزة المتصلة بالسويتش ستحصل تلقائياً على IP!
🛡️

تكوين قواعد الحماية (Firewall Rules)

السماح بالوصول للإنترنت من LAN

✅ القاعدة الافتراضية موجودة مسبقاً:
Firewall → Rules → LAN
ستجد قاعدة "Default allow LAN to any rule"

فتح المنافذ للسيرفر (Port Forwarding)

لجعل موقعك متاحاً من الإنترنت:
  1. اذهب إلى: Firewall → NAT → Port Forward
  2. اضغط Add (زر +)
  3. املأ البيانات:
    • Interface: WAN
    • Protocol: TCP
    • Destination: WAN address
    • Destination port range: HTTP (80)
    • Redirect target IP: IP السيرفر (مثلاً 192.168.1.100)
    • Redirect target port: HTTP (80)
    • Description: Apache Server HTTP
  4. كرر العملية للمنفذ 443 (HTTPS)
⚠️ مهم: تأكد أن السيرفر لديه IP ثابت (Static IP) في شبكتك المحلية!

تعيين IP ثابت للسيرفر (DHCP Static Mapping)

# في لوحة التحكم:
Services → DHCPv4 → [LAN] → DHCP Static Mappings
# أضف:
MAC Address: عنوان MAC للسيرفر
IP Address: 192.168.1.100
Hostname: apache-server
🎯

ميزات إضافية احترافية

1. تفعيل IDS/IPS (كشف ومنع التطفل)

Suricata هو محرك كشف التطفل (IDS) ومنعه (IPS) المدمج في OPNsense. يراقب حركة الشبكة بحثاً عن أنماط الهجمات والتهديدات ويمكنه حجبها فوراً.

👁️
IDS — وضع المراقبة

يكتشف الهجمات ويسجّلها فقط بدون حجب. مناسب للبداية.

🛡️
IPS — وضع الحجب

يكتشف ويحجب الهجمات تلقائياً. فعّله بعد التأكد من عدم حجب حركة طبيعية.

1️⃣ تثبيت Suricata وقواعد الكشف
  1. اذهب إلى: System → Firmware → Plugins
  2. ابحث وثبّت: os-intrusion-detection-content-et-open
  3. هذه القواعد هي Emerging Threats Open — أشهر وأقوى مجموعة قواعد مجانية
  4. اضغط Apply Changes
2️⃣ الإعداد الأساسي في Services → Intrusion Detection
  1. اذهب إلى: Services → Intrusion Detection → Administration
  2. فعّل: Enabled
  3. اضبط الإعدادات:
# الإعدادات الأساسية:
IDS Mode: ابدأ بـ "Alert only" (IDS)
# بعد أسبوع من المراقبة غيّره إلى "Drop" (IPS)
Interfaces: WAN, LAN
# راقب كلا الاتجاهين
Pattern matcher: Hyperscan (أسرع) أو Aho-Corasick
Home networks: 192.168.1.0/24
# شبكتك المحلية حتى لا تُعامَل كمهاجم
  1. اضغط Apply
3️⃣ تفعيل مجموعات القواعد (Rulesets)
  1. اذهب إلى: Services → Intrusion Detection → Download
  2. فعّل القواعد الموصى بها:
مجموعة القواعد وصفها الأولوية
et/open/emerging-web_server هجمات على خوادم الويب (SQL Injection, XSS) ⭐ ضروري
et/open/emerging-scan مسح المنافذ (Port Scanning) ⭐ ضروري
et/open/emerging-malware اتصالات البرامج الضارة والـ Botnet ⭐ ضروري
et/open/emerging-exploit استغلال الثغرات المعروفة ✓ مهم
et/open/emerging-dos هجمات الحرمان من الخدمة (DoS/DDoS) ✓ مهم
et/open/emerging-ssh هجمات brute-force على SSH ✓ مهم
  1. اضغط Download & Update rules
  2. انتظر حتى تكتمل العملية
4️⃣ مراقبة التنبيهات والسجلات
  1. اذهب إلى: Services → Intrusion Detection → Alerts
  2. ستجد قائمة بكل التهديدات المكتشفة مع التفاصيل
  3. كل تنبيه يحتوي على: IP المهاجم، القاعدة المُفعَّلة، الوقت، الحزمة
# إضافة استثناء (Whitelist) لحركة طبيعية:
# Services → Intrusion Detection → Policy
إذا كانت قاعدة معينة تُنبّه على حركة طبيعية:
اضغط على القاعدة → Action: Disable لتلك القاعدة فقط
5️⃣ الانتقال من IDS إلى IPS (وضع الحجب الفعلي)

بعد أسبوع من مراقبة التنبيهات والتأكد من عدم وجود false positives:

  1. اذهب إلى: Services → Intrusion Detection → Administration
  2. غيّر IDS Mode من Alert only إلى Drop
  3. اضغط Apply
  4. الآن Suricata يحجب التهديدات تلقائياً بدون تدخل منك
✅ شبكتك محمية! Suricata يفحص كل حزمة بيانات تدخل أو تخرج من شبكتك بحثاً عن أنماط الهجمات المعروفة.

2. إعداد VPN (للوصول الآمن من الخارج)

باستخدام VPN على OPNsense يمكنك الاتصال بشبكتك المنزلية بشكل مشفر من أي مكان في العالم. سنستخدم WireGuard لأنه أسرع وأحدث من OpenVPN، ويعمل بشكل ممتاز مع OPNsense.

🔌 الخطوة 1: تثبيت إضافة WireGuard
  1. اذهب إلى: System → Firmware → Plugins
  2. ابحث عن: os-wireguard
  3. اضغط + لتثبيتها
  4. بعد التثبيت اضغط Apply Changes وأعد تشغيل OPNsense
⚙️ الخطوة 2: إنشاء WireGuard Instance (الخادم)
  1. اذهب إلى: VPN → WireGuard → Instances
  2. اضغط + لإضافة instance جديد
  3. أدخل الإعدادات التالية:
# الإعدادات الأساسية للـ Instance:
Name: HomeVPN
Listen Port: 51820
# اضغط زر "Generate" لإنشاء المفاتيح تلقائياً
Private Key: [اضغط Generate]
Tunnel Address: 10.10.10.1/24
# هذا هو IP الخادم داخل نفق VPN
  1. فعّل: Enable
  2. اضغط Save
👤 الخطوة 3: إضافة Peer (الجهاز العميل)

كل جهاز تريد الاتصال منه يحتاج Peer خاص به. سنضيف أول عميل:

  1. اذهب إلى: VPN → WireGuard → Peers
  2. اضغط +
  3. أدخل الإعدادات:
# إعدادات العميل (Peer):
Name: Laptop-Abroad
# ثبّت WireGuard على جهازك أولاً ثم انسخ Public Key منه
Public Key: [انسخه من تطبيق WireGuard على جهازك]
Allowed IPs: 10.10.10.2/32
# IP خاص بهذا الجهاز داخل النفق
  1. في قسم Instances اختر HomeVPN
  2. اضغط Save
🔥 الخطوة 4: قواعد جدار الحماية

نحتاج قاعدتين: واحدة على WAN لاستقبال الاتصالات، وأخرى على واجهة WireGuard للسماح بالمرور.

القاعدة الأولى — على WAN (استقبال الاتصالات):
# Firewall → Rules → WAN → Add
Action: Pass
Interface: WAN
Protocol: UDP
Destination Port: 51820
Description: Allow WireGuard VPN
القاعدة الثانية — على واجهة WireGuard (السماح بالدخول للشبكة):
# Firewall → Rules → WireGuard → Add
Action: Pass
Interface: WireGuard
Protocol: Any
Source: WireGuard Net (10.10.10.0/24)
Destination: LAN Net
Description: VPN clients access LAN
📱 الخطوة 5: إعداد تطبيق WireGuard على جهازك

ثبّت تطبيق WireGuard على جهازك (Windows / Mac / Android / iOS) ثم أنشئ ملف تكوين بهذا الشكل:

# ملف wg0.conf على جهاز العميل:
[Interface]
PrivateKey = <المفتاح الخاص للعميل>
Address = 10.10.10.2/32
DNS = 192.168.1.1
[Peer]
# هذا هو OPNsense الخاص بك
PublicKey = <Public Key من Instance في OPNsense>
Endpoint = YOUR_PUBLIC_IP:51820
# استخدم IP العام لخط الإنترنت المنزلي
AllowedIPs = 192.168.1.0/24, 10.10.10.0/24
# يسمح بالوصول لشبكتك المحلية فقط (ليس كل الإنترنت)
PersistentKeepalive = 25
💡 تلميح: إذا كان لديك IP ديناميكي (يتغير)، استخدم خدمة مجانية مثل DuckDNS أو No-IP وضع اسم النطاق بدلاً من IP في حقل Endpoint.
⚠️ الخطوة 6: Port Forwarding على الراوتر الرئيسي

إذا كان OPNsense خلف راوتر المزود (ISP) فيجب توجيه المنفذ:

# في إعدادات راوتر المزود:
External Port: 51820 (UDP)
Internal IP: 192.168.X.X (WAN IP لـ OPNsense)
Internal Port: 51820
Protocol: UDP
🧪 الخطوة 7: اختبار الاتصال
  1. فعّل الـ VPN من تطبيق WireGuard على جهازك
  2. تأكد أن الحالة Active وأن البيانات تتدفق
  3. حاول الوصول للراوتر: http://192.168.1.1
  4. حاول الوصول لـ phpMyAdmin: http://192.168.1.X/phpmyadmin
# تحقق من حالة WireGuard في OPNsense:
VPN → WireGuard → Status
# ستجد آخر handshake وحجم البيانات المنقولة
✅ بعد الإعداد: يمكنك الوصول لشبكتك المنزلية بأمان التام من أي مكان في العالم! جميع البيانات مشفرة بـ ChaCha20 وغير قابلة للاعتراض.
🔐
تشفير قوي

ChaCha20 + Poly1305

سرعة عالية

أسرع من OpenVPN بـ 3x

📱
متعدد الأجهزة

Windows / Mac / iOS / Android

3. DNS المشفر (DNS over HTTPS)

بدون DNS مشفر، مزود الإنترنت (ISP) يرى كل موقع تزوره حتى لو كان الاتصال HTTPS. مع DNSCrypt-Proxy تُشفَّر استعلامات DNS بالكامل ولا يستطيع أحد مراقبتها أو التلاعب بها.

🔌 الخطوة 1: تثبيت DNSCrypt-Proxy
  1. اذهب إلى: System → Firmware → Plugins
  2. ابحث عن: os-dnscrypt-proxy
  3. اضغط + لتثبيتها
  4. بعد التثبيت اضغط Apply Changes
⚙️ الخطوة 2: الإعداد الأساسي
  1. اذهب إلى: Services → DNSCrypt-Proxy → Configuration
  2. فعّل: Enable DNSCrypt-Proxy
  3. اضبط الإعدادات:
# الإعدادات الأساسية:
Listen Address: 127.0.0.1:5353
# يعمل محلياً على OPNsense فقط
Require DNSSEC: ✅ مفعّل
Require no logs: ✅ مفعّل
# يختار فقط الخوادم التي لا تحتفظ بسجلات
Require no filter: ✅ مفعّل
Block IPv6: حسب حاجتك
  1. اضغط Save ثم Apply
🔗 الخطوة 3: توجيه Unbound DNS إلى DNSCrypt

Unbound هو خادم DNS الرئيسي في OPNsense. سنجعله يُمرر الاستعلامات إلى DNSCrypt بدلاً من DNS العادي:

  1. اذهب إلى: Services → Unbound DNS → General
  2. فعّل: Enable Unbound
  3. فعّل: DNSSEC
# في قسم Custom options أو Override:
do-not-query-localhost: no
forward-zone:
name: "."
forward-addr: 127.0.0.1@5353
# يُحوّل كل استعلامات DNS إلى DNSCrypt المحلي
  1. اضغط Save ثم Apply
🌐 الخطوة 4: تعطيل DNS الخارجي من الإعدادات العامة

نمنع OPNsense من استخدام DNS خارجي حتى لا يتسرب أي استعلام:

  1. اذهب إلى: System → Settings → General
  2. احذف أي DNS Servers مدخل في الحقول
  3. فعّل: Do not use the DNS Forwarder/Resolver as a DNS server for the firewall — اتركه مُعطّلاً
# DHCP: أخبر الأجهزة باستخدام OPNsense كـ DNS:
Services → DHCPv4 → LAN
DNS Servers: 192.168.1.1
# كل الأجهزة ستستخدم Unbound → DNSCrypt تلقائياً
🧪 الخطوة 5: التحقق من عمل DNS المشفر
# من SSH أو Shell في OPNsense:
drill -p 5353 google.com @127.0.0.1
# يجب أن يُرجع نتيجة بدون خطأ
# اختبار من الإنترنت:
# افتح: https://1.1.1.1/help
# يجب أن يظهر: "Using DNS over HTTPS: Yes"
📋 أفضل خوادم DNS المشفرة المدعومة
Cloudflare

cloudflare

الأسرع عالمياً، بدون سجلات

Google

google

موثوق وسريع

Quad9

quad9-dnscrypt-ip4-filter-pri

يحجب المواقع الضارة

AdGuard DNS

adguard-dns-doh

حجب إعلانات + تشفير

💡 يمكن إضافة اسم الخادم في: Services → DNSCrypt-Proxy → Servers

✅ النتيجة: جميع استعلامات DNS لكل أجهزة شبكتك مشفرة تماماً — لا يستطيع المزود أو أي طرف ثالث مراقبة ما تتصفحه.

4. Ad Blocker (حجب الإعلانات لكل الشبكة)

# تثبيت AdGuard Home:
System → Firmware → Plugins → os-adguardhome
⚠️ التثبيت وحده لا يكفي! يجب إعداد AdGuard بعد التثبيت:
خطوات الإعداد بعد التثبيت:
  1. اذهب إلى: Services → AdGuard Home → General
  2. فعّل: Enable AdGuard Home
  3. احفظ الإعدادات
  4. افتح المتصفح واذهب إلى: http://192.168.1.1:3000
  5. اتبع معالج الإعداد الأولي:
    • اختر المنفذ: 3000 (اتركه كما هو)
    • اختر DNS Port: 53
    • أنشئ اسم مستخدم وكلمة مرور للوحة التحكم
  6. مهم: في OPNsense، غيّر DNS Server:
    • System → Settings → General
    • DNS Servers: ضع 127.0.0.1
  7. في DHCP Server، غيّر DNS:
    • Services → DHCPv4 → [LAN]
    • DNS Servers: ضع 192.168.1.1
🎉 الآن جميع أجهزة الشبكة محمية من الإعلانات تلقائياً!
كل جهاز متصل بالشبكة (WiFi أو سلكي) لن يرى الإعلانات.
💡 نصيحة: يمكنك الدخول للوحة تحكم AdGuard من: http://192.168.1.1:3000
لتخصيص قوائم الحجب، مراقبة الإحصائيات، وإضافة استثناءات.

5. 🌍 DDNS — ربط دومين ثابت بـ IP ديناميكي

معظم خطوط الإنترنت المنزلية تحصل على IP عام يتغير مع كل إعادة اتصال. DDNS يُحدّث سجل DNS لدومينك تلقائياً في كل مرة يتغير IP — حتى تتمكن دائماً من الوصول لخادمك بنفس الاسم مثل home.yourdomain.com.

☁️
Cloudflare

الخيار الأفضل — مجاني + API قوي + DNS سريع

🏷️
Namecheap FreeDNS

مثالي إذا اشتريت الدومين من Namecheap

☁️ الطريقة الأولى: DDNS مع Cloudflare
1️⃣ إعداد Cloudflare: إنشاء API Token
  1. سجّل الدخول إلى dash.cloudflare.com
  2. اذهب إلى: My Profile → API Tokens → Create Token
  3. اختر: Edit zone DNS (أو Custom Token)
  4. اضبط الصلاحيات:
# صلاحيات API Token في Cloudflare:
Permissions: Zone → DNS → Edit
Zone Resources: Include → Specific Zone → yourdomain.com
  1. اضغط Create Token واحفظ التوكن في مكان آمن
  2. أضف سجل DNS من نوع A في Cloudflare:
# في Cloudflare DNS → Add Record:
Type: A
Name: home (سيصبح home.yourdomain.com)
Content: 1.2.3.4 (أي IP مؤقت، سيُحدَّث تلقائياً)
Proxy status: DNS only 🔘 (أوقف البرتقالي)
# مهم: أوقف Proxy حتى يعمل VPN و SSH بشكل صحيح
2️⃣ إعداد DDNS في OPNsense (Cloudflare)
  1. اذهب إلى: Services → Dynamic DNS
  2. اضغط + لإضافة مدخل جديد
# إعدادات DDNS في OPNsense:
Enable: ✅
Service: Cloudflare
Interface: WAN
Hostname: home.yourdomain.com
# Username = Zone ID (من صفحة Overview في Cloudflare)
Username: <Zone ID من Cloudflare>
# Password = API Token الذي أنشأته
Password: <API Token>
TTL: Auto
Check IP method: Interface
  1. اضغط Save
  2. اضغط زر 🔄 Force Update للتأكد من عمله
  3. تحقق من الـ IP المُحدَّث في Cloudflare DNS
🏷️ الطريقة الثانية: DDNS مع Namecheap
1️⃣ إعداد Namecheap: تفعيل Dynamic DNS
  1. سجّل الدخول إلى namecheap.com
  2. اذهب إلى: Domain List → Manage → Advanced DNS
  3. فعّل: Dynamic DNS (Toggle إلى ON)
  4. ستظهر كلمة مرور Dynamic DNS — احفظها
  5. أضف سجل A+DDNS:
# في Advanced DNS → Add New Record:
Type: A + Dynamic DNS Record
Host: home (أو @ للدومين الرئيسي)
Value: 127.0.0.1 (مؤقت، سيُحدَّث تلقائياً)
TTL: Automatic
2️⃣ إعداد DDNS في OPNsense (Namecheap)
  1. اذهب إلى: Services → Dynamic DNS → Add
# إعدادات Namecheap في OPNsense:
Enable: ✅
Service: Namecheap
Interface: WAN
Hostname: home (الـ subdomain فقط بدون الدومين)
Username: yourdomain.com (الدومين الرئيسي كاملاً)
Password: <Dynamic DNS Password من Namecheap>
Check IP method: Interface
  1. اضغط Save
  2. اضغط Force Update للتحديث الفوري
🧪 التحقق من عمل DDNS
# من أي جهاز تحقق من DNS:
nslookup home.yourdomain.com
# يجب أن يُرجع IP الخط المنزلي الحالي
# للتحقق من IP الخارجي الحالي:
curl ifconfig.me
# يجب أن يطابق ما في سجل DNS
💡 نصيحة: OPNsense يتحقق من IP ويُحدّثه تلقائياً كل 25 دقيقة افتراضياً. يمكن تغيير هذا من إعدادات DDNS.
🔗 ربط DDNS مع WireGuard VPN

بعد إعداد DDNS، عُد لملف إعداد WireGuard العميل وحدّث حقل Endpoint:

# في ملف wg0.conf على جهاز العميل:
# قبل:
Endpoint = 1.2.3.4:51820 ← IP يتغير!
# بعد إعداد DDNS:
Endpoint = home.yourdomain.com:51820 ✅
# الآن يعمل دائماً حتى لو تغير IP
✅ النتيجة النهائية: دومينك home.yourdomain.com يشير دائماً لخادمك المنزلي — يمكنك الاتصال بـ VPN أو SSH أو أي خدمة بدون الحاجة لمعرفة IP الحالي.

🎊 تهانينا! شبكتك الآن محصّنة!

🛡️
حماية قوية
جدار حماية متقدم + IDS/IPS
📊
مراقبة شاملة
تقارير وإحصائيات مفصلة
🚀
أداء عالي
سرعة وكفاءة ممتازة
🌐
VPN آمن
وصول آمن من أي مكان

شبكتك المنزلية الآن على مستوى الشركات! 🏢✨

🔧 حل المشاكل الشائعة

❌ Apache لا يعمل بعد التثبيت

الحلول المحتملة:
# التحقق من حالة Apache
sudo systemctl status apache2
# التحقق من الأخطاء بالتفصيل
sudo journalctl -xeu apache2 | tail -30
# اختبار صحة التكوين
sudo apache2ctl configtest
# تعارض المنافذ؟ تحقق من ما يستخدم المنفذ 80
sudo ss -tlnp | grep :80
# إعادة تشغيل Apache
sudo systemctl restart apache2

❌ خطأ "Permission Denied"

# تصحيح ملكية الملفات
sudo chown -R www-data:www-data /var/www/srvos.com
# تصحيح صلاحيات المجلدات (755) والملفات (644)
sudo find /var/www/srvos.com -type d -exec chmod 755 {} \;
sudo find /var/www/srvos.com -type f -exec chmod 644 {} \;
# لـ WordPress: wp-content يحتاج كتابة
sudo chmod -R 775 /var/www/srvos.com/public_html/wp-content

❌ خطأ 500 Internal Server Error

# فحص سجل أخطاء Apache
sudo tail -50 /var/log/apache2/error.log
# فحص سجل أخطاء PHP
sudo tail -50 /var/log/php8.2-fpm.log
# تفعيل عرض الأخطاء مؤقتاً للتشخيص
sudo nano /etc/php/8.2/apache2/php.ini
# غيّر: display_errors = On
# إذا كان خطأ .htaccess — تحقق من تفعيل mod_rewrite
sudo a2enmod rewrite && sudo systemctl restart apache2

❌ لا يمكن الوصول للموقع من الإنترنت

تحقق من هذه النقاط بالترتيب:
  • ✓ توجيه المنافذ (Port Forwarding 80 و 443) في OPNsense أو الراوتر
  • ✓ جدار الحماية UFW يسمح بالمنافذ 80 و 443
  • ✓ سجل DNS موجّه للـ IP الصحيح
  • ✓ المزود لا يحجب المنفذ 80 (بعض المزودين يحجبونه)
# معرفة IP العام الحالي
curl ifconfig.me
# التحقق من UFW
sudo ufw status numbered
# فتح المنافذ إذا كانت مغلقة
sudo ufw allow 80/tcp && sudo ufw allow 443/tcp
# اختبار DNS من خارج الشبكة
nslookup yourdomain.com 8.8.8.8
# اختبار وصول المنفذ (من جهاز خارج الشبكة):
# https://www.portchecktool.com

❌ phpMyAdmin لا يعمل

# التحقق من التثبيت
dpkg -l | grep phpmyadmin
# إعادة تكوين phpMyAdmin
sudo dpkg-reconfigure phpmyadmin
# التحقق من الرابط الرمزي
ls -la /etc/apache2/conf-enabled/ | grep phpmyadmin
# إذا غائب:
sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf
sudo a2enconf phpmyadmin
# إعادة تشغيل Apache
sudo systemctl restart apache2

❌ لا يمكن الاتصال بـ MariaDB

# التحقق من حالة MariaDB
sudo systemctl status mariadb
# إعادة تشغيله
sudo systemctl restart mariadb
# نسيت كلمة مرور root؟ أوقف الخدمة وشغّلها بدون مصادقة:
sudo systemctl stop mariadb
sudo mysqld_safe --skip-grant-tables &
mysql -u root
# داخل MySQL:
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';
EXIT;
sudo systemctl start mariadb

❌ شهادة SSL منتهية أو لا تجدّد تلقائياً

# التحقق من تاريخ انتهاء الشهادة
sudo certbot certificates
# تجديد يدوي
sudo certbot renew --dry-run
sudo certbot renew
# التحقق من Cron Job للتجديد التلقائي
sudo crontab -l | grep certbot
# إذا غائب، أضفه:
echo "0 3 * * * certbot renew --quiet" | sudo crontab -
# التحقق من systemd timer (بديل cron):
sudo systemctl status certbot.timer

❌ لا يمكن الاتصال بـ SSH

# التحقق من حالة SSH
sudo systemctl status ssh
# تحقق من المنفذ المُستخدم
sudo ss -tlnp | grep sshd
# UFW يحجب SSH؟
sudo ufw allow 22/tcp
# Fail2Ban حجب IP؟ افحص القائمة:
sudo fail2ban-client status sshd
# إلغاء الحجب:
sudo fail2ban-client set sshd unbanip YOUR_IP
# التحقق من صحة تكوين SSH
sudo sshd -t

❌ القرص الصلب ممتلئ (No space left)

# فحص المساحة
df -h
# إيجاد أكبر المجلدات
sudo du -sh /* | sort -rh | head -20
# تنظيف حزم APT غير المستخدمة
sudo apt autoremove -y && sudo apt clean
# تنظيف سجلات قديمة
sudo journalctl --vacuum-size=100M
# تنظيف Docker (صور وحاويات غير مستخدمة)
docker system prune -a

❌ WireGuard VPN لا يتصل

# تحقق من حالة WireGuard في OPNsense:
VPN → WireGuard → Status
# ابحث عن آخر handshake — إذا "never" فالاتصال لم يصل
# مشاكل شائعة وحلولها:
# 1. Port Forwarding غير مضبوط على راوتر المزود
# 2. Public Key خاطئ في إعدادات الـ Peer
# 3. IP العام تغيّر — استخدم DDNS
# 4. قاعدة Firewall على WAN غير مُفعّلة
# اختبار وصول المنفذ 51820 من الخارج:
# https://www.portchecktool.com → Port 51820 UDP

👥 من نحن

SRVOS (Server Operating System) هو مشروع تعليمي مفتوح المصدر يهدف إلى تمكين المجتمع العربي من إدارة خوادمهم الخاصة بأنفسهم.

🎯 رؤيتنا

نؤمن بأن كل شخص يجب أن يمتلك المعرفة والأدوات اللازمة لإدارة بنيته التقنية الخاصة. نسعى لتقديم محتوى تعليمي عربي عالي الجودة، مجاني، ومتاح للجميع.

📚

محتوى مجاني

جميع أدلتنا متاحة مجاناً للجميع

🌍

بالعربية

محتوى تقني احترافي باللغة العربية

🤝

مجتمع داعم

نبني مجتمع من المتعلمين والخبراء

💡 هل تريد المساهمة؟

نرحب بالمساهمات من الجميع! إذا كان لديك خبرة تقنية وتريد مشاركتها، أو وجدت خطأ في الأدلة، أو لديك اقتراح لتحسين المحتوى، نسعد بتواصلك معنا.

📧 اتصل بنا

نحن هنا للمساعدة! تواصل معنا لأي استفسار أو اقتراح

📧 البريد الإلكتروني

[email protected]

💬 الدعم الفني

[email protected]

🐛 الإبلاغ عن مشكلة

[email protected]

🔒 سياسة الخصوصية

آخر تحديث: ديسمبر 2025

📊 البيانات التي نجمعها

نحن نحترم خصوصيتك. موقع SRVOS لا يجمع معلومات شخصية محددة للهوية إلا في الحالات التالية:

  • معلومات الاتصال عند التواصل معنا عبر البريد الإلكتروني
  • بيانات التصفح العامة (نوع المتصفح، نظام التشغيل) لتحسين تجربة المستخدم
  • ملفات تعريف الارتباط (Cookies) لتحليل حركة المرور

🎯 استخدام البيانات

نستخدم البيانات المجمعة فقط لـ:

  • تحسين محتوى الموقع وتجربة المستخدم
  • الرد على استفساراتك ودعمك الفني
  • تحليل استخدام الموقع لفهم احتياجات المستخدمين
  • إرسال تحديثات حول محتوى جديد (إذا اشتركت)

🔐 أمان البيانات

نلتزم بحماية بياناتك من خلال:

  • استخدام بروتوكول HTTPS لتشفير الاتصال
  • عدم مشاركة بياناتك مع أطراف ثالثة دون موافقتك
  • تخزين البيانات بشكل آمن ومحمي

🍪 ملفات تعريف الارتباط (Cookies)

نستخدم Cookies لتحسين تجربتك على الموقع. يمكنك تعطيل Cookies من إعدادات متصفحك، لكن هذا قد يؤثر على بعض وظائف الموقع.

📢 الإعلانات

قد نستخدم خدمات إعلانية من طرف ثالث (مثل Google AdSense). هذه الخدمات قد تستخدم Cookies لعرض إعلانات ذات صلة باهتماماتك. يمكنك إدارة تفضيلات الإعلانات من خلال إعدادات Google.

👤 حقوقك

لديك الحق في:

  • الوصول إلى بياناتك الشخصية
  • تصحيح أو حذف بياناتك
  • الاعتراض على معالجة بياناتك
  • سحب موافقتك في أي وقت
📧 للتواصل بخصوص الخصوصية:
إذا كان لديك أي أسئلة حول سياسة الخصوصية، يرجى التواصل معنا على: [email protected]

⚠️ إخلاء المسؤولية

المعلومات المقدمة في هذا الموقع هي لأغراض تعليمية فقط. بينما نبذل قصارى جهدنا لضمان دقة المحتوى، فإننا:

  • لا نتحمل مسؤولية أي أضرار قد تنتج عن استخدام هذه المعلومات
  • ننصح بأخذ نسخ احتياطية قبل تطبيق أي تغييرات على خادمك
  • نوصي بفهم كل خطوة قبل تنفيذها
  • نشجع على استشارة متخصص عند الحاجة

استخدامك لهذه الأدلة يكون على مسؤوليتك الخاصة.