ITSkillsCenter
الأعمال الرقمية

نشر Moodle على Hetzner للجامعات الإفريقية: درس 2026

3 min de lecture

📍 المقالة الرئيسية للمجموعة: EdTech فرنكوفونية 2026.

3 ساعات لتحويل VPS فارغ إلى منصة Moodle جاهزة للإنتاج، 1,000-5,000 طالب نشط متزامن. الطريقة موثقة عند جامعات في داكار والدار البيضاء وتونس. التكلفة الإجمالية: 28 يورو/شهر (CCX13). مقابل Blackboard من 50,000 USD/سنة.

المتطلبات

VPS Hetzner CCX13 minimum (4 vCPU، 16 GB RAM، 80 GB SSD). PHP 8.2، MariaDB 10.6، Redis 7. Caddy للـ HTTPS. اسم نطاق elearning.universite.com. SMTP للبريد. المستوى المتوقع: متقدم. الوقت: 3 ساعات.

الخطوة 1 — تحضير VPS

Moodle 4.x يتطلب stack PHP حديث. Ubuntu 24.04 LTS موصى به.

apt update && apt upgrade -y
apt install -y nginx mariadb-server redis-server php8.2-fpm php8.2-mysql php8.2-curl php8.2-gd php8.2-mbstring php8.2-xml php8.2-zip php8.2-intl php8.2-bcmath php8.2-soap php8.2-redis php8.2-opcache git ufw caddy
ufw allow 22 80 443
ufw enable

الخطوة 2 — تكوين MariaDB

Moodle يطلب utf8mb4 للدعم الكامل لـ Unicode (عربي، emoji). تكوين خاص لـ Barracuda + dynamic row format.

mysql_secure_installation
mysql -u root -p
CREATE DATABASE moodle CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'moodle'@'localhost' IDENTIFIED BY 'mot-de-passe-très-fort';
GRANT ALL ON moodle.* TO 'moodle'@'localhost';
FLUSH PRIVILEGES;
EXIT;

تكوين MariaDB:

# /etc/mysql/mariadb.conf.d/99-moodle.cnf
[mysqld]
innodb_file_format = Barracuda
innodb_file_per_table = 1
innodb_large_prefix = 1
innodb_buffer_pool_size = 4G
innodb_log_file_size = 256M
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
systemctl restart mariadb

الخطوة 3 — تنزيل Moodle

Moodle 4.5 LTS (دعم حتى 2027) موصى به للإنتاج.

cd /var/www
git clone -b MOODLE_405_STABLE git://git.moodle.org/moodle.git
mv moodle elearning
chown -R www-data:www-data elearning

# مجلد البيانات (خارج webroot)
mkdir /var/moodledata
chown -R www-data:www-data /var/moodledata
chmod 770 /var/moodledata

الخطوة 4 — تكوين nginx

nano /etc/nginx/sites-available/moodle
server {
  listen 80;
  server_name elearning.universite.com;
  root /var/www/elearning;
  index index.php;
  
  client_max_body_size 200M;  # لـ uploads فيديو
  
  location / {
    try_files \$uri \$uri/ /index.php?\$query_string;
  }
  
  location ~ \.php\$ {
    fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
    include fastcgi_params;
    fastcgi_read_timeout 300;
  }
  
  location ~ /\.ht { deny all; }
  location /moodledata { deny all; }
}
ln -s /etc/nginx/sites-available/moodle /etc/nginx/sites-enabled/
rm /etc/nginx/sites-enabled/default
nginx -t && systemctl reload nginx

الخطوة 5 — Caddy لـ HTTPS

elearning.universite.com {
  reverse_proxy localhost:80
}

الخطوة 6 — تكوين php.ini

Moodle يطلب limits معينة لـ PHP لاستيعاب uploads فيديو وSCORM packages.

# /etc/php/8.2/fpm/php.ini
max_execution_time = 300
max_input_time = 300
memory_limit = 512M
post_max_size = 200M
upload_max_filesize = 200M
max_input_vars = 5000
opcache.enable = 1
opcache.memory_consumption = 256
opcache.max_accelerated_files = 20000
systemctl restart php8.2-fpm

الخطوة 7 — معالج تثبيت Moodle

افتح https://elearning.universite.com. المعالج يطلب:

  • اللغة: Français.
  • المسارات: /var/www/elearning + /var/moodledata.
  • قاعدة البيانات: MariaDB، moodle، moodle، password.
  • الترخيص: GPL.
  • اختبار البيئة (يجب أن يمر).
  • تثبيت الجداول (5 دقائق).
  • حساب admin: admin@universite.com + password.
  • اسم الموقع: «UCAD eLearning».

الخطوة 8 — تكوين Redis cache

Redis يحسن الأداء بشكل كبير (latency / 10). تكوين Moodle:

Site administration → Plugins → Caching → Configuration
Add instance → Redis
Server: 127.0.0.1
Port: 6379
Prefix: moodle_

ثم Cache definitions → ضع Redis كـ store لـ application و session و request.

الخطوة 9 — Cron job

Moodle يعتمد على cron لمهام خلفية (إرسال بريد، حساب الدرجات، indexation).

crontab -e -u www-data
* * * * * /usr/bin/php8.2 /var/www/elearning/admin/cli/cron.php >/dev/null

الخطوة 10 — مصادقة LDAP

تكامل LDAP الجامعة (active directory أو OpenLDAP). الطلاب يستخدمون credentials المؤسسية الموجودة.

Site administration → Plugins → Authentication → Manage authentication
Activate LDAP server

Configuration:
  host: ldap.universite.com
  port: 389
  Authentication type: bind-user
  bind_dn: cn=admin,dc=universite,dc=com
  user_attribute: uid
  search_subcontexts: yes
  contexts: ou=students,dc=universite,dc=com

الخطوة 11 — أول دورة

Site administration → Courses → Add a new course. أدخل: name، summary، التصنيف. ثم: تفعيل enrolment، إضافة طلاب، إضافة activities (Assignment، Quiz، Forum، Video).

الأخطاء الشائعة

الخطأ السبب الحل
500 على install صلاحيات mod chown www-data + chmod 755
email لا يرسل SMTP غير مكوَّن Site admin → Email → Outgoing
upload فشل php.ini limits زيادة upload_max + post_max
cron لا يعمل غير مجدول crontab -u www-data + chmod
LDAP يفشل credentials خاطئة اختبر بـ ldapsearch CLI
أداء بطيء opcache OFF فعّل + Redis

التكيف مع السياق

أربع توضيحات. تخصيص لغة عربية. Site admin → Language packs → Install Arabic. RTL تلقائي. التقويم الدراسي. Site calendar → Hide weekends (الجمعة/السبت في المغرب). الواجهة الموبايل. Boost theme responsive. اختبر على Tecno/Itel. تكامل SCO/Apogée. plugin Moodle CSV import للدرجات الوطنية.

دروس الإخوة

الأسئلة المتكررة

سعة CCX13؟ 1,000 طالب نشط متزامن. ما بعد ذلك CCX23.

التحديثات؟ Moodle Update CLI: php admin/cli/upgrade.php. اختبر staging قبل.

تكامل Microsoft 365؟ plugin Office 365 Education. SSO + Teams.

Backup؟ mysqldump + rsync /var/moodledata + restic إلى B2.

للاستزادة

Besoin d'un site web ?

Confiez-nous la Création de Votre Site Web

Site vitrine, e-commerce ou application web — nous transformons votre vision en réalité digitale. Accompagnement personnalisé de A à Z.

À partir de 250.000 FCFA
Parlons de Votre Projet
Publicité