123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323 |
- #!/bin/bash
- ScriptLoc=$(readlink -f "$0")
- recover_backup=YES
- backup_file="/Cloud/Backup/Minecraft/Minecraft_ubuntu.tar.xz"
- function print_centered {
- [[ $# == 0 ]] && return 1
- declare -i TERM_COLS="$(tput cols)"
- declare -i str_len="${#1}"
- [[ $str_len -ge $TERM_COLS ]] && {
- echo "$1";
- return 0;
- }
- declare -i filler_len="$(( (TERM_COLS - str_len) / 2 ))"
- [[ $# -ge 2 ]] && ch="${2:0:1}" || ch=" "
- filler=""
- for (( i = 0; i < filler_len; i++ )); do
- filler="${filler}${ch}"
- done
- printf "%s%s%s" "$filler" "$1" "$filler"
- [[ $(( (TERM_COLS - str_len) % 2 )) -ne 0 ]] && printf "%s" "${ch}"
- printf "\n"
- return 0
- }
- function backup_tool {
- echo -e "\n$(tput setaf 10)Backup tool:$(tput setaf 7)"
- if [ -f /tmp/mcbackup.sh ];then rm /tmp/mcbackup.sh;fi
- cat <<'EOF'>> /tmp/mcbackup.sh
- #!/bin/bash
- ####################################
- #
- # Backup minecraft world to a
- # specified folder.
- #
- ####################################
- set -e
- #sudo systemctl stop watchdog >/dev/null
- version=3.0
- #day_raw=$(date +%A_%d_%m_%y)
- #archive_file="minecraft_ubuntu_$day_raw"
- archive_file="Minecraft_ubuntu"
- output_folder="/Cloud/Backup/Minecraft"
- echo -e "\e[95mMinecraft auto-backup version $version\e[0m\n"
- function backup_ {
- echo "Backup/Compress Files:"
- cd ~
- if [ -d temp_arc ]
- then
- rm -r -f temp_arc
- fi
- mkdir temp_arc
- cd temp_arc
- cp -r -f ~/Minecraft/world* .
- cp -r -f ~/Minecraft/ops.json .
- cp -r -f ~/Minecraft/permissions.yml .
- cp -r -f ~/Minecraft/server.properties .
- cp -r -f ~/Minecraft/usercache.json .
- cp -r -f ~/Minecraft/whitelist.json .
- tar cf - * --checkpoint=.100 | pixz > $archive_file.tar.xz
- echo ""
- md5sum $archive_file.tar.xz > $archive_file.md5
- cp $archive_file.tar.xz $output_folder
- cp $archive_file.md5 $output_folder
- }
- function Upload_freebox {
- echo -e "\n\e[97mUpload on Freebox:\e[0m"
- echo "- Mounting Nas -"
- sudo mount -t cifs //192.168.1.254/Disque\ dur/ /media/Nas/ -o user=freebox,password=password,uid=1000,gid=1000,rw,vers=1.0
- sleep 1
- sudo cp -v $archive_file.tar.xz /media/Nas/mc_backup
- sudo cp -v $archive_file.md5 /media/Nas/mc_backup
- sleep 1
- sudo umount /media/Nas
- echo "- Unmounting Nas -"
- echo ""
- }
- function Upload_ftp {
- echo -e "\e[97mUpload on FTP:\e[0m"
- ncftpput -v -u "wareck" -p "zorn692611" ftpperso.free.fr minecraft_bkp/ $archive_file.tar.xz
- sleep 1
- ncftpput -v -u "wareck" -p "zorn692611" ftpperso.free.fr minecraft_bkp/ $archive_file.md5
- sleep 1
- }
- backup_
- Upload_freebox
- Upload_ftp
- EOF
- sudo chmod +x /tmp/mcbackup.sh
- sudo cp /tmp/mcbackup.sh /usr/local/bin/
- echo "Done"
- }
- function recovery {
- if [ $recover_backup = "YES" ]
- then
- echo -e "\n$(tput setaf 10)Restore Backup:$(tput sgr0)"
- if [ -r /home/wareck/temp_arc ]
- then
- rm -r /home/wareck/temp_arc
- fi
- mkdir /home/wareck/temp_arc
- cd /home/wareck/temp_arc
- cp $backup_file .
- pixz -x < $backup_file | tar xf - --checkpoint=.300
- echo ""
- rm Mine*.tar.xz
- cp -r /home/wareck/temp_arc/* /home/wareck/Minecraft/
- sudo rm -r /home/wareck/temp_arc
- fi
- echo -e
- }
- export TERM=xterm-256color
- if [ ! -f /home/wareck/.mcr ]
- then
- print_centered "$(tput setaf 10)"
- print_centered " ⠀⠀⡰⠉⠉⣷⡄⣀⣎⠉⢹⡎⠉⢉⡞⠉⠉⣧⡎⠉⠉⡞⠉⠉⠉⠉⠉⣿⠉⠉⠉⠉⠉⢹⡏⠋⠉⠉⠉⠙⡏⠉⣉⠉⣉⠉⢿⠉⠉⠉⢉⠉⢱⡏⠉⠉⠉⢉⠉⡄"
- print_centered "⠀⢀⠃⠀⠀⠘⠛⠁⠀⠀⣼⠀⠀⣸⠃⠀⠀⠘⠃⠀⢰⡇⠀⠀⠛⠛⠛⣿⠀⠀⢸⣿⣿⣿⡇⠀⠈⠃⠀⣠⣿⠀⠉⣶⣍⠀⢸⡆⠀⠘⠛⠛⠛⣿⣿⡆⠀⠈⡟⠁"
- print_centered "⠀⡜⣀⢀⣶⣀⣰⠆⠀⢀⡏⠀⠀⣿⠀⠀⣸⣄⠤⠄⢸⠃⠀⢰⣶⣶⣶⣿⠀⠀⢸⣉⣉⣉⡇⡀⠀⣶⠀⠀⢹⠀⠀⢀⡀⢀⠀⣇⠀⠀⢶⣶⣶⢾⣿⣿⡀⠀⢱⠀"
- print_centered "⢰⠀⠀⢸⣿⣦⠈⠀⠀⢼⠁⠀⢰⡇⠀⠀⣿⣿⠀⠀⢼⠀⡄⠀⠀⠀⠀⣿⠀⠀⠀⠀⠀⢸⡇⠂⠀⣿⠀⠀⢸⡆⠀⢘⡧⠀⠀⣿⠀⠀⢸⠛⠃⠘⣿⣿⡇⠀⠀⡆"
- print_centered "⠀⠑⢤⣀⣙⡿⠉⠱⣄⣠⣷⣄⣀⣹⣄⣀⣘⡏⢆⣀⣘⣧⣀⣀⣀⣀⣀⣿⣀⣀⣀⣀⣀⣸⣇⣀⣰⣏⣀⣠⣿⣀⣀⣾⣁⣀⣴⣋⣀⡠⠃⠀⠀⠀⢿⣋⣀⡤⠋⠀"
- print_centered "$(tput sgr0)"
- print_centered "Minecraft Ubuntu Server Builder/install v3.0.0"
- print_centered "$(tput sgr0)"
- touch /home/wareck/.mcr
- sleep 2
- fi
- echo -e "$(tput setaf 10)Installation java:$(tput setaf 7)"
- if ! [ -x "$(command -v java)" ]
- then
- sudo apt-get update
- sudo apt-get install curl wget git ncftp -y
- if ! [ -f openjdk-18_linux-x64_bin.tar.gz ]
- then
- echo -e
- curl -O https://download.java.net/java/GA/jdk18/43f95e8614114aeaa8e8a5fcf20a682d/36/GPL/openjdk-18_linux-x64_bin.tar.gz
- fi
- cat <<'EOF'>> openjdk-18_linux-x64_bin.tar.gz.md5
- f3fc42bd35c3f5e9aff967c9862a153a openjdk-18_linux-x64_bin.tar.gz
- EOF
- if md5sum -c openjdk-18_linux-x64_bin.tar.gz.md5
- then
- tar xf openjdk-18_linux-x64_bin.tar.gz --checkpoint=.300
- echo -e
- rm openjdk-18_linux-x64_bin.tar.gz
- rm openjdk-18_linux-x64_bin.tar.gz.md5
- else
- echo "erreur"
- fi
- if [ -d /opt/jdk-18 ]
- then
- sudo rm -r /opt/jdk-18/
- fi
- sudo mv jdk-18 /opt/
- if [ -f /etc/profile.d/jdk18.sh ]
- then
- sudo rm /etc/profile.d/jdk18.sh
- fi
- sudo tee /etc/profile.d/jdk18.sh <<EOF
- export JAVA_HOME=/opt/jdk-18
- export PATH=\$PATH:\$JAVA_HOME/bin
- EOF
- source /etc/profile.d/jdk18.sh
- fi
- version=$(java -version 2>&1 | head -1 | cut -d'"' -f2 | sed '/^1\./s///' | cut -d'.' -f1)
- if [ $version -ge 18 ]
- then
- echo -e "$(tput setaf 6)Java version $version =>> OK$(tput sgr0)"
- else
- echo "erreur ! désinstaller java d'abord !"
- sudo apt-get remove openjdk-8-jre-headless -y
- sudo apt-get remove openjdk-11-jre-headless -y
- exec "$ScriptLoc"
- fi
- echo -e "\n$(tput setaf 10)Download/install mcrcon:$(tput sgr0)"
- cd /home/wareck/
- git clone https://github.com/Tiiffi/mcrcon.git
- cd /home/wareck/mcrcon
- make
- sudo make install
- cd ..
- rm -r -f /home/wareck/mcrcon
- echo -e "$(tput setaf 10)Download Minecraft server structure:$(tput sgr0)"
- cd /home/wareck/
- wget -c http://folivier.homelinux.org/cube/pack/minecraft.tar.xz
- tar xfJ minecraft.tar.xz
- rm minecraft.tar.xz
- cp -r minecraft Minecraft
- rm -r -f minecraft
- cd Minecraft
- rsync --append --progress --recursive * /home/wareck/Minecraft/
- echo -e "\n$(tput setaf 10)Download BuildTools:$(tput sgr0)"
- if ! [ -d build ]; then mkdir build ;fi
- cd build
- wget -c https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar
- echo -e "\n$(tput setaf 10)Building Spigot:$(tput sgr0)"
- java -jar BuildTools.jar
- cp spigot* /home/wareck/Minecraft/
- echo -e "\n$(tput setaf 10)minecraft.service file build/install:$(tput sgr0)"
- if [ -f minecraft.service ];then rm minecraft.service;fi
- version=`ls -a /home/wareck/Minecraft/spigot*.jar | sed "s/\/home\/wareck\/Minecraft\///g"`
- short_v=`echo $version | sed "s/spigot-//g" | sed "s/.jar//g"`
- echo "Version builed : $version"
- cat <<'EOF'>> minecraft.service
- #!/bin/sh -e
- ### BEGIN INIT INFO
- # Provides: minecraft
- # Required-Start: networking
- # Default-Start: 3 4 5
- # Default-Stop: 0 6
- ### END INIT INFO
- cd /home/wareck/Minecraft/
- su wareck -c "screen -dmS minecraft /opt/jdk-18/bin/java -jar -Xmx2048M -Xms2048M XXXX nogui"
- exit 0
- EOF
- sed -i "s/XXXX/$version/g" minecraft.service
- sed -i "s/XXXX/$version/g" /home/wareck/Minecraft/start.sh
- sed -i "s/XXXX/$short_v/g" /home/wareck/Minecraft/server.properties
- more minecraft.service
- chmod +x minecraft.service
- sudo cp minecraft.service /etc/init.d/
- sudo sudo update-rc.d minecraft.service defaults
- backup_tool
- recovery
- function server_config {
- echo -e "\nDone"
- if [ -f /tmp/sp ]; then rm /tmp/sp ;fi
- cat <<'EOF'>> /tmp/sp
- #Minecraft server properties
- #Sat Dec 30 04:15:00 CET 2023
- allow-flight=true
- allow-nether=true
- broadcast-console-to-ops=true
- broadcast-rcon-to-ops=true
- debug=false
- difficulty=easy
- enable-command-block=true
- enable-jmx-monitoring=false
- enable-query=false
- enable-rcon=true
- enable-status=true
- enforce-secure-profile=true
- enforce-whitelist=false
- entity-broadcast-range-percentage=100
- force-gamemode=true
- function-permission-level=2
- gamemode=creative
- generate-structures=true
- generator-settings={}
- grow-trees=true
- hardcore=false
- hide-online-players=false
- initial-disabled-packs=
- initial-enabled-packs=vanilla
- level-name=world
- level-seed=
- level-type=default
- log-ips=true
- max-build-height=256
- max-chained-neighbor-updates=1000000
- max-players=20
- max-tick-time=120000
- max-world-size=29999984
- motd=§e§l§m--§6§8§l[§r §A§lTristan's Field §8§l]§e§l§m--§8§l[ §6serveur vZZZZZZZ \!§8§l ]§e§l§m--
- network-compression-threshold=512
- online-mode=true
- op-permission-level=1
- player-idle-timeout=0
- prevent-proxy-connections=false
- previews-chat=false
- pvp=true
- query.port=25565
- rate-limit=0
- rcon.password=Paypoo
- rcon.port=25575
- require-resource-pack=false
- resource-pack=
- resource-pack-prompt=
- resource-pack-sha1=
- server-ip=
- server-port=25565
- simulation-distance=10
- snooper-enabled=false
- spawn-animals=true
- spawn-monsters=true
- spawn-npcs=true
- spawn-protection=0
- sync-chunk-writes=true
- text-filtering-config=
- use-native-transport=true
- view-distance=10
- white-list=false
- EOF
- sed -i "s/ZZZZZZZ/$short_v/g" /tmp/sp
- cp /tmp/sp /home/wareck/Minecraft/server.properties
- }
- server_config
- if [ -f /home/wareck/.mcr ] ; then rm /home/wareck/.mcr;fi
- echo "Done"
|