Cara Install DOMjudge di Ubuntu 24.04 Desktop dengan Docker

DOMjudge adalah sistem automated programming contest judge, biasa digunakan untuk lomba algoritma / competitive programming seperti ICPC. Dengan DOMjudge, kita bisa:

  • Membuat kontes
  • Upload problem set (ZIP)
  • Mengatur scoreboard & tim
  • Menguji submission otomatis

Di tutorial ini, kita akan menginstal DOMjudge menggunakan Docker & Docker Compose pada Ubuntu Desktop. Metode ini mudah, portable, dan minim konflik dependensi.

 

1. Install Docker & Docker Compose

Pastikan sistem kita up to date, lalu install Docker dan plugin Docker Compose. Kita buka terminal dan jalankan sintak untuk update Ubuntu-nya dulu :

sudo apt update

Kemudian jalankan perintah :

sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release

Perintah ini digunakan untuk menginstal beberapa paket pendukung penting di Ubuntu, biasanya sebelum menambahkan repository pihak ketiga (seperti Docker, Node.js, dan lain-lain). Berikut arti masing-masing:

PaketFungsi
apt-transport-httpsAgar apt bisa mengunduh paket dari repository HTTPS, bukan hanya HTTP. Ini lebih aman.
ca-certificatesInstal sertifikat SSL root. Diperlukan agar Ubuntu bisa memverifikasi keamanan koneksi HTTPS (misalnya saat mengunduh paket atau meng-clone repo git).
curlTool baris perintah untuk download data dari internet (HTTP, HTTPS, FTP). Sering dipakai untuk ambil GPG key.
software-properties-commonMenyediakan utilitas add-apt-repository untuk menambah repository baru ke apt.
gnupgInstal GPG (GNU Privacy Guard) untuk memverifikasi tanda tangan digital pada repository (misalnya GPG key Docker).
lsb-releaseMenyediakan perintah lsb_release -cs untuk mengetahui codename Ubuntu (misalnya bionic, focal, noble). Biasanya digunakan saat membuat list repository.

Tambahkan GPG key Docker

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

 

Baca Juga  Tutorial Python #3 : Keyword dan Identifier Pada Python

Tambahkan repository Docker

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

 

 

Install Docker & Compose

Update lagi ubuntunya :

sudo apt update

Kemudian :

sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

 

2. Siapkan direktori proyek DOMjudge

Buat direktori/folder domjudge :

mkdir ~/domjudge

Kemudian masuk ke direktori domjudge :

cd ~/domjudge

 

3. Buat file docker-compose.yml

Buat file konfigurasi Docker Compose:

nano docker-compose.yml

Lalu isi dengan konfigurasi berikut :

version: '3.9'

networks:
  domjudge:
    name: domjudge

services:
  mariadb:
    container_name: mariadb
    image: mariadb:latest
    networks:
      - domjudge
    ports:
      - "13306:3306"
    environment:
      - MYSQL_ROOT_PASSWORD=rootpw
      - MYSQL_USER=domjudge
      - MYSQL_PASSWORD=djpw
      - MYSQL_DATABASE=domjudge

  domserver:
    container_name: domserver
    image: domjudge/domserver:latest
    volumes:
      - /sys/fs/cgroup:/sys/fs/cgroup:ro
    networks:
      - domjudge
    ports:
      - "12345:80"
    depends_on:
      - mariadb
    environment:
      - CONTAINER_TIMEZONE=Asia/Jakarta
      - MYSQL_HOST=mariadb
      - MYSQL_ROOT_PASSWORD=rootpw
      - MYSQL_USER=domjudge
      - MYSQL_PASSWORD=djpw
      - MYSQL_DATABASE=domjudge

  judgehost:
    container_name: judgehost
    image: domjudge/judgehost:latest
    privileged: true
    hostname: judgedaemon
    volumes:
      - /sys/fs/cgroup:/sys/fs/cgroup:ro
    networks:
      - domjudge
    depends_on:
      - domserver
    environment:
      - DAEMON_ID=0
      - JUDGEDAEMON_PASSWORD=xxx

4. Jalankan database & domserver

sudo docker compose up -d mariadb domserver

5. Ambil password untuk Judgehost

Jalankan perintah ini untuk mendapatkan password daemon:

sudo docker exec -it domserver cat /opt/domjudge/domserver/etc/restapi.secret

Salin password pada baris judgehost, lalu edit docker-compose.yml dan ganti:

- JUDGEDAEMON_PASSWORD=xxx

dengan password yang tadi didapatkan.

 

6. Jalankan semua layanan

sudo docker compose up -d

7. Akses DOMjudge

Buka browser dan akses alamat :

http://localhost:12345

Login Admin

untuk mendapatkan password domserver gunakan perintah :

sudo docker exec -it domserver cat /opt/domjudge/domserver/etc/initial_admin_password.secret

 

Gunakan:

  • Username: admin
  • Password: sesuai hasil command di atas.

 

Sekarang DOMjudge sudah berjalan penuh. Kita bisa:

  • Membuat kontes
  • Upload problem set (ZIP)
  • Mengatur scoreboard & tim
  • Melakukan simulasi perlombaan

 

Tips manajemen Docker

Cek container berjalan:

sudo docker ps

Hentikan semua:

sudo docker compose down

Nyalakan kembali:

sudo docker compose up -d

 

Baca Juga  Tutorial Java #6 : Jenis-jenis Operator dalam Bahasa Java

Cara Penggunaan DOMjudge

1. Login Admin

  1. Buka browser, akses alamat DOMjudge:
    http://localhost:12345
    

    atau jika via jaringan:

    http://[IP_SERVER]:12345
    
  2. Login dengan:
    Username: admin
    Password: (lihat dari `initial_admin_password.secret` atau yang sudah kita set)
    

    Contoh jika via docker:

    sudo docker exec -it domserver cat /opt/domjudge/domserver/etc/initial_admin_password.secret
    

 

2. Membuat Kontes

  1. Klik menu “Contests”“Add contest”.
  2. Isi form:
    • Shortname: misalnya kontes1
    • Name: Kontes Pemrograman SMK
    • Start time: waktu mulai (format YYYY-MM-DD HH:MM:SS)
    • End time: waktu selesai
  3. Klik Submit.

3. Menambahkan Soal

  • Klik menu “Problems”“Add problem”.
  • Isi:
    • Name: Penjumlahan Bilangan
    • Short name: A
    • Color: pilih warna (untuk scoreboard)
  • Upload file soal (zip) yang isinya:
    problem.pdf # deskripsi soal 
    
    secret/ 
        sample.in 
        sample.out 
        input1.in 
        output1.out 
        ...

    Struktur folder ZIP untuk soal DOMjudge

    soal-penjumlahan.zip
    ├── problem.pdf
    └── secret/
        ├── sample.in
        ├── sample.out
        ├── input1.in
        ├── output1.out
        ├── input2.in
        └── output2.out
    

    DOMjudge mengharapkan:

    • problem.pdf berisi deskripsi soal untuk peserta.
    • secret/ berisi file test case input dan output, yang akan digunakan DOMjudge untuk menguji submission peserta.
    Contoh isi masing-masing file
    
      • problem.pdf : File PDF ini berisi penjelasan soal yang dibaca peserta.

    Contohnya:

    Judul: Penjumlahan Dua Bilangan
    
    Deskripsi:
    Buatlah program untuk membaca dua bilangan bulat A dan B, 
    kemudian mencetak hasil penjumlahannya.
    
    Input:
    Satu baris berisi dua bilangan bulat A dan B (1 <= A,B <= 100).
    
    Output:
    Cetak satu baris berisi hasil penjumlahan A + B.
    
    Contoh Input:
    5 7
    
    Contoh Output:
    12
    

    (Disimpan dalam file problem.pdf.)

    secret/ — test cases

    DOMjudge akan memakai file di sini untuk menilai solusi peserta.

    Nama file input harus berakhiran .in, output harus .out

    Contoh file sample.in

    5 7
    

    Contoh file sample.out

    12
    

    Ini biasanya digunakan untuk sample case, ditampilkan di halaman soal (kalau pengaturan aktif).

    Contoh file input1.in

    10 20
    

    Contoh file output1.out

    30
    

    Contoh file input2.in

    100 1
    

    Contoh file output2.out

    101
    

    Cara membuat ZIP

    Dari dalam folder yang berisi:

    problem.pdf
    secret/
    

    jalankan:

    zip -r soal-penjumlahan.zip problem.pdf secret/

    problem.pdf berisi deskripsi soal untuk peserta.

  • Klik Submit.

Tips:
Pastikan struktur ZIP benar, DOMjudge butuh folder secret berisi input/output.

 

4️. Menambahkan User (Team / Peserta)

  1. Klik TeamsAdd team.
  2. Isi:
    • Team name: Tim Alpha
    • Short name: alpha
    • Username: alpha
    • Password: 123456
  3. Pilih contest yang diikuti (misalnya kontes1).
  4. Klik Submit.

 

5️. Login Sebagai Peserta

  1. Peserta buka browser ke:
    http://[IP_SERVER]:12345
    
  2. Login pakai:
    Username: alpha
    Password: 123456
    
  3. Setelah login, peserta akan melihat daftar soal dan bisa:
    • Mengunduh deskripsi soal
    • Submit source code (C, C++, Python, dsb)
    • Melihat status compile / runtime / hasil testcase.

 

6️. Memantau Lomba

  1. Admin bisa buka Scoreboard realtime.
  2. Klik menu Submissions untuk melihat detail status (Compile error, Wrong Answer, Accepted).
  3. Klik Rejudge jika ingin mengulang penilaian.

 

7️. Tips untuk Juri

Beberapa fitur penting:

  • Clarifications: untuk menjawab pertanyaan dari tim.
  • Rejudge: mengulang penilaian jika testcase diubah.
  • Freeze scoreboard: biasanya dilakukan 1 jam sebelum akhir, agar peserta tidak tahu perkembangan poin tim lain.

Perintah singkat CLI

Kalau mau rejudge semua submission via CLI (opsional):

sudo docker exec -it domserver /opt/domjudge/domserver/bin/dj_admin rejudge 1

 

Demikian tutorial cara install DOMjudge di iubtu 24.04 dengan Docker dan cara penggunaannya, semoga bermanfaat.

Related Post

Be the first to comment

Leave a Reply

Your email address will not be published.


*


error: Ga bisa dicopy