Created by : Zaidan Harith
Berikut langkah-langkah untuk meng-install Domjudge dengan menggunakan Docker, NGINX, dan Ubuntu Server.
Selamat mencoba semuanya !
Bagi kalian yang sistem operasinya selain Linux (Ubuntu), kalian bisa men-download dan meng-install Virtual Machine terlebih dahulu agar bisa menjalankan Ubuntu Server di sistem operasi kalian. Untuk Virtual Machine yang akan digunakan adalah Oracle VirtualBox.
Untuk instalasi Ubuntu Server dan Oracle VirtualBox, kalian bisa mengikuti tutorial Youtube berikut :
Install Ubuntu Server 22.04 LTS in Virtual Box; Connect with SSH
Video oleh : babarehner
Setelah Ubuntu Server di-install di dalam Virtual Machine (VirtualBox), kita perlu meng-install NGINX di dalam Ubuntu Server agar dapat menjalankan Web Server. Langkah-langkah instalasi adalah sebagai berikut :
-
Pada Ubuntu Server, ketikkan perintah berikut agar Ubuntu Server lebih update.
sudo apt update
-
NGINX dapat di-install dengan mengetik :
sudo apt -y install nginx
-
NGINX sudah terpasang di Ubuntu Server. Untuk mengecek apakah NGINX sudah berjalan atau belum, ketikkan perintah berikut.
sudo systemctl status nginx
-
Apabila NGINX berhasil dijalankan, tampilan Ubuntu Server akan seperti berikut
-
Untuk menjalankan NGINX pada Web Browser, ketikkan alamat IP pada URl. Alamat IP Server dapat diketahui dengan mengetik
ip a
-
Tampilan Web Browser apabila NGINX berhasil berjalan seperti berikut :
Sebelum kita lanjut ke langkah selanjutnya, untuk mempermudah kalian dalam mengikuti beberapa langkah selanjutnya, kita akan menghubungkan Ubuntu Server ini dengan terminal yang ada di sistem operasi kita dengan menggunakan SSH. Kemudahan yang dimaksud di sini adalah Copy-Paste ataupun Drag and Drop kode dari luar terminal.
Langkah pertama yang perlu dilakukan adalah dengan meng-install OpenSSH Client dan Server di dalam Ubuntu Server dengan dua command berikut :
sudo apt install openssh-client
dan juga
sudo apt install openssh-server
Kemudian, pada terminal di sistem operasi kalian, ketikkan command berikut :
ssh [Username Ubuntu Server]@[Alamat IP]
Contoh : ssh zaidanharith@192.168.123.456>
.
Ketik Enter dan kalian akan diminta memasukkan password Ubuntu Server untuk username tersebut. Setelah memasukkan password, terminal kalian sudah berhasil terhubung ke Ubuntu Server. Sekarang, kalian sudah bisa menjalankan semua command yang ada di Ubuntu Server di dalam terminal kalian. Oleh karena itu, untuk mengikuti beberapa langkah ke depannya, kalian disarankan untuk mengggunakan Ubuntu Server di terminal sistem operasi kalian.
Langkah instalasi Docker di dalam Ubuntu Server :
Sumber : Installing Ubuntu Server With Docker
Video oleh : Steve's Tech Stuff
-
Update Server terlebih dahulu.
sudo apt-get update
-
Install library pendukung.
sudo apt install apt-transport-https ca-certificates curl software-properties-common
-
Tambahkan kunci GPG untuk Repository Docker.
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
-
Tambahkan Repository Docker.
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
-
Update kembali Ubuntu Server-nya.
sudo apt-get update
-
Cek Repository Docker.
apt-cache policy docker-ce
-
Lakukan instalasi Docker.
sudo apt install docker-ce
-
Lakukan reboot pada Ubuntu Server agar Docker dapat berjalan.
sudo reboot
-
Docker telah di-install di Ubuntu Server. Untuk mengecek apakah Docker sudah berjalan, gunakan command
sudo systemctl status docker
Untuk meng-install Domserver menggunakan Docker dan NGINX, ikuti langkah berikut :
-
Buka file
nginx.conf
pada direktori/etc/nginx
dengan menggunakan commandcd /etc/nginx/
dan dilanjutkan dengan command
sudo nano nginx.conf
untuk membuka dan mengubah file
nginx.conf
. Scroll ke bawah dan pastikan ada baris yang tertulisinclude /etc/nginx/conf.d/*.conf
. Jika tidak ada, tambahkan baris tersebut pada filenginx.conf
tersebut. -
Pada direktori yang sama, yaitu
/etc/nginx
, masuk ke folderconf.d
dengan menggunakan commandcd conf.d
sehingga, direktori saat ini jika ditelusuri dari root adalah
/etc/nginx/conf.d
. -
Pada folder
conf.d
tersebut, buat file dengan namadomjudge.conf
dengan menggunakan commandsudo nano domjudge.conf
-
Di dalam file
domjudge.conf
, isikan dengan kode berikut :(Copy-Paste atau Drag and Drop kodenya saja)
server { listen 80; listen [::]:80; server_name [Alamat IP] [Nama Domain]; location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://localhost:12345/; } }
Contoh :
server { listen 80; listen [::]:80; server_name 192.168.123.456 mywebsite.id; location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://localhost:12345/; } }
-
Kemudian, simpan file tersebut dengan shorthand
ctrl+s
dan keluar dari file tersebut dengan shorthandctrl+x
. -
Reload NGINX dengan menggunakan command
sudo nginx -s reload
dan kembali ke folder root dengan command
cd
-
Masuk ke folder dengan direktori
/etc/default/
dengan commandcd /etc/default/
dan buka file
grub
yang di folder tersebut dengan menggunakan commandsudo nano grub
-
Di dalam file tersebut, terdapat baris yang bertuliskan
GRUB_CMDLINE_LINUX_DEFAULT=""
. Tambahkan kode berikut di antara dua tanda petik (""
) :cgroup_enable=memory swapaccount=1 systemd.unified_cgroup_hierarchy=0
sehingga, satu baris tersebut akan menjadi
GRUB_CMDLINE_LINUX_DEFAULT="cgroup_enable=memory swapaccount=1 systemd.unified_cgroup_hierarchy=0"
. -
Simpan dan keluar dari file tersebut dengan shorthand
ctrl+s
danctrl+x
. -
Reboot Ubuntu Server dengan menggunakan command
sudo reboot
-
Setelah di-reboot, Ubuntu Server akan dimulai ulang, sehingga jika kalian menggunakan terminal di sistem operasi, maka sambungan SSH dengan Ubuntu Server akan terputus. Jika proses reboot sudah selesai, kalian bisa kembali menyambungkan Ubuntu Server ke terminal kalian dengan menggunakan command
ssh [Username Ubuntu Server]@[Alamat IP]
di terminal kalian (persis sama dengan yang sudah kita lakukan sebelumnya saat meng-install SSH).
-
Buat file dengan nama
docker-compose.yml
dengan commandsudo nano docker-compose.yml
File tersebut boleh berada di folder root ataupun yang lain. Namun, disarankan untuk membuat folder baru saja karena apabila kalian ingin membuat program lain dengan Docker, tidak perlu mengganti file
docker-compose.yml
tersebut. Untuk membuat folder baru, kalian bisa menggunakan commandmkdir [Nama File]
dan untuk masuk ke folder tersebut bisa menggunakan command
cd [Nama File]
-
Isikan file
docker-compose.yml
dengan kode berikut :(Copy-Paste atau Drag and Drop kodenya saja)
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 command: --max-connections=1000 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-0: container_name: judgehost-0 image: domjudge/judgehost:latest privileged: true hostname: judgedaemon-0 volumes: - /sys/fs/cgroup:/sys/fs/cgroup:ro networks: - domjudge depends_on: - domserver environment: - DAEMON_ID=0 - JUDGEDAEMON_PASSWORD=mVg2GIgM0tsujQwYuJlqu4NZ2K76hr7r judgehost-1: container_name: judgehost-1 image: domjudge/judgehost:latest privileged: true hostname: judgedaemon-1 volumes: - /sys/fs/cgroup:/sys/fs/cgroup:ro networks: - domjudge depends_on: - domserver environment: - DAEMON_ID=1 - JUDGEDAEMON_PASSWORD=mVg2GIgM0tsujQwYuJlqu4NZ2K76hr7r judgehost-2: container_name: judgehost-2 image: domjudge/judgehost:latest privileged: true hostname: judgedaemon-2 volumes: - /sys/fs/cgroup:/sys/fs/cgroup:ro networks: - domjudge depends_on: - domserver environment: - DAEMON_ID=2 - JUDGEDAEMON_PASSWORD=mVg2GIgM0tsujQwYuJlqu4NZ2K76hr7r judgehost-3: container_name: judgehost-3 image: domjudge/judgehost:latest privileged: true hostname: judgedaemon-3 volumes: - /sys/fs/cgroup:/sys/fs/cgroup:ro networks: - domjudge depends_on: - domserver environment: - DAEMON_ID=3 - JUDGEDAEMON_PASSWORD=mVg2GIgM0tsujQwYuJlqu4NZ2K76hr7r
-
Di folder yang sama dengan file
docker-compose.yml
tersebut, aktifkan MariaDB dan Domserver dengan menggunakan commanddocker-compose up -d mariadb domserver
-
Pada file
docker-compose.yml
, di setiap bagianjudgehost
(di file tersebut, jumlahnya ada 4), ada bagian yang bertuliskanJUDGEDAEMON_PASSWORD=mVg2GIgM0tsujQwYuJlqu4NZ2K76hr7r
. GantimVg2GIgM0tsujQwYuJlqu4NZ2K76hr7r
dengan Password Judgedaemon kalian. Password dapat dilihat dengan menggunakan commanddocker exec -it domserver cat /opt/domjudge/domserver/etc/restapi.secret
Sebagai contoh,
JUDGEDAEMON_PASSWORD=ai3nuJlqu4NZX7pU8HNTyvG
.! Ingat lagi bagaimana cara membuka file di Ubuntu Server
-
Setelah Password Judgedaemon diganti, jalankan Judgehost dengan menggunakan command
docker-compose up -d
-
Untuk menjalankan Domjudge, kalian bisa masuk menggunakan alamat IP kalian di dalam Web Browser kalian.
-
Selamat! Kalian sudah berhasil membuat Domjudge dengan menggunakan Docker, NGINX dan Ubuntu Server.