DomJudge is an automated judge system for programming contests. It supports multiple programming languages, runs on different operating systems, and allows participants to submit their solutions and receive feedback from the system.
In this tutorial, we will install DOMJudge on Fedora CoreOS, which is a lightweight, container-focused operating system designed for running containerized workloads on top of Kubernetes.
Before you start installing DOMJudge, make sure that you have the following prerequisites:
The first step is to install the dependencies required by DOMJudge. To do this, run the following command:
sudo dnf install -y git make gcc cmake mariadb-server mariadb-devel php php-json php-mysqlnd php-pdo php-mbstring php-xmlrpc php-xml
This command will install Git, GNU Make, GCC, MariaDB, PHP, and its related extensions required by DOMJudge.
Next, we need to clone the DOMJudge repository from GitHub. To do this, run the following command:
git clone https://github.com/DOMjudge/domjudge.git
This command will clone the DOMJudge repository to the current working directory.
After cloning the repository, navigate to the DOMJudge directory and run the following commands:
cd domjudge
./configure --with-baseurl=https://localhost/domjudge --with-domjudge-user=domjudge --with-logdir=/var/log/domjudge --with-chrootdir=/var/lib/domjudge/chroot
make domserver install-domserver
This will configure the application with the specified parameters and build and install the DOMServer component.
After installing the DOMServer, we need to configure the database. First, start the MariaDB service by running the following command:
sudo systemctl start mariadb
Then, run the following command to secure the MariaDB installation:
sudo mysql_secure_installation
Follow the prompts to set a password for the root user and secure the installation.
Next, create a new database for DOMJudge by running the following command:
sudo mysql -u root -p -e "CREATE DATABASE domjudge CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"
This will create a database named "domjudge" with UTF8MB4 character set and collation.
Next, create a new user with the necessary privileges by running the following command:
sudo mysql -u root -p -e "CREATE USER 'domjudge'@'localhost' IDENTIFIED BY 'password';"
Replace 'password' with a strong and secure password.
Lastly, grant the necessary privileges to the user by running the following command:
sudo mysql -u root -p -e "GRANT ALL PRIVILEGES ON domjudge.* TO 'domjudge'@'localhost';"
This will grant all privileges to the user on the created database.
After configuring the database, we need to configure DOMJudge to use it. Navigate to the DOMJudge directory and run the following command:
sudo make install-domjudge-config
This will copy the example configuration file to the correct location and prompt you to provide the credentials for the database.
Follow the prompts to provide the credentials and configuration options for DOMJudge.
After configuring DOMJudge, we can start the DOMJudge services by running the following commands:
sudo systemctl start httpd domserver judgehost
sudo systemctl enable httpd domserver judgehost
This will start the Apache web server, the DOMServer component, and the JudgeHost component and enable them to start at boot time.
In this tutorial, we have demonstrated how to install DOMJudge on Fedora CoreOS Latest. You can now access the DOMJudge web interface by navigating to https://localhost/domjudge in your web browser. From here, you can create accounts, problems, and testcases, and manage programming contests. Happy coding and judging!
If you want to self-host in an easy, hands free way, need an external IP address, or simply want your data in your own hands, give IPv6.rs a try!
Alternatively, for the best virtual desktop, try Shells!