#!/bin/bash echo "Running Hydro Installer for centos 7" echo "CENTOS IS NOT RECOMMENDED TO USE." echo "PLEASE USE UBUNTU INSTEAD." echo "THIS SCRIPT MAY NOT WORK PROPERLY." echo "Will continue installation in 10 secs, press Ctrl-C to exit" echo "非常不推荐使用CentOS!" echo "请切换到 ubuntu 操作系统!" echo "此脚本可能无法正常工作" echo "使用 Ctrl-C 退出该脚本。" sleep 10 db_password=$(cat /dev/urandom | head -n 10 | md5sum | head -c 20) MINIO_ACCESS_KEY=$(cat /dev/urandom | head -n 10 | md5sum | head -c 20) MINIO_SECRET_KEY=$(cat /dev/urandom | head -n 10 | md5sum | head -c 20) # Basic yum install wget mkdir -p /etc/yum.repos.d echo "[mongodb-org-4.4] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.4/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc" >/etc/yum.repos.d/mongodb-org-4.4.repo echo "yum install -y mongodb-org" yum install -y mongodb-org mkdir -p /var/lib/mongo mkdir -p /var/log/mongodb mkdir -p /data/db chown -R mongod:mongod /var/lib/mongo /var/log/mongodb /data/db echo user.max_user_namespaces=10000 >> /etc/sysctl.d/98-userns.conf sysctl -p # Install NodeJS echo "Installing NodeJS" curl -o- https://cdn.jsdelivr.net/gh/nvm-sh/nvm@v0.36.0/install.sh | sed 's/raw.githubusercontent.com\/nvm-sh\/nvm\//cdn.jsdelivr.net\/gh\/nvm-sh\/nvm@/g' | sed 's/github.com\/nvm-sh\/nvm.git/gitee.com\/imirror\/nvm/g' | bash export NVM_DIR=/root/.nvm [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" nvm install 14 nvm use 14 npm i yarn -g echo "Installing pm2" yarn global add pm2 # Install MongoDB echo "Installing MongoDB" echo "db.createUser({ user: 'hydro', pwd: '$db_password', roles: [ { role: 'readWrite', db: 'hydro' } ] })" >/tmp/createUser.js echo "pm2 start mongod" pm2 start mongod >/dev/null sleep 2 mongo 127.0.0.1:27017/hydro /tmp/createUser.js rm /tmp/createUser.js echo "pm2 stop mongod" pm2 stop mongod >/dev/null pm2 del mongod >/dev/null echo 'pm2 start "mongod --auth"' pm2 start "mongod --auth" # Install MinIO echo 'Installing MinIO' wget http://dl.minio.org.cn/server/minio/release/linux-amd64/minio chmod +x minio mkdir -p /data/file pm2 start "./minio server /data/file" --name minio # Install HydroOJ # TODO: install basic addons? echo "Installing Hydro" yarn global add hydrooj @hydrooj/ui-default @hydrooj/hydrojudge wget https://s3.undefined.moe/file/executor-amd64 -O /usr/bin/sandbox_ chmod +x /usr/bin/sandbox_ pm2 start "/usr/bin/sandbox_" mkdir ~/.hydro echo "{\"host\":\"127.0.0.1\",\"port\":\"27017\",\"name\":\"hydro\",\"username\":\"hydro\",\"password\":\"$db_password\"}" >~/.hydro/config.json echo '["@hydrooj/ui-default","@hydrooj/hydrojudge"]' >~/.hydro/addon.json pm2 start hydrooj # Done echo "Done" echo "Database username: hydro" echo "Database password: $db_password" echo "MINIO_ACCESS_KEY=$MINIO_ACCESS_KEY MINIO_SECRET_KEY=$MINIO_SECRET_KEY" >~/.hydro/env