توسيع بوابة التعلم المدرسي على موودل و BigBlueButton

في نهاية مارس 2020 ، واجهت مدرسة صغيرة في كامتشاتكا نفس المشكلة التي تواجهها جميع المدارس في بلدنا: كيفية تعليم الأطفال إذا لم يتمكنوا من الذهاب إلى المدرسة؟

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

أوضحت دراسة أجريت على بوابات اتحادية أن الدروس المتاحة بدائية للغاية بالنسبة للموضوعات ، ومن غير المحتمل أن تتحمل تلك الدروس التي تسمح لك بتحميل المواد الخاصة بك الحمل المتزايد. لذلك ، تمت صياغة متطلبات بوابة التدريب:

  1. الحل على خوادمهم (استضافة ذاتية). الرفض من الخدمات العامة ، والتي على الأرجح لن تتعامل مع الحمل (الذي تم تأكيده لاحقًا).
  2. تسجيل يدوي. يجب أن يتلقى الطالب تسجيل دخول / كلمة مرور من مدرس الفصل ، وعدم الذهاب إلى الموارد والتسجيل بشكل مستقل.
  3. اعمل في متصفح على جميع الأجهزة دون الحاجة إلى تثبيت برنامج تابع لجهة خارجية. نظرًا لأن كلا من الآباء والأطفال يجلسون في المنزل ، ولا توجد أجهزة كمبيوتر كافية للجميع ، فيجب إطلاق بوابة التدريب على أي أجهزة (أجهزة الكمبيوتر والأجهزة اللوحية والهواتف الذكية) المتوفرة حاليًا للطالب. يمكن أن يمثل تثبيت برامج إضافية مشكلة ، لذلك يجب أن يعمل كل شيء في متصفح بدون مكونات إضافية إضافية (Flash ، إلخ).
  4. هيكلة مواد الدرس ، وجود ردود فعل على كل مهمة مكتملة. يجب أن يقع العمل الذي يقوم به الطالب في نفس مكان المهمة. يجب ألا يقوم المعلم بفرز الواجبات المنزلية. يجب أن يكون المعلم قادرًا على ملاحظة أخطاء الطلاب في عمله وترك التعليقات هناك.
  5. مراقبة نشاط الطلاب. يحتاج المعلم أن يعرف متى جاء طالب معين وماذا كان يفعل.
  6. إذن من طرف إلى طرف في دروس الفيديو. لا يجب إعطاء التلاميذ الفرصة لتقديم أنفسهم في دروس الفيديو ، ويجب أن يكون لدى المعلم جميع الأدوات اللازمة لإدارة درس الفيديو (قم بتشغيل / إيقاف تشغيل الميكروفونات والكاميرات لكل مشارك ، وحظر الدردشات الخاصة ، وتشغيل / إيقاف الدردشة العامة).

بعد بحث واختبار سريع ، اخترنا مجموعة من Moodle + BigBlueButton لتلبية جميع هذه المتطلبات في نفس الوقت.

استغرق التثبيت والتكوين يوم عطلة ، وتدريب المعلمين والقضايا التنظيمية - أسبوع عطلة.

بادئ ذي بدء ، اشترينا مجالًا (سأستخدم myportal.ru الخيالي في كل مكان) ، وفوضناه إلى خوادم DNS وبدأ التثبيت.

تثبيت موودل
Moodle «» Ubuntu 18.04 8 vCPU, 24 2 . SSH-.

.
sudo root:

$ sudo su -

:

apt update
apt dist-upgrade

timezone:

dpkg-reconfigure tzdata

:

apt-cache search cloud-init
bash -c "echo 'datasource_list: [ None ]' sudo -s tee /etc/cloud/cloud.cfg.d/90_dpkg.cfg"
apt purge -y cloud-init
rm -Rf /etc/cloud /var/lib/cloud

apache, mysql php:

apt install apache2 mysql-client mysql-server php libapache2-mod-php mc

mysql:

mysql_secure_installation

, Moodle:

apt install graphviz aspell ghostscript clamav php7.2-pspell php7.2-curl php7.2-gd php7.2-intl php7.2-mysql php7.2-xml php7.2-xmlrpc php7.2-ldap php7.2-zip php7.2-soap php7.2-mbstring

/etc/php/7.2/cli/php.ini /etc/php/7.2/apache/php.ini (, ):

[Date]
date.timezone = "Asia/Kamchatka"

Moodle /var/www/html/moodle:

wget https://download.moodle.org/download.php/stable38/moodle-latest-38.tgz

/var/www/html/moodle 0777, 0755:

chmod 0777 -R /var/www/html/moodle

/var/www/moodledata, Moodle . /var/www/moodledata 0777:

mkdir /var/www/moodledata
chmod 0777 -R /var/www/moodledata

- /etc/apache2/sites-available/ (, urok.myportal.ru.conf) :

<VirtualHost *:80>
ServerName urok.myportal.ru
ServerAdmin help@myportal.ru
DocumentRoot /var/www/html/moodle/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

apache2 :

service apache2 restart
add-apt-repository ppa:certbot/certbot
apt update
apt install certbot python3-certbot-apache
certbot --apache -d urok.myportal.ru
service apache2 restart

https, apache2 ( https):

<VirtualHost *:80>
ServerName urok.myportal.ru
ServerAdmin help@myportal.ru
DocumentRoot /var/www/html/moodle/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =urok.myportal.ru
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName urok.myportal.ru
ServerAdmin help@myportal.ru
DocumentRoot /var/www/html/moodle/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLCertificateFile /etc/letsencrypt/live/urok.myportal.ru/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/urok.myportal.ru/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf

ufw:

ufw enable
ufw allow ssh
ufw allow 'Apache Full'
ufw delete allow 'Apache'
ufw status
Status: active
To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
Apache Full                ALLOW       Anywhere
22/tcp (v6)                ALLOW       Anywhere (v6)
Apache Full (v6)           ALLOW       Anywhere (v6)

, 'pass' :

mysql -u root -p
CREATE DATABASE moodle DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,CREATE TEMPORARY TABLES,DROP,INDEX,ALTER ON moodle.* TO 'moodleuser'@'localhost' IDENTIFIED BY 'pass';

Moodle. (moodle), (moodleuser) , .

cron.php :

crontab -u www-data -e
* * * * * /usr/bin/php  /var/www/html/moodle/admin/cli/cron.php >/dev/null

Moodle, Memcached:
apt install memcached libmemcached-tools php-memcached

C ( — — ):
— Opcache management https://moodle.org/plugins/tool_opcache
— Atto: Styles https://moodle.org/plugins/atto_styles
— BigBlueButtonBN https://moodle.org/plugins/mod_bigbluebuttonbn
— Moove https://moodle.org/plugins/theme_moove
moodle:

chmod 0755 -R /var/www/html/moodle

: - www-data, /var/www/html/moodle. , Moodle /var/www/moodledata.

:

cd /var/www/html/moodle/
chmod -R 0757 mod/
chmod -R 0757 theme/

moodle :

chmod -R 0755 mod/
chmod -R 0755 theme/

Moodle , BigBlueButton.

يتم اختيار نسق Moove كأبسط من وجهة نظر المستخدم. في الصفحة الرئيسية للمستخدم توجد نافذة كبيرة مع طلب لإدخال اسم المستخدم وكلمة المرور ، وبعد تسجيل الدخول - قائمة الدروس. من المستحيل أن تضيع.







بالطبع ، أود بدلاً من المواضيع أن يكون لدي قائمة بالدروس لهذا اليوم (تنسيق أكثر دراية للمدرسة) ، ولكن منذ أن بدأ المعلمون في العمل مع البوابة في اليوم الثاني بعد التثبيت ، قررنا عدم لمس أي شيء وعدم تغيير أي شيء في التنقل.

قم بتثبيت BigBlueButton
BBB Freeswitch BBB . Dell R610 2 Xeon X5650, BBB.

Ubuntu 16.04.
:

apt update
apt dist-upgrade
dpkg-reconfigure tzdata

ufw , BBB:

ufw enable
ufw allow ssh
ufw allow in 80,443,1935,7443/tcp
ufw allow in 16384:32768/udp

/var/bigbluebutton/, .
LUN 4 .

:

cat /etc/default/locale

en_US.UTF-8, :

apt-get install language-pack-en
update-locale LANG=en_US.UTF-8
exit

, en_US.UTF-8:

# cat /etc/default/locale
LANG=en_US.UTF-8

show-environment. en_US.UTF-8, :

systemctl show-environment
systemctl set-environment LANG=en_US.UTF-8
systemctl show-environment
LANG=en_US.UTF-8

BBB https://github.com/bigbluebutton/bbb-install

wget -qO- https://ubuntu.bigbluebutton.org/bbb-install.sh | bash -s -- -v xenial-22 -s bbb.myportal.ru -e help@myportal.ru

bbb.myportal.ru help@myportal.ru . , Let's Encrypt, https.

:

apt-get purge bbb-demo

Moodle BigBlueButton API. API:

# bbb-conf --secret
    URL: https://bbb.myportal.ru/bigbluebutton/
    Secret: cBjkdnjasuibnjnfdksagn6967sfrs

URL Moodle BigBlueButtonBN.

تثبيت خادم بريد.
Moodle . , .



pdd.yandex.ru, 3000 . pdd.yandex.ru Zimbra.
Ubuntu 18.04 (4vCPU 16 1000 ) Zimbra Open Source Edition: https://www.zimbra.com/downloads/zimbra-collaboration-open-source/

hosts ip :

mcedit /etc/hosts
127.0.0.1 localhost
77.88.99.11 mail.myportal.ru mail

:

apt-cache search cloud-init
bash -c "echo 'datasource_list: [ None ]' sudo -s tee /etc/cloud/cloud.cfg.d/90_dpkg.cfg"
apt purge -y cloud-init
rm -Rf /etc/cloud /var/lib/cloud
systemctl disable systemd-resolved
systemctl stop systemd-resolved
echo "nameserver 77.88.8.8" > /etc/resolv.conf

Zimbra

wget https://files.zimbra.com/downloads/8.8.15_GA/zcs-8.8.15_GA_3869.UBUNTU18_64.20190918004220.tgz
tar -xzf zcs-8.8*
cd /home/zcs-8.8.15_GA_3869.UBUNTU18_64.20190918004220/
./install.sh

C .

, zimbra-drive, zimbra-chat zimbra-imapd
. myportal.ru

DNS ERROR resolving MX for mail.myportal.ru
Change domain name? Yes
myportal.ru

7 — 4 — — r — a.
ufw , Zimbra:

ufw enable
ufw allow ssh
ufw allow in 25,80,110,143,443,465,587,993,995,5222,5223,9071,7071/tcp

Zimbra mail.myportal.ru:7071
Let's Encrypt : https://github.com/VojtechMyslivec/letsencrypt-zimbra

apt install software-properties-common
add-apt-repository ppa:certbot/certbot
apt update
apt install certbot
git clone https://github.com/VojtechMyslivec/letsencrypt-zimbra.git /opt/letsencrypt-zimbra
cp /opt/letsencrypt-zimbra/letsencrypt-zimbra.cfg{.example,}

:

mcedit /opt/letsencrypt-zimbra/letsencrypt-zimbra.cfg
email="help@myportal.ru"
common_names=( "mail.myportal.ru" )

zimbra certbot:

cp configs/sudoers.conf /etc/sudoers.d/zimbra_certbot

:

sudo -Hiu zimbra /opt/letsencrypt-zimbra/obtain-and-deploy-letsencrypt-cert.sh -v

:

cp configs/cron.conf /etc/cron.d/letsencrypt-zimbra


نظرًا لوجود العديد من الطلاب ، نقوم بإنشاء مربعات باستخدام برنامج نصي. باستخدام لصق قيم الأعمدة ، يتم إلغاء تحميل صفوف إنشاء المستخدم من جدول Excel ونسخها إلى البرنامج النصي.

touch account.sh
chmod +x account.sh

يحتوي البرنامج النصي على الشكل:

export LC_ALL='ru_RU.UTF-8'
zmprov createAccount a9arkhipov@myportal.ru 'dhfekjcjd' displayName ' ' givenName '' sn '' zimbraPasswordMustChange FALSE

يتم تشغيل البرنامج النصي باسم zimbra.

su zimbra
./account.sh

تكوين BigBlueButton
, BBB - :

wget https://files.freeswitch.org/releases/sounds/freeswitch-sounds-ru-RU-elena-8000-1.0.51.tar.gz
wget https://files.freeswitch.org/releases/sounds/freeswitch-sounds-ru-RU-elena-16000-1.0.51.tar.gz
wget https://files.freeswitch.org/releases/sounds/freeswitch-sounds-ru-RU-elena-32000-1.0.51.tar.gz
wget https://files.freeswitch.org/releases/sounds/freeswitch-sounds-ru-RU-elena-48000-1.0.51.tar.gz

/opt/freeswitch/share/freeswitch/sounds.

, freeswitch:

chown -R freeswitch:daemon /opt/freeswitch/share/freeswitch/sounds/ru/

vars.xml:

mcedit /opt/freeswitch/etc/freeswitch/vars.xml

<X-PRE-PROCESS cmd="set" data="sound_prefix=$${sounds_dir}/ru/RU/elena"/>
, - : /var/www/bigbluebutton-default/default.pdf

:

mcedit /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties

:

, :

defaultWelcomeMessage=Welcome to <b>%%CONFNAME%%</b>!
defaultWelcomeMessageFooter=support@myportal.ru

muteOnStart=true #      .
allowModsToUnmuteUsers=true #      
attendeesJoinViaHTML5Client=true #  HTML5   Flash
moderatorsJoinViaHTML5Client=true #  HTML5   Flash
breakoutRoomsEnabled=false #   
breakoutRoomsRecord=false
breakoutRoomsPrivateChatEnabled=false
allowDuplicateExtUserid=true #        

«»



# Default Lock Settings
lockSettingsDisableCam=true
lockSettingsDisableMic=false
lockSettingsDisablePrivateChat=true
lockSettingsDisablePublicChat=false
lockSettingsDisableNote=true
lockSettingsHideUserList=false
lockSettingsLockedLayout=false
lockSettingsLockOnJoin=true
lockSettingsLockOnJoinConfigurable=true

:

mcedit /usr/share/meteor/bundle/programs/server/assets/app/config/settings.yml

- hd , :

cameraProfiles:
    - id: low
      name: Low quality 100 kbps
      default: false
      bitrate: 100
    - id: medium
      name: Medium quality 200 kbps
      default: false
      bitrate: 200
    - id: high
      name: High quality 500 kbps
      default: true
      bitrate: 500
    - id: hd

., « »:

minBrowserVersions:
  - browser: YandexBrowser
    version: 15

:

bbb-conf --stop
bbb-conf --start


تخصيص موودل
: — — . , , .

— . , .

Opcache management , .

/ .

: mail.myportal.ru, TLS, LOGIN, noreply@myportal.ru, , . — myportal.ru, , — .

— « » «5».
Moove ( — Moove) SCSS ATTO:

.attostylesbox {
    padding: 10px;
    box-sizing: border-box;
    border-radius: 5px;
    margin-bottom: 10px;
    width: 100%
}
.attostylesbox.attostylesbox-solid {
    color: white;
}
.attostylesbox.attostylesbox-outline {
    background-color: white;
    border-width: 2px;
    border-style: solid;
}
.attostylesbox.attostylesbox-callout {
    background-color: white;
    border: 1px solid #eee;
    border-left-width: 5px;
}
.attostylesbox.attostylesbox-solid-blue {
    background-color: #7d9fd3;
}
.attostylesbox.attostylesbox-solid-green {
    background-color: #98ca3e;
}
.attostylesbox.attostylesbox-solid-yellow {
    background-color: #ffcf35;
}
.attostylesbox.attostylesbox-solid-red {
    background-color: #ef4540;
}
.attostylesbox.attostylesbox-solid-black {
    background-color: #3a3a3a;
}
.attostylesbox.attostylesbox-outline-blue {
    border-color: #7d9fd3;
    color: #7d9fd3;
}
.attostylesbox.attostylesbox-outline-green {
    border-color: #98ca3e;
    color: #98ca3e;
}
.attostylesbox.attostylesbox-outline-yellow {
    border-color: #ffcf35;
    color: #ffcf35;
}
.attostylesbox.attostylesbox-outline-red {
    border-color: #ef4540;
    color: #ef4540;
}
.attostylesbox.attostylesbox-outline-black {
    border-color: #3a3a3a;
    color: #3a3a3a;
}
.attostylesbox.attostylesbox-callout-blue {
    border-left-color: #7d9fd3;
}
.attostylesbox.attostylesbox-callout-green {
    border-left-color: #98ca3e;
}
.attostylesbox.attostylesbox-callout-yellow {
    border-left-color: #ffcf35;
}
.attostylesbox.attostylesbox-callout-red {
    border-left-color: #ef4540;
}
.attostylesbox.attostylesbox-callout-black {
    border-left-color: #3a3a3a;
}
.attostylestextmarker {
    border-radius: 5px;
    padding-left: 5px;
    padding-right: 5px;
}
.attostylestextmarker.attostylestextmarker-green {
    background: #99ffcc;
}
.attostylestextmarker.attostylestextmarker-pink {
    background: #ffccff;
}
.attostylestextmarker.attostylestextmarker-yellow {
    background: #ffffcc;
}


, .

( — — ) BigBlueButton URL BigBlueButton , bbb-conf --secret.

( — — — ) , , ( ).

إنشاء مستخدمي موودل.

مرة أخرى ، نأخذ لوحة الاسم ، الاسم الأول ، الفئة ، ننشئ كلمات مرور للجميع (على سبيل المثال ، باستخدام ViPNet Password Generator) وننشئ تسجيلات الدخول وعناوين البريد الإلكتروني. لكي لا تكون مؤلمًا بشكل مؤلم عند استخدام كلمات المرور في csv والنصوص البرمجية ، نقوم بإزالة كلمات المرور التي تحتوي على 'و ؛



حفظ بتنسيق csv بهذا التنسيق:

username:firstname:lastname:email:cohort1:city:country:lang:password
g1petrov:::g1petrov@myportal.ru:1  (2020)::RU:ru:drkcwf,f,

يجب أن يكون ترميز الملف UTF-8 ، ويتم تحويله بسهولة إلى notepad ++.

فتح الإدارة - المستخدمون - تنزيل المستخدمين. فاصل ":" معاينة السطور "1000". ننظر إلى وجود أخطاء وإذا كان كل شيء جيد التنزيل.

الآن لدينا جميع الطلاب. يبقى إنشاء المعلمين ويمكنك إنشاء الدروس.

الإدارة المفتوحة - الدورات - إدارة الدورات والفئات. قم بإنشاء فئة. على سبيل المثال ، "المدرسة رقم 1". نحن نعين

فئات للأدوار:



في المدراء ، نضيف معلمين ومديرين ، وفي منشئي الدورة لجميع المعلمين.
نقوم بإنشاء دورة (على سبيل المثال ، 11 A للمعلوماتية). أثناء وجوده في الدورة التدريبية ، يقوم المعلم أو المدير الرئيسي بالنقر فوق "المشاركون" - "تسجيل المستخدمين في الدورة التدريبية".



يمكنك تحديد مجموعة (على سبيل المثال ، "11 A (2020)") لتسجيل جميع المستخدمين من الفصل.
لإضافة عناصر إلى الدرس ، قم بتمكين وضع التحرير وإضافة عنصر.



على سبيل المثال ، مؤتمر BigBlueButton. لبدء المؤتمر ، انقر فوق "الاتصال بجلسة العمل". بدأ الفيديو التعليمي.



على مدى شهر ، تراكمت الخبرة في دروس الفيديو.

  1. من الأفضل استخدام ميكروفونات USB المكتبية غير المكلفة مثل Fifine K669 أو DEXP U700 للتعلم عبر الإنترنت. كلما قل عدد الأزرار في الميكروفون ، كان ذلك أفضل.
  2. توقف معلمو المدارس الثانوية تقريبًا عن استخدام كاميرات الويب بحلول منتصف الشهر ، حيث كان الشيء الرئيسي هو العرض والصوت. يصرف الفيديو الطلاب ويمنع المدرس من الاستيقاظ الساعة 8:10 وبدء الدرس فورًا.
  3. في 30 دقيقة من الدرس عبر الإنترنت ، يخبر المعلمون أكثر بكثير من معظم الطلاب لديهم الوقت للتعلم بمفردهم في نفس الوقت.

من مدارس أخرى كانت هناك طلبات "أريد نفس تكبير / تصغير الارتباط" ، لذلك تم رفع خادم منفصل باستخدام BigBlueButton و Greenlight كلوحة تحكم.

يتم ضبطه بنفس طريقة BBB ، فقط مع مفتاح -g في النهاية:

wget -qO- https://ubuntu.bigbluebutton.org/bbb-install.sh | bash -s -- -v xenial-22 -s vks.myportal.ru -e help@myportal.ru -g
cd greenlight/
docker exec greenlight-v2 bundle exec rake admin:create

هناك حماية ضد انقطاع الدروس (ظاهرة تسمى التفجير بالزوم): عند إنشاء مؤتمر ، يمكنك تمكين الوضع "موافقة الوسيط قبل الاتصال". في كل مرة يدخل فيها الطالب ، يلزم تأكيد المعلم ، ولن يسمح المعلم لطلابه إلا بلقب مألوف.



بالنسبة للاستشارات الفردية ، تم نشر خادم Jitsi ، مما يسمح لك بإنشاء غرفة ومشاركة رابط بسرعة ، لكنهم لا يستخدمونه كثيرًا مفضلين إنشاء مؤتمرات BigBlueButton لكل طالب على البوابة الرئيسية.

آمل أن تكون تجربتنا مفيدة لشخص ما وقد جعلنا العالم أفضل قليلاً.

All Articles