📍 المقالة الرئيسية للمجموعة: 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.
للاستزادة
- 🔝 المرجع: EdTech 2026
- Moodle docs: docs.moodle.org