شغّل Learnio محليًا
شغّل حزمتك على جهازك باستخدام Docker.
لحزمة الحزمة الكاملة
قبل أن تبدأ: ثبّت Docker Desktop وافتحه، أو Docker Engine مع Compose.
اطّلع على المتطلباتنزّل قالبك
افتح صفحة «قوالبي» ونزّل ملف ZIP الخاص بحزمتك من Learnio.
النتيجة المتوقعة: يظهر في مجلد التنزيلات ملف باسم مثل
learnio-lms-main-….zip.فك الضغط وافتح المجلد
استخرج ملف ZIP وافتح طرفية داخل المجلد
learnio-lms. على Windows، استخرجه في File Explorer، ثم افتح طرفية داخل المجلد.الطرفيةunzip learnio-lms-*.zip cd learnio-lmsالنتيجة المتوقعة: يحتوي المجلد على
تواجه مشكلة؟admin-dashboardوback-endوfrontendوdocker-compose.yml.شغّل التطبيقات
ابنِ واجهة API وموقع الطلاب ولوحة الإدارة وشغّلها. يبني التشغيل الأول ثلاث صور ويملأ قاعدة البيانات بالبيانات التجريبية، ويستغرق ذلك بضع دقائق؛ أما مرات التشغيل اللاحقة فتستغرق ثوانيَ.
الطرفيةفيlearnio-lmsdocker compose up --buildالمنفذ مستخدم بالفعل؟
إذا توقف التشغيل برسالة
المنفذ مستخدم بالفعلports are not available ... address already in useفهناك برنامج آخر يستخدم 3030 أو 3031 أو 8000. إما أن توقفه، أو أن تنشئ ملفًا باسم.envداخل المجلدlearnio-lmsيحدد المنفذ الذي تحتاجه، مثلADMIN_PORT=3041(وSITE_PORTلموقع الطلاب، وAPI_PORTلواجهة API). ثم شغّلdocker compose up --buildمن جديد وافتح التطبيق على منفذه الجديد.النتيجة المتوقعة: تبقى الخدمات الثلاث قيد التشغيل ويتوقف السجل عن التمرير. اترك هذه الطرفية مفتوحة.
تواجه مشكلة؟افتح موقع الطلاب
افتح localhost:3030محلي وسجّل الدخول بحساب الطالب التجريبي:
demo@learnio.comبكلمة المرورDemo@123.النتيجة المتوقعة: يظهر الكتالوج، ويفتح تسجيل الدخول لوحة الطالب.
تواجه مشكلة؟سجّل الدخول إلى لوحة الإدارة
افتح localhost:3031محلي. حساب المدير العام هو
admin@learnio.comبكلمة المرورAdmin@123. غيّرها بعد أول تسجيل دخول.النتيجة المتوقعة: تفتح لوحة الإدارة على صفحة النظرة العامة.
تواجه مشكلة؟
جولة سريعة
هكذا تبدو البيانات التجريبية بعد تشغيل كل شيء: موقع الطلاب بكتالوجه، مفتوحًا على إحدى الدورات.

| الحساب | البريد الإلكتروني | كلمة المرور |
|---|---|---|
| المدير العام | admin@learnio.com | Admin@123 |
| المدرّس | emily-davis@learnio.com | Teach@123 |
| الطالب | demo@learnio.com | Demo@123 |
هناك أحد عشر حسابًا آخر للطاقم بالشكل *@learnio.com وكلمة المرور admin123، لكل منها دور مختلف، لترى الصلاحيات من الداخل. هذه حسابات تجريبية محلية فقط.
أوقف التطبيقات وأعد تشغيلها
اضغط Ctrl+C في الطرفية لإيقاف التطبيقات، أو شغّل هذا الأمر من المجلد learnio-lms. تبقى بياناتك محفوظة في وحدة التخزين learnio-data.
learnio-lmsdocker compose downأعد التشغيل بالأمر نفسه في الخطوة 3. من دون --build يعيد استخدام الصور التي بنيتها مسبقًا.
learnio-lmsdocker compose upحافظ على بياناتك
يحذف docker compose down -v وحدة تخزين قاعدة البيانات أيضًا. يملأ التشغيل التالي نسخة جديدة من البيانات التجريبية، ويضيع كل ما أنشأته.
شغّل موقع الطلاب
هذه الحزمة هي موقع الطلاب وحده. يعمل على البيانات النموذجية المرفقة به إلى أن توجّهه إلى واجهة API من Learnio. واجهة API حزمة منفصلة وليست ضمن هذا التنزيل.
فك الضغط وافتح المجلد
الطرفيةunzip frontend-*.zip cd frontendالنتيجة المتوقعة: يحتوي المجلد على
Dockerfileوpackage.json.ابنِ الصورة
تُضمَّن قيم
NEXT_PUBLIC_*في شيفرة JavaScript التي يحمّلها المتصفح، لذا فهي وسائط بناء. احذفها ليعمل الموقع على البيانات النموذجية؛ ولاستخدام واجهة API خاصة بك، مرّر عنوانها.الطرفيةفيfrontenddocker build -t learnio-site .مع واجهة API خاصة بك:
الطرفيةفيfrontenddocker build -t learnio-site --build-arg NEXT_PUBLIC_API_BASE_URL=https://api.your-domain.com/api --build-arg NEXT_PUBLIC_SITE_URL=https://your-domain.com .شغّله
إذا كان المنفذ
3030مشغولًا، فغيّر الرقم الموجود على يسار-p، مثل-p 3041:3030، وافتح ذلك المنفذ بدلًا منه.الطرفيةفيfrontenddocker run -p 3030:3030 learnio-siteالنتيجة المتوقعة: يفتح localhost:3030محلي الموقع. من دون واجهة API، يظهر إشعار "Sample data" أسفل الصفحة ليوضح ذلك.
تواجه مشكلة؟
شغّل لوحة الإدارة
هذه الحزمة هي لوحة الإدارة وحدها. ومن دون واجهة API تعمل على محاكاة داخل المتصفح: يمكنك تسجيل الدخول والتجول فيها، لكن معظم الشاشات تبقى فارغة حتى تربطها بواجهة Learnio API. واجهة API حزمة منفصلة وليست ضمن هذا التنزيل.
فك الضغط وافتح المجلد
الطرفيةunzip admin-dashboard-*.zip cd admin-dashboardالنتيجة المتوقعة: يحتوي المجلد على
Dockerfileوpackage.json.ابنِ الصورة
من دون وسائط بناء تستخدم لوحة الإدارة المحاكاة. لاستخدام واجهة API خاصة بك، مرّر عنوانها، وعنوان WebSocket الخاص بها (الخادم نفسه من دون
/api)، وعنوان موقع الطلاب.الطرفيةفيadmin-dashboarddocker build -t learnio-admin .مع واجهة API خاصة بك:
الطرفيةفيadmin-dashboarddocker build -t learnio-admin --build-arg NEXT_PUBLIC_API_BASE_URL=https://api.your-domain.com/api --build-arg NEXT_PUBLIC_WEBSOCKET_BASE_URL=https://api.your-domain.com --build-arg NEXT_PUBLIC_SITE_URL=https://your-domain.com .شغّلها وسجّل الدخول
إذا كان المنفذ
3031مشغولًا، فغيّر الرقم الموجود على يسار-p، مثل-p 3041:3031، وافتح ذلك المنفذ بدلًا منه.الطرفيةفيadmin-dashboarddocker run -p 3031:3031 learnio-adminالنتيجة المتوقعة: يفتح localhost:3031محلي نموذج تسجيل الدخول، معبّأً مسبقًا بـ
تواجه مشكلة؟admin@learnio.comوAdmin@123. مع المحاكاة، يسجّل أي بريد إلكتروني وأي كلمة مرور دخولك بصفة المدير العام.
شغّل واجهة API
هذه الحزمة هي واجهة API المبنية على NestJS وحدها، على ملف SQLite محفوظ في وحدة تخزين Docker. موقع الطلاب ولوحة الإدارة حزمتان منفصلتان وليستا ضمن هذا التنزيل.
فك الضغط وأنشئ ملف البيئة
يعمل
.env.exampleكما هو للتشغيل المحلي.الطرفيةunzip back-end-*.zip cd back-end cp .env.example .envابنِ الصورة
الطرفيةفيback-enddocker build -t learnio-api .شغّلها مع البيانات التجريبية
تحصل قاعدة البيانات الجديدة على جداول فارغة ما لم تطلب البيانات التجريبية. تحتفظ وحدة التخزين بقاعدة البيانات بين مرات التشغيل. إذا كان المنفذ
8000مشغولًا، فغيّر الرقم الموجود على يسار-p، مثل-p 8010:8000، واستخدم ذلك العنوان: يجب عندها أن تشير واجهاتك الأمامية إلىhttp://localhost:8010/api.الطرفيةفيback-enddocker run -p 8000:8000 -v learnio-data:/data -e SEED_DEMO_DATA=true --env-file .env learnio-apiالنتيجة المتوقعة: يجيب localhost:8000/api/healthمحلي بحالة
تواجه مشكلة؟ok.
إذا لم تضع JWT_SECRET خاصًا بك، أو أبقيت القيمة المثال، تولّد الحاوية مفتاحًا سريًا وتحفظه في وحدة التخزين.