在攀升J4125 x86小主機上搭建我的世界伺服器

在攀升J4125 x86小主機上搭建我的世界伺服器

從2023年3月至今,VRChat潮州會館我的世界Minecraft,簡稱MC,俗稱麥塊,台譯當個創世神伺服器已運行1年半了。從一開始的萬人空巷,到後來的無人問津,再到現在的新人加入,這一些我想趁着還有印象記錄下來,順便記錄一下搭建伺服器的過程中一些技術性操作以備忘。

緣起

最初的時候,這一切跟MC是沒有關聯的。當時我看到VRChat裡面的影片播放器如果要播放除YouTube以外的影片,則必須是mp4格式的直鏈。而當時我萌發了在VRC中看我硬碟上的動漫的想法,畢竟自己一個人孤芳自賞甚是無趣,若是能與他人共享自己的典藏,何不是一件趣事。而我家裡正好有公網IP,所以我就想着在家裡開一個能夠每天24小時運行的伺服器。而我在大學的時候買過樹莓派,可惜畢業後閒置了幾年,它竟然壞掉了,實屬讓人匪夷所思。而當年以便宜著稱的樹莓派,因為芯片短缺導致後期價格飆升,並且缺貨。而我又發現有一些國產的替代品,例如香橙派。其實國產的替代品有不少,名稱叫做「某某派」的百花齊放百家爭鳴,而我是一個注重選擇的人,或者也可以說我有選擇困難症,我希望能夠作出最佳選擇。之所以選擇了香橙派是因為它的官方網站是做得最漂亮的,其他那些派有些還沒有官方網站,或者官方網站做得不好。我是一個注重細節的人,我也經常把細節作為一個評判標準。

香橙派亦是有很多型號,配置或高或低。我一開始想着我只是需要在上面運行一個檔案伺服器,例如Nginx罷了,所以無需太高的配置,所以就在閒魚上用90元買了Orange Pi Zero,記憶體512MB。後來我看它除了運行Nginx之外沒有其他工作,我就心血來潮抱着試一試的心態,在上面開了一個MC伺服器,並讓群裡的朋友測試一下。出乎意料的是,如此低配置居然可以讓3人遊玩,而且陸陸續續有群友感興趣。我是有點出乎意料的,畢竟我一開始也沒想到有這麼多MC玩家。

顯而易見,如此低配置的單片機肯定是無法帶動這麼多玩家的,我當初的認識就是:記憶體太小了。所以我就轉而購買270元Orange Pi 3 LTS,把老設備掛閒魚。此配置有2GB的記憶體。後來配置又不夠了,除了記憶體的問題之外,有群友跟我說是CPU單核性能的問題,並推薦我購買x86小主機。比起arm,x86的設備自然是更加自由,使用起來也更加熟悉,更加得心應手。但是我對x86小主機一竅不同,不知道怎麼選擇,然後便聽說了這麼幾個CPU型號:J1900、J4125。這些很多是被用來作軟路由的。因價格問題我一開始想買便宜的J1900,後經群友提醒買了性能略好的J4125,畢竟性能這東西是無法升級的,一步到位才是最明智的選擇,更何況有前車之鑑。所以我又在閒魚上找到了零刻Beelink Gemini M小主機,450元,記憶體4GB,硬碟64GB,體積非常小,跟一個光驅一樣大罷了。我甚是喜歡。然而又重蹈覆轍了,因為我又看中了更高的記憶體配置,閒魚上在賣攀升商睿M小主機,這一個體積就比之前的零刻要大很多了,長寬如一本普通的書,厚度則跟紙盒裝的牛奶差不多厚,不過大小總體還是可以接受的,屬於小主機。配置是8GB記憶體,256GB硬碟,售價420元。這個價格我還是很滿意的,不過就是沒有無線網路有點遺憾,但是我有使用有線網路的條件,所以也無妨。當初我還留意了一下電源的參數,是12V⎓4A,看起來確實是太耗電了。不過幸運的是我用SWE Wi-Fi智能插座測試了一下實際用電,每天大概耗電0.14度,這個耗電量我是比較滿意的,畢竟在家裡搭建伺服器需要考慮的其中一點就是耗電。不過我在購買的時候忘記詢問固態硬碟的健康度了,拿到貨之後才發現只有30%,確實是太低了,不過只能將就着用了。

安裝作業系統

這裡我安裝的自然是我最熟悉的Ubuntu系統,我選取的版本是22.04LTS伺服器版,也就是沒有桌面環境,只能透過SSH連接。其實我當時使用的是20.04LTS版,因為就版本佔用空間小,而且也不算那麼舊,結果比較離譜的是有一次我嘗試按照網上的教程編譯aMule,結果把Shell弄壞了,很不可思議。而我之所以會嘗試着去編譯aMule,也是恰好這個版本的Ubuntu的官方軟體源裡面沒有aMule,而比它舊的版本居然有,比它新的版本也有,就是這個版本沒有。

安裝的時候用Rufus工具燒錄系統鏡像,然後開始安裝。順便吐槽一下攀升這個機器的電源插口與HDMI插口靠得太近了,而HDMI的皮又比較厚,所以兩者會互相擠壓到。

安裝的過程有一些注意點。其一是不要選最小化安裝,我當心最小化安裝後面會缺少一些工具或者依賴之類的,比較麻煩。這不比桌面版系統的安裝,桌面版系統我就推薦選最小化。還有就是要記得選中安裝第三方驅動,避免後續出現缺驅動的問題,缺驅動可比缺依賴缺軟體麻煩多了,對我來說簡直就是無法解決的疑難雜症。其二是在網路配置時,IP的子網掩碼需要用CIDR格式,也就是說不能用我們平時常用的255.255.255.0,要用192.168.1.0/24。其三是硬碟分區時,預設會啓用LVM邏輯分區,如果不需要的話建議取消選中。如果不小心選中了,後面安裝成功後,硬碟會只有100GB,需要手動擴充容量

sudo lvextend --extents +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv
sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv

安裝完畢之後記得順手設定一下時區:

sudo timedatectl set-timezone Asia/Taipei

配置DDNS

DDNS有不少免費的提供商,我這裡使用的是No-IP,有個缺點就是每個月需要手動確認一次,或許我以後會改用其他更方便的服務,不過因為一開始就是用的這個,所以就暫時沒有去更改了。

下載動態DNS更新用戶端,並配置為開機自啓動:

wget --content-disposition https://www.noip.com/download/linux/latest
tar xf noip-duc_3.1.1.tar.gz
cd /home/$USER/noip-duc_3.1.1/binaries && sudo apt install ./noip-duc_3.1.1_amd64.deb
sudo cp /home/$USER/noip-duc_3.1.1/debian/service /etc/systemd/system/noip-duc.service

創建並編輯配置檔案/etc/default/noip-duc

/etc/default/noip-duc
NOIP_USERNAME=myusername
NOIP_PASSWORD=mypassword
NOIP_HOSTNAMES=example.ddns.net,exampledomain.com,noiptest.redirectme.net

啓動服務:

sudo systemctl daemon-reload
sudo systemctl enable noip-duc
sudo systemctl start noip-duc

下載MC伺服器端

MC的伺服器端除了官方的之外,也有很多第三方的。聽說官方的無法安裝插件,所以我就放棄了。我是比較追求性能的優化,畢竟我的機器配置不高,甚至在剛開始我使用的MC版本還是1.16.5,因為下個版本更新了洞穴,深度加深了,礦物的生成規則也變了。聽說伺服器端可以分為插件和模組兩個不同的分類,彼此之間還難以相容,我的選擇是插件服。所以最終選擇了PaperMC。如果下載速度太慢,則可以使用無極鏡像。MC的伺服器端依賴於Java,應該安裝其要求版本的JDK或JRE。本來如果是純淨服安裝JRE(運行環境)即可,但是我擔心可能一些插件需要用到JDK(開發套件),所以就安裝了JDK。

sudo apt install openjdk-21-jdk-headless

配置與插件

因為PaperMC不是官方伺服器端,加上它為了性能做了一定的優化,還修復了一些所謂的Bug,或者說是特性更為恰當,所以有一些MC中常見的紅石機器無法工作,如刷地毯機、TNT複製機、鐵軌複製機等等,需要修改配置檔案./config/paper-global.yml去手動啓用這些特性。其中的刷沙機特性在1.20及以前的舊版本中無法啓用,只能通過GravityControl插件去啓用。

./config/paper-global.yml
unsupported-settings:
allow-piston-duplication: true #刷鐵軌、地毯、TNT
allow-unsafe-end-portal-teleportation: true #刷沙機
allow-tripwire-disarming-exploits: true #刷線機
allow-permanent-block-break-exploits: true #破基岩

伺服器裡的玩家或許需要傳送指令,而預設是只有管理員才能執行這個指令。我在網上找了一些傳送插件,但是其語法我都不滿意,要麼就是語法不是/tp,要麼就是傳送需要對方同意,而我希望有一個跟原生管理員傳送指令完全相通的指令,也就是說把管理員的那個傳送指令下發給普通玩家。最終很幸運我在網上找到了解決方法,無需依賴插件,只需要編輯permissions.yml即可:

./permissions.yml
server.basics:
description: TP permission.
default: true
children:
minecraft.command.teleport: true

此外,下面這些插件也非常有必要:

  • PasswordProtect因為MC官方沒有給伺服器提供入服密碼的功能,也就是說只要是別人知道你的伺服器位址就可以進入你的伺服器,非常不安全。而這個插件可以讓玩家進入伺服器之後要先輸入正確的伺服器密碼才能遊玩,否則無法破壞任何方塊。這個插件其實有點難找,因為搜尋的時候很多插件是用來給玩家設定密碼的而不是給伺服器設定密碼的,而我們伺服器的玩家都是認識的可信的人,所以不需要這個功能,也不需要諸如上鎖箱子之類的功能。
  • TabListPing原生查看玩家延遲只能看到信號格子而無法看到具體的毫秒數值,這是一個失敗的設計,所以就用這個插件來彌補。
  • AntiCreeper避免苦力怕破壞地形炸毀建築。原版的配置檔案中有一個禁止NPC破壞地形的選項,但是一旦使用,會順帶影響到農夫村民的種植與收成。
  • SkinsRestorer我們的伺服器是離線模式,所以需要這個插件來使用皮膚。

札記

  • 伺服器創世之初,僅作測試用,後眾人好之,故轉正。
  • 伺服器創世之初,僅會館同仁參加,後四海友人齊聚。
  • 伺服器創世之初,同鄉釀藥起厝,厝未起直便去,至今無魂無影。
  • 伺服器創世之初,同鄉技藝高超,未數日便擊殺惡龍,又起成祠堂,老爺保賀,又作紅石機械,造福同仁。
  • 同鄉於厝內做岩漿土糞桶,無預火燒厝。
  • 友人初遊玩時,萬事不知,無論地獄,後日夜常駐,現已起得高樓雅厝,馴得萬獸。
  • 同鄉同耍MC,然無通透,故其不知本服。既知,已作客南洋,延遲甚高,無法同樂。每每談起,深感惋惜。
  • 一段時間無人造訪,遂暫時關閉改為七日殺,後又有人來,復開。
  • 2024年7月尾,潮州落大雨,通間㶘大水,無電無水無訊號。待到雨歇水洘電來時,哭父伺服器無便開,看着是切要檔案害去,重翻裝系統正物直。

Comments