Memperluas portal pembelajaran sekolah di Moodle dan BigBlueButton

Pada akhir Maret 2020, sebuah sekolah kecil Kamchatka menghadapi masalah yang sama dengan semua sekolah di negara kita: bagaimana cara mengajar anak-anak jika mereka tidak bisa bersekolah?

Tidak mungkin untuk hanya membuang bahan untuk studi independen, harus ada umpan balik, Anda perlu memastikan bahwa siswa memahami materi dengan benar.

Sebuah studi tentang portal federal memperjelas bahwa pelajaran yang tersedia terlalu primitif untuk topik, dan yang memungkinkan Anda untuk mengunggah materi Anda tidak mungkin bertahan dalam peningkatan muatan. Oleh karena itu, persyaratan untuk portal pelatihan dirumuskan:

  1. Solusi di server mereka (host-sendiri). Penolakan dari layanan publik, yang kemungkinan besar tidak akan mengatasi beban (yang kemudian dikonfirmasi).
  2. Registrasi manual. Siswa harus menerima login / kata sandi dari guru kelas, dan tidak pergi ke sumber daya dan mendaftar secara mandiri.
  3. Bekerja di browser di semua perangkat tanpa perlu menginstal perangkat lunak pihak ketiga. Karena kedua orang tua dan anak-anak duduk di rumah, dan tidak ada cukup komputer untuk semua orang, portal pelatihan harus diluncurkan pada perangkat apa pun (komputer, tablet, smartphone) yang saat ini tersedia untuk siswa. Menginstal perangkat lunak tambahan dapat menjadi masalah, jadi semuanya harus berfungsi di browser tanpa plugin tambahan (Flash, dll.).
  4. Penataan materi pelajaran, adanya umpan balik pada setiap tugas yang diselesaikan. Pekerjaan yang dilakukan oleh siswa harus terletak di tempat yang sama dengan tugas. Guru seharusnya tidak memilah pekerjaan rumah. Guru harus dapat mencatat kesalahan siswa tepat di pekerjaannya dan meninggalkan komentar di sana.
  5. Memantau aktivitas siswa. Guru perlu tahu kapan seorang siswa tertentu datang dan apa yang dia lakukan.
  6. Otorisasi ujung-ke-ujung dalam tutorial video. Murid tidak boleh diberi kesempatan untuk memperkenalkan diri dalam pelajaran video, dan guru harus memiliki semua alat untuk memoderasi pelajaran video (menghidupkan / mematikan mikrofon dan kamera dari setiap peserta, melarang obrolan pribadi, nyalakan / matikan obrolan umum).

Setelah pencarian dan pengujian cepat, kami memilih sekelompok Moodle + BigBlueButton untuk memenuhi semua persyaratan ini pada saat yang sama.

Instalasi dan konfigurasi mengambil 1 hari libur, pelatihan guru dan masalah organisasi - satu minggu liburan.

Untuk mulai dengan, kami membeli domain (saya akan menggunakan myportal.ru fiktif di mana-mana), mendelegasikannya ke server DNS dan memulai instalasi.

Instal Moodle
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.

Tema Moove dipilih sebagai yang paling sederhana dari sudut pandang pengguna. Di halaman utama pengguna ada jendela besar dengan permintaan untuk memasukkan nama pengguna dan kata sandi, dan setelah login - daftar pelajaran. Tidak mungkin tersesat.







Tentu saja, saya ingin bukannya mata pelajaran untuk memiliki daftar pelajaran hari ini (format yang lebih akrab untuk sekolah), tetapi karena para guru mulai bekerja dengan portal pada hari kedua setelah instalasi, kami memutuskan untuk tidak menyentuh apa pun dan tidak mengubah navigasi.

Instal 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.

Menginstal server surat.
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


Karena ada banyak siswa, kami membuat kotak menggunakan skrip. Menggunakan perekatan nilai kolom, baris kreasi pengguna diturunkan dari tabel Excel dan disalin ke skrip.

touch account.sh
chmod +x account.sh

Script memiliki bentuk:

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

Script dijalankan sebagai zimbra.

su zimbra
./account.sh

Konfigurasikan 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


Kustomisasi moodle
: β€” β€” . , , .

β€” . , .

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.

( β€” β€” β€” ) , , ( ).

Menciptakan Pengguna Moodle.

Sekali lagi, kami mengambil papan nama, nama depan, kelas, menghasilkan kata sandi untuk semua (misalnya, menggunakan ViPNet Password Generator) dan menghasilkan login dan alamat email. Agar tidak terlalu menyakitkan ketika menggunakan kata sandi dalam csv dan skrip, kami menghapus dari kata sandi yang berisi 'dan;



Simpan di csv dalam format ini:

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

Pengkodean file harus berupa UTF-8, konversikan dengan nyaman menjadi notepad ++.

Administrasi Terbuka - Pengguna - Unduh Pengguna. Pemisah ":" Pratinjau baris "1000". Kami melihat adanya kesalahan dan apakah semuanya baik - baik saja diunduh.

Sekarang kami memiliki semua siswa. Tetap menciptakan guru dan Anda bisa membuat pelajaran.

Administrasi Terbuka - Kursus - Kelola kursus dan kategori. Buat kategori. Misalnya, "Sekolah nomor 1". Kami menetapkan

kategori untuk peran:



Dalam Manajer, kami menambahkan guru dan direktur, dan dalam pencipta kursus untuk semua guru.
Kami membuat kursus (misalnya, 11 A Informatika). Sementara dalam kursus, guru atau kepala sekolah mengklik "Peserta" - "Daftarkan pengguna ke kursus."



Anda dapat memilih grup (misalnya, "11 A (2020)") untuk merekam semua pengguna dari kelas.
Untuk menambahkan elemen ke pelajaran, aktifkan mode edit dan tambahkan elemen.



Misalnya, konferensi BigBlueButton. Untuk memulai konferensi, klik "Hubungkan ke sesi." Tutorial video telah dimulai.



Lebih dari sebulan, pengalaman dalam tutorial video telah diakumulasikan.

  1. Yang terbaik adalah menggunakan mikrofon desktop USB yang murah seperti Fifine K669 atau DEXP U700 untuk pembelajaran online. Semakin sedikit tombol pada mikrofon, semakin baik.
  2. Guru sekolah menengah hampir berhenti menggunakan webcam pada pertengahan bulan, karena hal utama adalah presentasi dan suara. Video mengalihkan perhatian siswa dan mencegah guru bangun jam 8:10 dan segera memulai pelajaran.
  3. Dalam 30 menit pelajaran online, guru memberi tahu lebih banyak daripada kebanyakan siswa punya waktu untuk belajar sendiri dalam waktu yang bersamaan.

Dari sekolah lain ada permintaan "Saya ingin sama dengan Zoom ke tautan", jadi server terpisah dimunculkan dengan BigBlueButton dan Greenlight sebagai panel kontrol.

Ini diatur dengan cara yang sama seperti BBB, hanya dengan saklar -g di akhir:

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

Ada perlindungan terhadap gangguan pelajaran (sebuah fenomena yang disebut pembesaran zoom): saat membuat konferensi, Anda dapat mengaktifkan mode β€œPersetujuan moderator sebelum koneksi” diperlukan. Setiap kali seorang siswa masuk, konfirmasi seorang guru akan diperlukan, guru hanya akan membiarkan siswanya masuk dengan nama keluarga yang sudah dikenal.



Untuk konsultasi perorangan, server Jitsi dikerahkan, yang memungkinkan Anda untuk dengan cepat membuat ruang dan membagikan tautan, tetapi mereka tidak menggunakannya sehingga lebih memilih untuk membuat konferensi BigBlueButton untuk setiap siswa di portal utama.

Saya harap pengalaman kami bermanfaat bagi seseorang dan kami membuat dunia sedikit lebih baik.

All Articles