Site icon agussuratna.net

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:

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:

Paket Fungsi
apt-transport-https Agar apt bisa mengunduh paket dari repository HTTPS, bukan hanya HTTP. Ini lebih aman.
ca-certificates Instal sertifikat SSL root. Diperlukan agar Ubuntu bisa memverifikasi keamanan koneksi HTTPS (misalnya saat mengunduh paket atau meng-clone repo git).
curl Tool baris perintah untuk download data dari internet (HTTP, HTTPS, FTP). Sering dipakai untuk ambil GPG key.
software-properties-common Menyediakan utilitas add-apt-repository untuk menambah repository baru ke apt.
gnupg Instal GPG (GNU Privacy Guard) untuk memverifikasi tanda tangan digital pada repository (misalnya GPG key Docker).
lsb-release Menyediakan 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

 

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:

 

Sekarang DOMjudge sudah berjalan penuh. Kita bisa:

 

Tips manajemen Docker

Cek container berjalan:

sudo docker ps

Hentikan semua:

sudo docker compose down

Nyalakan kembali:

sudo docker compose up -d

 

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

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:

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.

Exit mobile version