我的世界基巖版服務器架設(Ubuntu Server)
??? ? ? 這篇文章將從零開始講述搭建《我的世界-基巖版》服務器的過程及所有細節(jié)。我一貫認為,只有自己擁有的服務器,才是可靠的服務器。所以我便花了幾天時間搗鼓了一下這個東西,寫這篇文章的主要目的也算是一個備忘錄,防止自己忘記。在開始前,我需要強調一下,這個基巖版服務端只支持X86/X64架構的CPU,并不支持ARM架構。換句話來說,這個服務端不能架設在樹莓派上。以下是本文的目錄
選擇服務器
安裝基巖版服務端
基巖版服務器設置
設置定時備份
設置定時關機+備份
指令及用法

選擇服務器
????這個選擇空間還是很大的,我主要是提一些建議。首先服務器的配置決定了同時在線人數(shù)和地圖的加載速度。這里所說的配置包括了核心數(shù),內存大小和服務器帶寬。當然,配置越高越好(哈哈,有錢任性 ^_^)。不過,經(jīng)實測,1個核心加1G內存(1核1G)也能流暢游玩,但有概率爆內存。在內存小的情況下,強烈推薦定時關機,這樣相當于給服務器清一下內存。還有一點要注意,如果是租服務器,注意選擇離自己物理位置近的服務器。這有助于降低游戲內的延遲,具體表現(xiàn)在地形的生成速度(游戲內傳送后生成地形所需的時間)。
大部分人的服務器主要分為兩種情況
家用PC
租借服務器VPS
????對于家用電腦,可以安裝許多類型的系統(tǒng),例如Windows,Windows Server,Linux類別的Ubuntu或Ubuntu server。如果使用Windows系統(tǒng)的話,那就太簡單了。把文件從官網(wǎng)下載下來,點擊運行就行了。推薦使用Windows10專業(yè)版。首先選擇win10的原因是因為其相比win11更穩(wěn)定。選擇專業(yè)版是因為其帶有一個非常好用的功能,那就是《遠程桌面連接》。局域網(wǎng)環(huán)境下,延遲低的離譜。只有專業(yè)版的電腦才能成為受控方。可以使用家庭版系統(tǒng)通過這個軟件遠程控制安裝專業(yè)版系統(tǒng)的服務器。接下來談談網(wǎng)絡問題,家庭網(wǎng)絡屬于一個局域網(wǎng),通常來講無法在公網(wǎng)上訪問到,這時候就需要通過端口映射的方法使服務器能被處在公網(wǎng)的玩家訪問到。有些人說,家里的網(wǎng)絡是動態(tài)ip (DHCP),需要用各種軟件映射或者是申請公網(wǎng)ip。確實,這應該是有道理的,但我沒研究過。一般來說,用家里的電腦開服務器一般是試一試和玩一玩的心態(tài)。如果要長時間的開服務器,那還是得租正規(guī)的服務器才行呀。所以說,對于這種家庭服務器,能在公網(wǎng)訪問到一小段時間就夠了。這就很簡單了,運用路由器上的端口映射功能。比如小米路由器的端口轉發(fā)。

????這里有好幾種可以選擇。如果只有個別端口需要轉發(fā),就使用第一個添加規(guī)則。例如我的世界基巖版,就是udp協(xié)議19132端口,把這個映射出去就行了??梢栽诎俣壬纤裪p地址,看到自己目前的公網(wǎng)ip。其實動態(tài)ip也不會變得太頻繁。
????租借服務器所涉及到的范圍就更加廣泛了。首先要考慮到的是選擇國內服務器還是國外服務器。國內服務器的優(yōu)勢是地理位置近,所以延遲低。但其缺點很明顯,國內服務器十分昂貴,同規(guī)格比國外服務器貴多了,還有就是帶寬。國內1Mbps的服務器的帶寬簡直匪夷所思。國外的服務器的往往延遲比較高,但其他都是優(yōu)點了。首先,價格便宜,帶寬量大管飽,500Mbps,1Gbps,2Gbps都很常見。平時能遇到的服務器提供商主要有騰訊云,阿里云,甲骨文(Orcale),亞馬遜云等等。
????甲骨文有免費的服務器,但是很難申請到。往往在最后一步驗證完信用卡后就出錯。我的建議是一定要用真實的信息。不要掛代理。保證自己填寫的地址與信用卡地址和ip都能對應上。還有,好像因為國內的薅羊毛的太狠了,用國內的卡基本上也很難申請到了。我失敗了好幾次,最后是用美國信用卡一次成功的。所以更推薦在海外的人嘗試。
????注冊時選的區(qū)域就是服務器的區(qū)域,免費賬戶不能同時開多個地區(qū)的服務器。如果注冊成功了,那有這個賬號就太香了??梢酝瑫r使用2臺1核1G內存的AMD服務器(帶寬:480Mbps)和1臺4核24G內存的ARM服務器(帶寬:2Gbps)或2臺2核12G的ARM服務器(帶寬:1Gbps)。我選的是日本大阪的區(qū)域,可能太火熱的原因,ARM服務器沒庫存了。不過兩臺AMD服務器已經(jīng)非常舒服了。對于這種服務器,Linux基本成為唯一的選擇,畢竟Windows server吃性能不說,它本身也是收費的。

安裝基巖版服務端
操作系統(tǒng):Ubuntu Server 22.04.2 LTS
通過服務器提供商打開服務器,并安裝Ubuntu系統(tǒng)。保存好私鑰。(放行端口22)
電腦安裝Tabby,這是開源的終端??梢栽贕itHub上下載。
通過SSH的方式連接服務器。根據(jù)服務器后臺查看用戶名,一般是ubuntu。

????4. 等待連接成功,準備工作完成。(下圖是局域網(wǎng)連接我的虛擬機,示范用)

????5. 獲取管理員權限。
????????1. sudo passwd root
????????2. su root

????6. 更新軟件包列表(sudo apt-get update)
????7. 安裝壓縮軟件與解壓縮軟件
????????1. apt-get install zip(在本版本系統(tǒng)中會同時安裝zip和unzip)
????????2. apt-get install unzip(這個在本版本系統(tǒng)中是非必要的)
????8. 此版本系統(tǒng)自帶screen(在關閉ssh后維持程序運行的軟件),不需要額外安裝。
????????1.?apt-get install screen (非必要)
????9. 安裝服務端網(wǎng)絡通信依賴庫(apt-get install libcurl4-openssl-dev)重要,不可缺少!!
????10. 新建存放服務器的文件夾
????????1. cd /home(打開home文件夾)
????????2. mkdir minecraft(新建名稱為minecraft的文件夾)
????????3. cd ./minecraft(打開minecraft文件夾)
????11. 從官網(wǎng)下載基巖版服務器(wget 鏈接)鏈接獲取方式如下

????12. 解壓文件(unzip 文件名)可以通過ls查看文件名,或者直接按TAB,自動補全。

????13. 如果需要刪除壓縮包,使用這個命令(rm ./文件名)
????14. 防止關閉ssh就失效,新建名為minecraft的虛擬窗口(screen -S minecraft)大小寫有影響
????15. 運行游戲(LD_LIBRARY_PATH=. ./bedrock_server)運行這個指令時要保證在正確的服務端目錄下。

????16. 如果無法連接,記得檢查服務器運營商后臺管理界面是否放行了19132的udp端口。或者是被系統(tǒng)防火墻攔截了(通常來說,新系統(tǒng)默認沒開防火墻)。具體可參考后面的指令及用法。
????17. CTRL+ C關閉服務器

基巖版服務器設置
????服務器可以修改的主要有三個文件allowlist.json,permissions.json,server.properties。第一個是白名單,很少用到。第二個文件是給與權限,需要什么就加什么。第三個是修改服務器的參數(shù),可以設置種子,服務器類型等參數(shù),具體就讓ChatGPT解釋了,而且網(wǎng)上很容易查到。


修改這些文件需要用到vim工具。
vim ./permissions.json 打開文件,剛打開可以復制黏貼,但不能編輯。按 i 進入編輯模式,按Esc退出編輯模式。
:wq 保存并退出 :q! 不保存并強制退出

設置定時備份
????作為服務器,這是定時自動備份是很重要的一部分。這個備份方法適用于內存大,不關服務器的熱備份。腳本我參考了網(wǎng)上的教程并自己做了一些修改。
“嶄新開始” (sudo reboot)
進入管理員賬戶 (su root)
打開服務端文件夾(cd /home/minecraft)
新建sh結尾的腳本文件(vim autoBackup.sh)
黏貼腳本
mkdir -p /home/minecraft/backup
find /home/minecraft/backup -mtime +14 -type f -name "*.zip" -exec rm -rf {} \;?
sleep 2
mkdir -p /home/minecraft/backup/temp? ? ? ??
echo 'mkdir done'?
mkdir -p /home/minecraft/backup/temp/mcserver
cp -r /home/minecraft/worlds/* /home/minecraft/backup/temp/mcserver
sleep 2
echo 'copy done'
zip -q -r /home/minecraft/backup/mcserver$(date +%Y%m%d).zip /home/minecraft/backup/temp/mcserver #可能顯示兩行,但這是zip命令的一部分,同一行
echo 'zip done'?
sleep 2
rm -rf /home/minecraft/backup/temp
echo 'all done'
exit
具體每行意思如下,偷懶了,由ChatGPT為我們講解。


????6. 設置一下格式,不然之后可能出錯。(:set fileformat=unix)
????7. 保存并退出(:wq)
????8. 給腳本賦予運行權限(chmod +x autoBackup.sh)
????9. 測試一下(./autoBackup.sh)應該出現(xiàn)以下畫面,再用cd命令去看看是否有zip生成。如果是我推薦的Tabby軟件,可以去軟件右上角的SFTP直接看看有沒有生成這個備份文件。


????10. 成功以后,開始設定定時任務。
????11. 打開定時任務,選1(crontab -e)
????12. 輸入命令,即每天三點啟動腳本

????13. 按F2,Y保存,Enter退出

設置定時關機+備份
????在服務器內存不充裕的情況下,定時關機是很有必要的。因為關機就會涉及到開機,需要重啟基巖服務端。我所設想的方案是讓服務器定時關機,在重啟后自動運行腳本,執(zhí)行備份加啟動服務端。以下步驟承接《基巖版服務器設置》結束的那一步。
“嶄新開始” (sudo reboot)
進入管理員賬戶 (su root)
打開服務端文件夾(cd /home/minecraft)
新建sh結尾的腳本文件(vim autorun.sh)
黏貼腳本
mkdir -p /home/minecraft/backup
find /home/minecraft/backup -mtime +14 -type f -name "*.zip" -exec rm -rf {} \;
sleep 2
mkdir -p /home/minecraft/backup/temp
echo 'mkdir done'
mkdir -p /home/minecraft/backup/temp/mcserver
cp -r /home/minecraft/worlds/* /home/minecraft/backup/temp/mcserver
sleep 2
echo 'copy done'
zip -q -r /home/minecraft/backup/mcserver$(date +%Y%m%d).zip /home/minecraft/backup/temp/mcserver
echo 'zip done'
sleep 2
rm -rf /home/minecraft/backup/temp
echo 'backup finished'
sleep 2
screen -dmS minecraft
sleep 2
screen -x -S minecraft -p 0 -X stuff "cd /home/minecraft"
screen -x -S minecraft -p 0 -X stuff '\n'
screen -x -S minecraft -p 0 -X stuff "sudo LD_LIBRARY_PATH=. ./bedrock_server"
screen -x -S minecraft -p 0 -X stuff '\n'
echo 'server opened'
echo 'all done'
exit 0

同樣,由ChatGPT為我們講解。

????6.?設置一下格式,不然之后可能出錯。(:set fileformat=unix)
????7. 保存并退出(:wq)
????8. 給腳本賦予運行權限(chmod +x autorun.sh)
????9. 測試一下(./autorun.sh)
????10. 如果產生備份文件并且啟動了服務端就成功了??赏ㄟ^top指令查看是否真的成功了。
????11. 設置定時關機-打開腳本(crontab -e)
????12. 鍵入以下代碼,3點關機,啟動時打開腳本。

????13.?按F2,Y保存,Enter退出
????14. 可以關機重啟,驗證腳本是否自動執(zhí)行。(不登錄SSH干預的情況下,嘗試用手機或電腦我的世界連接服務器,驗證服務器是否已經(jīng)啟動)

指令及用法
這里簡單介紹一下一些常用指令或快捷方式。
Tabby終端的一些技巧
用方向鍵能自動填以前輸入過的指令
右鍵是黏貼
右上角的SFTP能看到文件夾結構
Ubuntu server一些命令及技巧
Ctrl+C 關閉當前程序
Ctrl+Z 隱藏當前程序
sudo passwd root 設置root賬戶密碼
su root 切換成root用戶
su ubuntu 切換成名為ubuntu的用戶
top 展示正在運行的程序(本身也是程序,用技巧1關閉)
kill <pid> 殺死進程
sudo ufw enable 開啟防火墻
sudo ufw reload 重啟防火墻
sudo ufw status 查看防火墻狀態(tài)
sudo ufw disable 關閉防火墻
sudo ufw allow 22 允許22號端口
sudo ufw allow 22/tcp 允許22號端口的tcp協(xié)議
sudo ufw delete allow 22 關閉22號端口
sudo reboot 重啟
cd .. 返回上一層目錄
cd /home 絕對路徑打開home文件夾
cd ./ubuntu 相對路徑打開ubuntu文件夾,以當前的目錄為起點打開這個路徑的文件夾
rm 路徑????刪除一個文件
rm -rf 路徑????刪除一個文件夾及里面所有東西
mkdir 路徑????新建一個文件夾
touch 文件名????新建一個文件
vim 文件名????打開或新建,并編輯這個文件
剛進入允許復制黏貼
i 進入編輯模式,無法復制黏貼
Esc 退出編輯模式
:wq????保存并退出
:wq!????保存并強制退出
:q????退出
:q!????強制退出
:set fileformat=unix????改格式,當腳本在Windows寫好拖入Linux中時,這個很重要。
????24. crontab -e????打開定時任務
????25. crontab -l????列出定時任務
????26. crontab -r????關閉定時任務
????27. F2 退出crontab編輯頁
????28. screen -S 名稱????打開名為《名稱》的窗口
????29. screen -ls????顯示當前所有窗口
????30. screen -r 名稱????恢復窗口
????31. screen中輸入exit是關閉screen
????32.?chmod +x 文件名????賦予一個文件運行權限,讓這個文件變?yōu)榭蓤?zhí)行文件。
????33. cp 源文件 目標文件夾????復制文件
????34. mv 源文件 目標文件夾????移動文件
????35. ls 展示當前文件夾所有文件

參考資料
?Linux 文件與目錄管理?https://www.runoob.com/linux/linux-file-content-manage.html
ubuntu防火墻ufw使用教程?https://www.cnblogs.com/zqifa/p/ubuntu-ufw-1.html
Linux Crontab 定時任務?https://www.runoob.com/w3cnote/linux-crontab-tasks.html
一 搭建服務器 - Minecraft 基巖版服務器搭建?https://zhuanlan.zhihu.com/p/379638625?utm_id=0
Ubuntu-vim 命令?https://blog.csdn.net/weixin_45774972/article/details/121231190
Linux使用:screen?https://nscc.mrzhenggang.com/screen/#%E8%83%8C%E6%99%AF
MC-BE基巖版服務器搭建與日常維護?https://www.cnblogs.com/xzajyjs/p/15418260.html
sleep: invalid time interval ‘1s\r’?https://blog.csdn.net/taw19960426/article/details/109629004
Linux下設置/查看/取消定時任務?https://blog.csdn.net/linhai1028/article/details/80261700
crontab用法與實例?https://www.linuxprobe.com/how-to-crontab.html
Ubuntu自啟動Screen并執(zhí)行命令?https://blog.csdn.net/qq_41424132/article/details/119939024
Linux chmod命令?https://www.runoob.com/linux/linux-comm-chmod.html

AI繪畫真厲害?。?/h1>
美圖一張(Pixiv ID 110629353)
