Main modules are available below:
- Backend(Django): https://github.com/dAiv-CNU/OnlineJudge
- Frontend(Vue): https://github.com/dAiv-CNU/OnlineJudgeFE
- Judger Sandbox(Seccomp): https://github.com/dAiv-CNU/Judger
- JudgeServer(A wrapper for Judger): https://github.com/dAiv-CNU/JudgeServer
- System: Raspberry Pi OS Bookworm
-
Install the necessary dependencies
sudo apt update -y sudo apt install docker-compose
-
Install Docker
Install using script:
sudo curl -sSL get.docker.com | shOther installation methods: https://docs.docker.com/install/
-
Please select a location with some surplus disk space and run the following command:
git clone -b 2.0 https://github.com/dAiv-CNU/OnlineJudgeDeploy.git JudgeDeploy sudo ln -rs deploy ./Desktop/JudgeDeploy cd JudgeDeploy -
Build custom docker images (if needed)
git clone https://github.com/dAiv-CNU/OnlineJudge.git backend sudo docker buildx build ./backend -t oj-image/backend --load
-
Start service containers
sudo docker compose up -d
-
Check status
sudo docker ps -a
According to the network speed, the setup can be completed automatically in about 5 to 30 minutes without manual intervention.
Wait for the command execution to complete, and then run docker ps -a. When you see that the status of all the containers does not have unhealthy or Exited (x) xxx, it means OnlineJudge has started successfully.
Access the server's HTTP 80 port or HTTPS 443 port through a browser, and you can start using it. The background management path is /admin, the super administrator user name automatically added during the installation process is root, and the password is rootroot. If you log in successfully, please change your account password immediately..
Don't forget to read the documentation: http://opensource.qduoj.com/
-
Download the Nginx installation package
- Please use nginx latest version: http://nginx.org/en/download.html
- & use headers-more-nginx-module compatible version
wget 'http://nginx.org/download/nginx-1.22.1.tar.gz' tar -xzvf nginx-1.22.1.tar.gz rm *.tar.gz cd nginx-1.22.1
wget 'https://github.com/openresty/headers-more-nginx-module/archive/refs/tags/v0.37.tar.gz' tar -xzvf v0.37.tar.gz -
Build and Install
sudo apt-get install -y libpcre3 libpcre3-dev zlib1g-dev openssl libssl-dev ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_v2_module --add-module=./headers-more-nginx-module-0.37 make sudo make install /usr/local/nginx/sbin/nginx -V sudo ln -s /etc/nginx/nginx.conf /usr/local/nginx/conf/nginx.conf sudo ln -s /usr/local/nginx/sbin/nginx /sbin/nginx
-
Clean up build files
cd .. rm -rf nginx-1.22.1
-
Install Certbot
sudo apt-get install letsencrypt -y
-
Shutdown Global/Docker System Nginx
sudo service nginx stop sudo docker compose down
-
Obtain SSL Certificate
sudo certbot certonly --standalone -d daiv.ddns.net sudo cat /etc/letsencrypt/live/daiv.ddns.net/fullchain.pem
-
Add SSL Settings to Nginx Config
sudo cp ./nginx/default /etc/nginx/sites-available/default
-
Restart Nginx
sudo nginx -t sudo service nginx restart sudo docker compose up -d
-
Add a scheduled task to renew the certificate
sudo chmod +x cert_renew.sh sudo crontab -e
- add the following line to the file
30 4 * * 0 /home/daiv/deploy/cert_renew.sh- restart cron service
sudo service cron start
-
Stop service containers
sudo docker compose down
-
Delete all docker containers and images
sudo docker stop $(sudo docker ps -a -q) sudo docker rm $(sudo docker ps -a -q) sudo docker rmi $(sudo docker images -q)