快轉到主要內容

【實驗性】手機Docker開Minecraft基岩版BDS伺服器

分類   遊戲攻略 Minecraft
標籤   Bedrock Dedicated Server Termux
🗓️ 民國110年 辛丑年
✍ 切換正體/簡體字
目錄

Minecraft Bedrock Dedicted Server是Mojang推出的基岩版開伺服器程式,適合用於原味生存。雖然支援Windows 10和Ubuntu,但官方只有提供x86-64位元版本。

要在手機ARM平台執行BDS也不是不可能,透過QEMU虛擬機運行Docker,再port forwarding就行。

註解: 手機上執行開服軟體,簡單程度PocketMine > Nukkit > BDS。因為PocketMine有很多人做手機版APP,而Nukkit只要有Java就行。

  • 測試版本: Minecraft 1.18

  • 測試平台: Sony Xperia 5 II,Android 11 (s865, 8GB RAM)

1. 建立虛擬機&安裝Docker
#

  1. 開啟Termux (建議安裝 F-droid版本的),輸入指令:
pkg install qemu-utils qemu-common qemu-system-x86_64-headless
  1. 下載內含virt的Alpine Linux
mkdir alpine && cd $_
wget http://dl-cdn.alpinelinux.org/alpine/v3.12/releases/x86_64/alpine-virt-3.12.3-x86_64.iso
  1. 建立8G的虛擬硬碟
qemu-img create -f qcow2 alpine.img 8G
  1. 開機
qemu-system-x86_64 -machine q35 -m 1024 -smp cpus=2 -cpu qemu64
  -drive if=pflash,format=raw,read-only,file=$PREFIX/share/qemu/edk2-x86_64-code.fd
  -netdev user,id=n1,hostfwd=tcp::2222-:22 -device virtio-net,netdev=n1
  -cdrom alpine-virt-3.12.3-x86_64.iso
  -nographic alpine.img
  1. 使用root帳號登入,啟用網路卡。
setup-interfaces
#Available interfaces are: eth0.
#Enter '?' for help on bridges, bonding and vlans.
#Which one do you want to initialize? (or '?' or 'done') [eth0]
#Ip address for eth0? (or 'dhcp', 'none', '?') [dhcp]
#Do you want to do any manual network configuration? [no]
ifup eth0
  1. 使用offfnikj準備好的answerfile安裝系統
wget https://gist.githubusercontent.com/oofnikj/e79aef095cd08756f7f26ed244355d62/raw/answerfile
  1. 讓開機時能輸出訊息
sed -i -E 's/(local kernel_opts)=.*/1="console=ttyS0"/' /sbin/setup-disk
  1. 安裝系統至硬碟,期間會要求建立root帳號的密碼。
setup-alpine -f answerfile
  1. 使用poweroff指令關機,以後就用另一個指令啟動系統(可將這條指令自行寫成shell):
qemu-system-x86_64 -machine q35 -m 4096 -smp cpus=4 -cpu qemu64
  -drive if=pflash,format=raw,read-only,file=$PREFIX/share/qemu/edk2-x86_64-code.fd
  -netdev user,id=n1,hostfwd=tcp::2222-:22,hostfwd=udp::19132-:19132 -device virtio-net,netdev=n1
  -nographic alpine.img
#m是分配4096MB記憶體,cpu是4核CPU,hostfwd則是把外部19132通訊埠轉發到虛擬機19132通訊埠。
  1. 安裝docker,並設定開機自動啟動。
apk update && apk add docker
service docker start
rc-update add docker

2. 下載Minecraft BDS伺服器
#

  1. 開機,登入root帳號,建立一個minecraft-server的目錄用來存放遊戲資料。
mkdir minecraft-server
  1. 使用itzg提供的docker映像檔,會花點時間下載資料。
docker run -d -it -e EULA=TRUE -p 19132:19132/udp -v /root/minecraft-server:/data itzg/minecraft-bedrock-server
  1. 只要有連線進來,docker容器內的資料就會儲存到minecraft-server這個目錄。如果要在虛擬機開機時就執行docker容器,可以再加上--restart always參數。

3. 連線測試
#

  1. 以LAN區域連線為例,Termux輸入指令取得手機IP(不是在虛擬機內,另外開一個session):
ifconfig
#顯示的IP應該是192.168.x開頭
  1. 同一個網路的基岩版,會在好友的介面看到開啟的伺服器。

  2. 或是從伺服器輸入Termux的IP,端口19132,然後連線。

4. 總結
#

效能應該是很多人關注的部分,經過這麼多層虛擬,連線品質當然大打折扣。

從外部連線到生成一個新世界超過1分鐘,所以使用超平坦比較妥當,例如:

docker run -d -it --name bds-flat-creative
  -e EULA=TRUE -e LEVEL_TYPE=flat -e GAMEMODE=creative
  -p 19132:19132/udp -v /root/minecraft-server:/data itzg/minecraft-bedrock-server

如果跳過系統虛擬化這一層,那docker效能應該會大大提升。

成功開伺服器後,換地圖、裝模組的其他設定請參考:

Minecraft基岩版BDS伺服器架設教學 & 通訊埠轉發

可以用scp上傳檔案到QEMU虛擬機內。

參考資料
#

相關文章

Minecraft基岩版Aternos伺服器開服教學
分類   遊戲攻略 Minecraft
標籤   Minecraft Server Bedrock Dedicated Server
Windows Minecraft基岩版BDS伺服器架設教學 & 通訊埠轉發
分類   遊戲攻略 Minecraft
標籤   Minecraft Server Bedrock Dedicated Server Port Forwarding
Minecraft基岩版BDS伺服器教學:將伺服器替換成自己的世界&安裝模組、資源包
分類   遊戲攻略 Minecraft
標籤   Bedrock Dedicated Server

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur或Postimages。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用圖床網站。