Sunday, May 17, 2020

Membangun Virtual Programming Lab Server Sebagai Dukungan Moodle E-Learning

Pendahuluan

    Wabah Corona (Covid-19) membuat sebagian kampus melakukan pembelajaran jarak jauh. Portal E-Learning ditawarkan untuk menjawab tantangan pembelajaran jarak jauh ini. Fitur yang disediakan portal E-Learning pada umumnya mencakup:
  1. Pemberian materi berupa handout, diktat maupun file aplikasi dalam format mingguan.
  2. Pemberian tugas, quiz dan ujian berbasis waktu menggunakan assessment.
  3. Membuat forum-forum diskusi untuk membangun pola berpikir kritis siswa.
  4. Membuat video tutorial menggunakan Video Interaktif berbasis H5P
  5. Tatap muka berbasis video conference.
Fitur-fitur tersebut sudah standar dalam sebuah portal E-Learning.

Permasalahan
  1. Permasalahan yang muncul berikutnya, bagaimana untuk mata kuliah berbasis praktikum? 
  2. Bagaimana menyediakan ruang untuk membuat sebuah "IDE" atau Integrated Development Environment?
  3. Bagaimana topologi antara server E-Learning dengan Server IDE-nya? 
  4. Amankan jika disatukan dalam sebuah mesin tunggal? 
  5. Jika tidak, bagaimana memisahkan server E-Learning dengan Server IDE-nya? 
  6. Bagaimana komunikasinya?
  7. Bagaimana keamanan dari Server IDE-nya itu sendiri (jika server IDE merupakan server lain yang melayani layanan tertentu)?
  8. Bagaimana jika mahasiswa menulis sesuatu yang "berbahaya" untuk server IDE-nya? Apakah perlu di-virtualisasi?

Hipotesis

    Dari sekian banyak permasalahan yang dihadapi, kita akan coba buat asumsi berdasarkan pengalaman penulis mengelola server dan isu keamanan yang dihadapi.
  1. Kita putuskan untuk menggunakan server IDE yang terpisah dari server aplikasi E-Learning dengan pertimbangan: menjaga overload server E-Learning; jika terjadi kesalahan peng-eksekusian program, server E-Learning tidak ikut DoS; pertimbangan pencurian data dan pengaksesan directory oleh pihak yang tidak bertanggung jawab.
  2. Membangun VPL-Jail Server sebagai Lingkungan Pengembangan Terintegrasinya dengan pertimbangan Plugin ini support E-Learning 3.8 yang penulis gunakan.
  3. Menggunakan HTTP sebagai protokol komunikasi antara server E-Learning dengan VPL-Jail Servernya karena pertimbangan overload.
  4. Memisahkan Web Server VPL-Jail dengan Web Server originalnya dengan menggunakan port 8070 di HTTP.
Perangkat yang digunakan

Perangkat lunak yang saya gunakan untuk server E-Learning adalah:
  1. Moodle 3.8
  2. Ubuntu 18.04
  3. Webserver dan Database standar.

Perangkat lunak yang saya gunakan untuk server VPL adalah:
  1. VPL Jail System 2.5.3
  2. Ubuntu 18.04
  3. Sudah ada HTTP dan HTTPS sebelumnya sehingga server VPL harus diletakkan pada port yang berbeda dari 80 atau 443.
Topologi Jaringan

    Sebelumnya, saya berencana membangun VPL server, di belakang server E-Learningnya sehingga satu-satunya akses ke VPL Jail Server hanya melalui E-Learning seperti pada gambar 1. Pertimbangan keamanan dan performa tentu saja.


Gambar 1. Rencana Awal Topologi Jaringan

    Ternyata, VPL Jail server harus "reachable" dari internet. Duh. Terpaksa server VPL Jail harus di-onlinekan seperti Gambar 2.



Gambar 1. Topologi Jaringan Akhir


Instalasi VPL Jail Server
   
    Sebenarnya banyak tutorial untuk membangun server VPL Jail beserta troubleshootingnya yang bisa terjadi saat instalasi maupun setelah instalasi. Blog ini dibuat karena ada beberapa perubahan konfigurasi dari seting defaultnya yang saya sesuaikan dengan kebutuhan Kampus STTA.
    Saat blog ini dibuat (2020-05-17 13:47:00) versi terakhir dari VPL adalah VPL Jail System 2.5.3. Kemungkinan ada perubahan langkah pada versi berikutnya.

Berikut langkah-langkah instalasi VPL Jail Server di Ubuntu 18.04.
  1. # wget https://vpl.dis.ulpgc.es/releases/vpl-jail-system-2.5.3.tar.gz
  2. # make distcheck
  3. # tar xvf vpl-jail-system-2.5.3.tar.gz
  4. # cd vpl-jail-system-2.5.3
  5. # ./install-vpl-sh (proses ini mungkin akan sedikit lama karena pada tahap ini, installer akan melakukan instalasi sejumlah compiler yang nanti akan digunakan dalam pembelajaran praktikum)
  6. Saat proses instalasi, anda akan ditanya beberapa pertanyaan terkait apakah anda ingin menginstall compiler ini dan itu dan yang sangat penting, saat anda ditanya untuk sertifikat SSL yang anda gunakan pada komunikasi HTTPS. Tidak usah kuatir jika anda menggunakan Self-Signed Certificate. Moodle bisa diatur untuk menerima sertifikat yang ditandatangani sendiri.
  7. Karena saya menggunakan port yang tidak standar untuk HTTP server VPL Jail Server, maka langkah berikut perlu dilakukan:
  8. # vim /etc/vpl/vpl-jail-system.conf
  9. Aktifkan dan ubah nilai pada PORT menjadi PORT=8083
  10. Aktifkan dan ubah nilai pada SECURE_PORT menjadi SECURE_PORT=4443
  11. # service vpl-jail-system restart
  12. Selesai

Testing

    Untuk menguji apakah jail server sudah bisa menjawab request, kita test dari Internet untuk mengunjungi server VPL kita melalui web browser. Jangan lupa gunakan PORT karena kita tidak menggunakan port standar. Anda bisa mengunjungi:
  1. http://server.http.anda:port/OK
  2. https://server.https.anda:port/OK
Kedua alamat itu harus mengembalikan nilai OK pada browser anda seperti pada gambar 3.


Gambar 3. Hasil Pengujian Server VPL-Jail System


Integrasi dengan Moodle

    Setelah server VPL-Jail System sudah siap, saatnya menanam PlugIn VPL pada moodle. Langkah-langkah untuk menginstall PlugIn Moodle seperti biasa.

  • Download PlugIn VPL di https://moodle.org/plugins/mod_vpl (Catatan: Saat blog ini dibuat, versi PlugIn VPL adalah 3.3.7)
  • Setelah download, install plugin tersebut melalui PlugIn Installer di Moodle (Gambar 4).

Gambar 4. Instalasi PlugIn Baru di Moodle

  • Setelah Upgrade Database, lakukan konfigurasi di Moodle anda dan sesuaikan Execution Server List
  • Centang pada bagian Accept Self -Signed Certificates jika anda menggunakan sertifikat yang ditandatangani sendiri seperti pada gambar 5.

Gambar 5. Konfigurasi Execution Server List

  • Save Konfigurasi anda.
  • Selesai dan Moodle sudah siap menerima Script untuk dieksekusi di VPL-Jail System.
Membuat penugasan di E-Learning

    Pada bagian ini, kita akan membuat penugasan mata pelajaran Programming kepada siswa yang nantinya akan dikerjakan langsung di portal E-Learning ini.

A.     Dari sisi Pengajar

Langkah-langkah untuk menambahkan aktifitas VPL adalah sebagai berikut:
1.    Aktifkan lebih dulu mode editing pada mata kuliah yang diampu.

 
2.  Pada jendela pertemuan yang ditentukan, pilih Add an activity or resource, pilih Virtual Programming Lab kemudian Klik Tombol Add.


3.    Berikan Judul tugas (wajib) dan Algoritma (jika diperlukan).

 
4.    Berikan batas akhir dibukanya tugas tersebut.

 
5.    Pilih Save and return to Course.


6.    Setelah tugas terbentuk, langkah berikutnya adalah mengijinkan siswa mengeksekusi source code yang mereka buat. Secara default, Elena tidak mengijinkan program untuk dieksekusi. Pada icon roda gigi sebelah kanan, pilih menu Execution Option.

 
7.    Berikan opsi Yes pada Run, Debug dan Evaluate kemudian klik Save Option.

 
8.    Selesai. Tugas pemrograman telah selesai dibuat dan siap dikerjakan mahasiswa.


B.    Pengerjakan tugas dari sisi Mahasiswa

Setelah tugas pemrograman selesai dibuat, berikut langkah untuk mengerjakan tugas dari sisi mahasiswa.

1.      Klik/ pilih tugas VPL pada mata kuliah yang di-enroll


2.      Klik Edit pada tugas yang telah terbuka,


3.    Berikan nama file sesuai extensi yang tepat. Elena akan memilihkan compiler program sesuai ekstensi yang diberikan.


4.      Mulai menulis kode program pada jendela yang disediakan kemudian tekan tombol Save.


5.      Tombol save ini akan mengaktifkan tombol Execute.

 

6.      .Melihat jalannya program.


7.      Selesai.



C.    Melihat Tugas Yang Dibuat Oleh Mahasiswa dari Sisi Pengajar

    Saat dan setelah mahasiswa mengerjakan tugas, Teacher dapat memantau pekerjaan mahasiswa dengan langkah sebagai berikut:

1.      Buka kembali tugas yang diberikan.


2.      Pilih Submission list à Pilih Angka Submission à Submission View







3.      Pengajar juga bisa mencoba menjalankan program yang dibuat mahasiswa pada menu Edit.