Tips & Best Practices

Panduan praktis untuk operasional server ujian yang lancar.

Persiapan Sebelum Ujian

H-7: Persiapan Server

  • Jalankan examtool status — pastikan semua hijau
  • Jalankan examtool update — update aplikasi ke versi terbaru
  • Jalankan examtool self-update — update script examtool jika ada versi baru
  • Cek SSL certificate belum expired
  • Cek disk space tersedia minimal 20% free
  • Pastikan backup database terjadwal

H-1: Uji Coba

  • Test akses dari 2-3 PC di lab ujian
  • Test login peserta dan dosen
  • Test SEB (jika digunakan) dari PC lab
  • Cek koneksi internet/intranet stabil
  • Siapkan nomor kontak tim pengelola pusat
  • Catat IP server dan kredensial di tempat aman

H-0: Hari Ujian

  • Restart semua service 30 menit sebelum ujian
  • Monitor examtool status selama ujian
  • Siapkan akses SSH untuk troubleshooting darurat
  • Jangan jalankan update/backup selama ujian berlangsung

Sizing yang Tepat

Pemilihan tier yang tepat sangat penting. examtool mendeteksi tier otomatis berdasarkan jumlah PC:

Jumlah PC Tier RAM Minimum CPU Minimum
50 — 100 SMALL 4 GB 4 core
100 — 200 MEDIUM 8 GB 6 core
200 — 300 LARGE 12 GB 8 core
300 — 500 MAX 16 GB 16 core

Tips:

  • Hitung jumlah PC fisik + 10-20% cadangan
  • Lebih baik over-provision daripada under-provision
  • Jika ragu antara dua tier, pilih tier yang lebih tinggi

Keamanan

Password

  • Gunakan password minimal 12 karakter
  • Kombinasi huruf besar, kecil, angka
  • Jangan gunakan password yang sama untuk server lain
  • Ganti password secara berkala (minimal per semester)
  • Simpan password di password manager, bukan di sticky note

Username

Username harus 3-32 karakter, dimulai huruf kecil, hanya boleh huruf kecil, angka, underscore, dan dash.

Reserved words — username berikut tidak bisa digunakan: root, admin, administrator, www-data, mysql, postgres, nginx, apache, operator, nobody, daemon, bin, sys, man, mail

SSH

  • Gunakan SSH key authentication jika memungkinkan
  • Ganti port SSH default menggunakan examtool ssh-port --port=2222
  • Batasi akses SSH hanya dari IP admin:
    ufw delete allow 22/tcp
    ufw allow from 192.168.1.0/24 to any port 22
    

    Ganti port 22 dengan SSH port aktif jika menggunakan custom port.

Firewall

  • Jangan buka port yang tidak diperlukan
  • Review ufw status secara berkala
  • Di jaringan lab, gunakan VLAN terpisah untuk ujian

File .env

  • File .env berisi konfigurasi lokal (SEB, helpdesk, dll)
  • Jika /etc/examtool.env tidak ada saat install, examtool otomatis membuatnya dari template
  • Password database di-generate otomatis dan disimpan ke file .env
  • Permission harus 0600: chmod 600 /etc/examtool.env
  • Jangan share file .env via email/chat

Backup

Setup Cron Otomatis

Gunakan perintah interaktif untuk setup backup harian:

examtool enable-backup-cron

Akan ditanya jam, path, dan retensi. Default: jam 02:00, path /root/backup_db, retensi 7 hari.

Untuk menghapus cron: examtool disable-backup-cron

Sebelum Update

Selalu backup sebelum menjalankan update:

examtool backup-db
examtool update

Verifikasi Backup

Sesekali test restore ke server lain untuk memastikan backup valid:

# Di server test
examtool restore-db --file=/root/backup_db/backup_terbaru.sql.gz

Retensi

  • Default cron: hapus backup > 7 hari (bisa diubah saat setup)
  • Backup sebelum ujian penting: simpan lebih lama
  • Pindahkan backup ke storage external secara berkala

Monitoring

Cek Rutin (Harian)

# Quick health check
examtool status

Yang Perlu Diperhatikan

  • Disk usage > 80%: Bersihkan log lama, backup lama
  • Swap usage > 50%: Server butuh lebih banyak RAM
  • Memcached hit ratio < 80%: Cek konfigurasi cache
  • Error log banyak: Investigasi sebelum ujian
  • SSL expiry < 30 hari: Segera perpanjang certificate

Log Rotation

Log otomatis di-rotate oleh logrotate. Jika disk penuh karena log:

# Cek ukuran log
du -sh /var/log/nginx/ /var/log/mysql/ /var/log/php*/

# Bersihkan log lama manual
find /var/log/ -name "*.gz" -mtime +30 -delete

Update & Maintenance

Jadwal Update

  • Aplikasi (examtool update): Setiap ada notifikasi dari tim pusat
  • Script (examtool self-update): Examtool otomatis cek update setiap dijalankan — ikuti prompt jika ada versi baru
  • OS (apt update && apt upgrade): Bulanan, di luar jadwal ujian
  • SSL Certificate: Sebelum expired

Window Maintenance

  • Lakukan update di luar jam ujian
  • Idealnya hari Sabtu/Minggu atau malam hari
  • Informasikan ke pengguna jika ada downtime

Rollback

Jika update bermasalah:

# Aplikasi: rollback git
cd /var/www/ujian && git checkout <commit-sebelumnya>

# Database: restore backup
examtool restore-db --file=/root/backup_db/backup_terbaru.sql.gz

# Script: download versi lama
# Hubungi tim pengelola pusat

Jaringan Lab Ujian

Topologi Ideal

Ada dua topologi deployment: Direct ke Internet (server punya IP Public + SSL) dan Via HTTP Proxy (server di belakang reverse proxy, tanpa SSL). Lihat Topologi Jaringan untuk diagram lengkap.

Topologi jaringan lokal di lab:

Internet → Router → Switch Utama → Server Ujian
                         │
                    Switch Lab → PC 1..N

Lumbung Soal: Jika menggunakan Lumbung Soal Nasional, domain server ujian harus bisa diakses dari internet agar Lumbung bisa push soal via API. Lihat Akses Lumbung Soal.

Rekomendasi

  • Server dan PC lab di VLAN yang sama (atau routing cepat)
  • Bandwidth minimal 100 Mbps antara server dan switch lab
  • Gunakan kabel ethernet, bukan WiFi untuk PC ujian
  • Siapkan spare switch dan kabel

DNS Internal

examtool menginstall DNSMasq untuk resolve domain dari LAN. Pastikan PC lab menggunakan IP server sebagai DNS server, atau tambahkan entry di hosts file masing-masing PC.