本篇僅為JAVA版Minescaft server V1.19.2安裝做說明,真的遇到描述內容以外的卡關情形,還麻煩各位路過朋友再另做功課並且請分享解法!感恩!
本篇內容所滿足需求--
- 在AWS虛擬主機Ubuntu上架設Minecraft server V1.19.2
- 建立虛擬主機開機即啟動Minecraft server的服務
- 使用DDNS註冊固定的網域名稱(虛擬主機是浮動IP)
- 簡單的伺服器遊戲資料備份機制
- 自動關機
前置要求知識及Prerequisite--
- AWS虛擬平台評估:
- 在AWS選用的平台為m5.large(8G ram, and 較高的網路頻寬,但要算錢)
- 試過了下面兩種都不穩定: (V1.16也許可以, 但V1.19版吃超過2G ram會跑不太起來)
- t2.micro(1G ram)
- t3.small(2G ram)
- SSH連線基礎知識
- Ubuntu shell, shell script基本知識
- Linux基礎知識(user space, sudo等等)
- 大概知道crontab是什麼
流程步驟--
(1) 申請AWS EC2虛擬主機
(2) SSH連線至虛擬主機
一樣請參考reference(1), 總之Amazon SSH是使用pem key連線,在windows端你就開console輸入如下command即可(當然pem key請準備好'YourKey.pem', EC2虛擬機也先啟動好帳號'YourInstanceAccount', 並且查好它的IP:'YourAmazonEC2InstanceIP')
ssh -i YourKey.pem YourInstanceAccount@YourAmazonEC2InstanceIP
(3) Ubuntu系統設定與JRE套件安裝
個人壞習慣:P--
$ sudo apt-get update; sudo apt-get -y upgrade; sudo apt-get -y dist-upgrade; sudo apt-get autoremove; sudo apt-get autoclean; sudo apt-get clean
JDK17安裝,跟你要跑的minecraft server版本有很大的相依性--
$ sudo apt-get install -y openjdk-17-jdk openjdk-17-jre
因為會用到compiler, 編譯環境也稍微裝一下--
$ sudo apt-get install git build-essential
$ sudo apt-get install vim net-tools
(4) Minecraft Server相關設定
<0> 開一個執行service要用的帳號
$ sudo useradd -r -m -U -d /opt/minecraft -s /bin/bash minecraft
<1> 下載安裝minecraft server
先切換為剛才創的service帳號模式
$ sudo su - minecraft
創建相關資料夾(注意: 那個教學裡面把家目錄放在/opt下,反正我只是照做而已)
$ mkdir -p ~/{backups,tools,server}
(這裡創建三個資料夾用途: backup做自動備份用, tools等一下放工具程式, server放伺服器程式本體)
$ cd server
$ wget -O mcserver.jar https://piston-data.mojang.com/v1/objects/f69c284232d7c7580bd89a5a4931c3581eae1378/server.jar
$ cd ~/server$ java -Xmx2048M -Xms512M -jar server.jar nogui$ nano ~/server/eula.txt
####把文件中"eula=false"改為"eula=true"再存檔
$ nano ~/server/server.properties
####在最後幾行新增行數加上下面三個內容
rcon.port=25575
rcon.password=strong-password
enable-rcon=true####這三行是為了伺服器管理軟體登入用,其中'strong-password'請想一個管理終端登入時要打的密碼
<2> 安裝管理終端, mcrcon(注意這邊你應該還是在minecraft新創的帳號底下做事)
$ cd ~/tools && git clone https://github.com/Tiiffi/mcrcon.git
$ cd ~/tools/mcrcon
$ gcc -std=gnu11 -pedantic -Wall -Wextra -O2 -s -o mcrcon mcrcon.c
$ ./mcrcon -h
<3> 設定伺服器開機自動啟動minecraft server (如果還在minecraft帳號下,請先exit跳出再繼續)
$ sudo nano /etc/systemd/system/minecraft.service
####空白文件請貼下方內容####
[Unit]
Description=Minecraft Server
After=network.target
[Service]
User=minecraft
Nice=1
KillMode=none
SuccessExitStatus=0 1
ProtectHome=true
ProtectSystem=full
PrivateDevices=true
NoNewPrivileges=true
WorkingDirectory=/opt/minecraft/server
ExecStart=/usr/bin/java -Xmx2048M -Xms512M -jar server.jar nogui
ExecStop=/opt/minecraft/tools/mcrcon/mcrcon -H 127.0.0.1 -P 25575 -p strong-password stop
[Install]
WantedBy=multi-user.target####內容結束####
- java啟動命令的記憶體大小請依據系統資源調整
- 'strong-password'請設定為之前訂定的rcon密碼還有port number(如果你有更改)
$ sudo systemctl start minecraft$ sudo systemctl status minecraft$ sudo systemctl stop minecraft
$ sudo systemctl enable minecraft
<4> 防火牆設定
$ sudo ufw allow 25565/tcp
<5> 自動備份設定(optional, 如果不在乎世界被搞爛,遊戲地圖重來也沒差就不需要設定)
$ sudo su - minecraft
$ nano /opt/minecraft/tools/backup.sh
####腳本內容複製貼上####function rcon {/opt/minecraft/tools/mcrcon/mcrcon -H 127.0.0.1 -P 25575 -p strong-password "$1"}rcon "save-off"rcon "save-all"tar -cvpzf /opt/minecraft/backups/server-$(date +%F-%H-%M).tar.gz /opt/minecraft/serverrcon "save-on"## Delete older backupsfind /opt/minecraft/backups/ -type f -mtime +7 -name '*.gz' -delete####腳本內容結尾####
$ chmod +x /opt/minecraft/tools/backup.sh
$ crontab -e
####文件最後一行加上下面命令####
0 23 * * * /opt/minecraft/tools/backup.sh####結束儲存並退出編輯####
<6> 將單機的世界搬到伺服器上(optional)
在Windows環境下:
- Windows按鍵+R叫出"執行"視窗
- 開啟內容貼上"%appdata%"
- 找到並進入".minecraft"資料夾
- 找到並進入"saves"資料夾
- 找到你在本機的世界名稱資料夾,複製並將它改名為"world"
- 把整個world上傳至伺服器(FileZilla+SSH, 上傳到本來的user家目錄, 再移動到/opt/minecraft/server底下,建議先把原來的world資料夾整個砍掉或是改名,乾淨的複製進去)
在Server環境下:
- 把world資料夾改為owner為service帳號
- 試著執行看看並在本機連線登入,看看世界是否改變成你要的樣子,Done
(5) 自動關機設定
$ sudo crontab -e
####進入另一個crontab腳本設定,在文件最後將以下複製貼上####29 22 * * * /usr/sbin/shutdown -h now00 06 * * * /usr/sbin/shutdown -h now00 12 * * * /usr/sbin/shutdown -h now####腳本結尾####
(6) DDNS浮動IP網域名稱設定
- 去註冊一個帳號
- 訂定自己想要的domain name
- 下載duc程式並照步驟安裝(2.x版已經很足夠,3.x版要腳本指令...請自行研究)
- command參考如下:
$ noip-duc -g <YourDomain> -u <YourAccount> -p <YourPassword>
- 下完連系統啟動都幫你設定號自動更新ip了,很方便,可以試著重開機看看是否功能有正常運作