انتقل إلى المقال
Aniq-UI

Learnioشغّل Learnio محليًا

شغّل Learnio محليًا

شغّل حزمتك على جهازك باستخدام Docker.

لحزمة الحزمة الكاملة

قبل أن تبدأ: ثبّت Docker Desktop وافتحه، أو Docker Engine مع Compose.

اطّلع على المتطلبات
  1. نزّل قالبك

    افتح صفحة «قوالبي» ونزّل ملف ZIP الخاص بحزمتك من Learnio.

    النتيجة المتوقعة: يظهر في مجلد التنزيلات ملف باسم مثل learnio-lms-main-….zip.

  2. فك الضغط وافتح المجلد

    استخرج ملف ZIP وافتح طرفية داخل المجلد learnio-lms. على Windows، استخرجه في File Explorer، ثم افتح طرفية داخل المجلد.

    الطرفية
    unzip learnio-lms-*.zip
    cd learnio-lms

    النتيجة المتوقعة: يحتوي المجلد على admin-dashboard وback-end وfrontend وdocker-compose.yml.

    تواجه مشكلة؟
  3. شغّل التطبيقات

    ابنِ واجهة API وموقع الطلاب ولوحة الإدارة وشغّلها. يبني التشغيل الأول ثلاث صور ويملأ قاعدة البيانات بالبيانات التجريبية، ويستغرق ذلك بضع دقائق؛ أما مرات التشغيل اللاحقة فتستغرق ثوانيَ.

    الطرفيةفي learnio-lms
    docker 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 من جديد وافتح التطبيق على منفذه الجديد.

    المنفذ مستخدم بالفعل

    النتيجة المتوقعة: تبقى الخدمات الثلاث قيد التشغيل ويتوقف السجل عن التمرير. اترك هذه الطرفية مفتوحة.

    تواجه مشكلة؟
  4. افتح موقع الطلاب

    افتح localhost:3030محلي وسجّل الدخول بحساب الطالب التجريبي: demo@learnio.com بكلمة المرور Demo@123.

    النتيجة المتوقعة: يظهر الكتالوج، ويفتح تسجيل الدخول لوحة الطالب.

    تواجه مشكلة؟
  5. سجّل الدخول إلى لوحة الإدارة

    افتح localhost:3031محلي. حساب المدير العام هو admin@learnio.com بكلمة المرور Admin@123. غيّرها بعد أول تسجيل دخول.

    النتيجة المتوقعة: تفتح لوحة الإدارة على صفحة النظرة العامة.

    تواجه مشكلة؟

جولة سريعة

هكذا تبدو البيانات التجريبية بعد تشغيل كل شيء: موقع الطلاب بكتالوجه، مفتوحًا على إحدى الدورات.

الحسابالبريد الإلكترونيكلمة المرور
المدير العامadmin@learnio.comAdmin@123
المدرّسemily-davis@learnio.comTeach@123
الطالبdemo@learnio.comDemo@123

هناك أحد عشر حسابًا آخر للطاقم بالشكل *@learnio.com وكلمة المرور admin123، لكل منها دور مختلف، لترى الصلاحيات من الداخل. هذه حسابات تجريبية محلية فقط.

أوقف التطبيقات وأعد تشغيلها

اضغط Ctrl+C في الطرفية لإيقاف التطبيقات، أو شغّل هذا الأمر من المجلد learnio-lms. تبقى بياناتك محفوظة في وحدة التخزين learnio-data.

الطرفيةفي learnio-lms
docker compose down

أعد التشغيل بالأمر نفسه في الخطوة 3. من دون --build يعيد استخدام الصور التي بنيتها مسبقًا.

الطرفيةفي learnio-lms
docker compose up

حافظ على بياناتك

يحذف docker compose down -v وحدة تخزين قاعدة البيانات أيضًا. يملأ التشغيل التالي نسخة جديدة من البيانات التجريبية، ويضيع كل ما أنشأته.

شغّل موقع الطلاب

هذه الحزمة هي موقع الطلاب وحده. يعمل على البيانات النموذجية المرفقة به إلى أن توجّهه إلى واجهة API من Learnio. واجهة API حزمة منفصلة وليست ضمن هذا التنزيل.

  1. نزّل قالبك

    افتح صفحة «قوالبي» ونزّل ملف ZIP الخاص بموقع الطلاب.

  2. فك الضغط وافتح المجلد

    الطرفية
    unzip frontend-*.zip
    cd frontend

    النتيجة المتوقعة: يحتوي المجلد على Dockerfile وpackage.json.

  3. ابنِ الصورة

    تُضمَّن قيم NEXT_PUBLIC_* في شيفرة JavaScript التي يحمّلها المتصفح، لذا فهي وسائط بناء. احذفها ليعمل الموقع على البيانات النموذجية؛ ولاستخدام واجهة API خاصة بك، مرّر عنوانها.

    الطرفيةفي frontend
    docker build -t learnio-site .

    مع واجهة API خاصة بك:

    الطرفيةفي frontend
    docker 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 .
  4. شغّله

    إذا كان المنفذ 3030 مشغولًا، فغيّر الرقم الموجود على يسار -p، مثل -p 3041:3030، وافتح ذلك المنفذ بدلًا منه.

    الطرفيةفي frontend
    docker run -p 3030:3030 learnio-site

    النتيجة المتوقعة: يفتح localhost:3030محلي الموقع. من دون واجهة API، يظهر إشعار "Sample data" أسفل الصفحة ليوضح ذلك.

    تواجه مشكلة؟

شغّل لوحة الإدارة

هذه الحزمة هي لوحة الإدارة وحدها. ومن دون واجهة API تعمل على محاكاة داخل المتصفح: يمكنك تسجيل الدخول والتجول فيها، لكن معظم الشاشات تبقى فارغة حتى تربطها بواجهة Learnio API. واجهة API حزمة منفصلة وليست ضمن هذا التنزيل.

  1. نزّل قالبك

    افتح صفحة «قوالبي» ونزّل ملف ZIP الخاص بلوحة الإدارة.

  2. فك الضغط وافتح المجلد

    الطرفية
    unzip admin-dashboard-*.zip
    cd admin-dashboard

    النتيجة المتوقعة: يحتوي المجلد على Dockerfile وpackage.json.

  3. ابنِ الصورة

    من دون وسائط بناء تستخدم لوحة الإدارة المحاكاة. لاستخدام واجهة API خاصة بك، مرّر عنوانها، وعنوان WebSocket الخاص بها (الخادم نفسه من دون /api)، وعنوان موقع الطلاب.

    الطرفيةفي admin-dashboard
    docker build -t learnio-admin .

    مع واجهة API خاصة بك:

    الطرفيةفي admin-dashboard
    docker 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 .
  4. شغّلها وسجّل الدخول

    إذا كان المنفذ 3031 مشغولًا، فغيّر الرقم الموجود على يسار -p، مثل -p 3041:3031، وافتح ذلك المنفذ بدلًا منه.

    الطرفيةفي admin-dashboard
    docker run -p 3031:3031 learnio-admin

    النتيجة المتوقعة: يفتح localhost:3031محلي نموذج تسجيل الدخول، معبّأً مسبقًا بـ admin@learnio.com وAdmin@123. مع المحاكاة، يسجّل أي بريد إلكتروني وأي كلمة مرور دخولك بصفة المدير العام.

    تواجه مشكلة؟

شغّل واجهة API

هذه الحزمة هي واجهة API المبنية على NestJS وحدها، على ملف SQLite محفوظ في وحدة تخزين Docker. موقع الطلاب ولوحة الإدارة حزمتان منفصلتان وليستا ضمن هذا التنزيل.

  1. نزّل قالبك

    افتح صفحة «قوالبي» ونزّل ملف ZIP الخاص بواجهة API.

  2. فك الضغط وأنشئ ملف البيئة

    يعمل .env.example كما هو للتشغيل المحلي.

    الطرفية
    unzip back-end-*.zip
    cd back-end
    cp .env.example .env
  3. ابنِ الصورة

    الطرفيةفي back-end
    docker build -t learnio-api .
  4. شغّلها مع البيانات التجريبية

    تحصل قاعدة البيانات الجديدة على جداول فارغة ما لم تطلب البيانات التجريبية. تحتفظ وحدة التخزين بقاعدة البيانات بين مرات التشغيل. إذا كان المنفذ 8000 مشغولًا، فغيّر الرقم الموجود على يسار -p، مثل -p 8010:8000، واستخدم ذلك العنوان: يجب عندها أن تشير واجهاتك الأمامية إلى http://localhost:8010/api.

    الطرفيةفي back-end
    docker 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 خاصًا بك، أو أبقيت القيمة المثال، تولّد الحاوية مفتاحًا سريًا وتحفظه في وحدة التخزين.

التالي

توقفت عند خطوة؟

ابحث عن الحل قبل أن تبدأ من جديد.

حل المشكلات

تفضيلات ملفات تعريف الارتباط

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