Minecraft 是一個多人遊戲。它使用客戶端-服務端模型,遊戲本體是一個可以獨立遊玩的客戶端,連接到伺服器時也可以和其他玩家一起遊玩。
安裝
Java 版 Minecraft 服務端可通過 minecraft-serverAUR 包來安裝。它附帶一個 systemd 單元文件和一個小巧的控制腳本。
請參閱#可用於替代的服務端來了解一些可替代 Minecraft 服務端的應用的簡介。
配置
安裝過程會創建 minecraft
用戶和用戶組。出於安全原因,我們推薦創建一個特殊的 minecraft 用戶。在一個無特權用戶下運行 Minecraft 可以使任何攻破您的伺服器的人僅獲得該用戶的權限,而您自己的則完好無損。
不過,您需要安全地將您的用戶添加到 minecraft
組,並授予該組 /srv/minecraft
(默認)目錄的寫權限以修改 Minecraft 服務端配置。確保/srv/minecraft
目錄下的所有文件均屬於 minecraft
用戶,或者讓其他用戶擁有這些文件的讀寫權。如果服務端無法訪問某些文件且沒有足夠的權限將錯誤消息寫入日誌,那麼它會出錯。
這個軟體包提供了一個 systemd 服務和一個計時器來自動備份。默認情況下,備份位於伺服器根目錄的 backup
文件夾下。為節省磁碟空間,服務端只會保留 10 個最新的備份(可通過 KEEP_BACKUPS
進行配置)。相關的 systemd 文件是 minecraftd-backup.timer
和 minecraftd-backup.service
。您可憑喜好編輯它們,例如遵循自定義的備份周期。
啟動服務端
您可以通過 systemd 或命令行來啟動服務端。無論使用哪種方式,服務端都被封裝在 minecraft
用戶的 tmux 會話中。使用 systemd,你可以啟動/啟用其包含的 minecraftd.service
。此外,也可以執行:
# minecraftd start
接受 EULA
要運行 Minecraft 服務端,您必須接受 EULA(End User License Agreement,最終用戶許可協議),您只需在安裝後接受即可。EULA 文件由服務端軟體包創建,位於 /srv/minecraft/eula.txt
。請編輯該文件來聲明您接受 EULA。您只需編輯:
eula=false
將其值改為 true
。以下是一份被接受的 EULA 的樣例:
/srv/minecraft/eula.txt
#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula). #Sat Sep 11 11:11:11 PDT 2011 eula=true
防火牆配置
server.properties
包含三個設置用於確定您使用的埠:
server-port
用於確定監聽傳入連接所使用的 TCP
埠,默認為 25565
。
query.port
用於確定共享遊戲信息所使用的 UDP
埠,默認為 25565
。
server.port
是 TCP 而 query.port
是 UDP,它們可以共用同一埠。要啟用 query,您還需要單獨設置 enable-query=true
。rcon.port
用於確定遠程連接管理終端所使用的 TCP 埠, 前提是您需要允許遠程連接,默認埠為 25575
。要啟用 rcon,您需要單獨設置 enable-rcon=true
和 rcon.password=...
。
您至少應當開啟 server-port
以允許傳入連接,建議允許 query 並開啟 query.port
。此外,允許遠程控制會帶來風險,開啟前請三思。
以上是官方服務端的配置方法。若您使用其他替代的服務端,請閱讀它們的文檔以獲取更多細節及配置方法。
服務端管理腳本
您可以使用軟體包提供的 minecraftd
腳本來容易地管理服務端。它可以執行一些簡單的諸如 start
、stop
、restart
的基本命令或使用 console
連接到會話。更進一步地,您可以使用 status
查看狀態信息,用 backup
備份服務端的世界目錄,用 restore
從備份恢復您的世界或使用 command 要執行的命令
在伺服器控制台上運行單條命令。
調整
要調整默認設置(如最大 RAM、線程數等),請修改 /etc/conf.d/minecraft
。
例如,更多的高級用戶可能會想將 IDLE_SERVER
設為 true
,這會使服務端在 IDLE_IF_TIME
定義的時長(默認為 20 分鐘)內沒有玩家後暫停。當服務端被暫停時,一個 idle_server
會使用來自 nmap包 的 ncat(1)(或其他 netcat 實現)監聽 Minecraft 埠,當有連接傳入時,會立即啟動服務端。這可能會推遲暫停後的第一個連入請求,但它可以顯著降低 CPU 和內存占用,實現更合理的資源及功耗水平。
/srv/minecraft/eula.txt
將不會被創建,初次啟動時您需要禁用它。可用於替代的服務端
Spigot(區別於Craftbukkit)
Spigot(水龍頭服)是世界上使用最廣泛的修改版服務端。您可使用 spigotAUR 安裝它。spigot 的 PKGBUILD 在 minecraft-serverAUR 上構建,這意味著它具有自己的 systemd 單元文件、spigot 腳本和相應的腳本配置文件。其二進制文件名為 spigot
,與 minecraftd
的命令相同。配置文件位於 /etc/conf.d/spigot
。
確保您已閱讀#配置章節,並無論何處都將所有的 minecraftd
替換為 spigot
。
它與 Bukkit(水桶服)有點故事,且在 bukkit 隕落後越發受到歡迎。
Cuberite
Cuberite 是一個高性能且可擴展的服務端,由 C++ 和 Lua 編寫 ,其性能遠超原版 Minecraft 服務端,但其與最新的 Minecraft 客戶端不完全兼容(一些遊戲特性可能會缺失或不工作)。
Cuberite Minecraft 服務端可作為 cuberiteAUR 安裝,其在 8080
埠默認提供一個簡單的 web 界面,可以通過瀏覽器設置大部分的伺服器選項,cuberite 的 PKGBUILD 在 minecraft-serverAUR 的文件上構建,這意味著 cuberite 服務端提供了它自己的 systemd 單元文件、cuberite 腳本和相應的腳本配置文件。其二進制文件名為 cuberite
,與 minecraftd
的命令相同,配置文件位於 /etc/conf.d/cuberite
。
確保您已閱讀#配置並將您遇到的所有的 minecraftd
替換為 cuberite
。
PaperMC
PaperMC(紙服)是一個 Minecraft 服務端,兼容 Spigot 的插件,旨在提供更佳性能。通過 papermcAUR 安裝該服務端。
確保您已閱讀#配置並將您遇到的所有 minecraftd
替換為 papermc
。
Forge
Forge 是一個使用廣泛的 Minecraft 模組 API。有以下服務端軟體包可用:
- forge-serverAUR 最新版本的 Minecraft
- forge-server-1.15.2AUR for Minecraft 1.15.2
- forge-server-1.14.4AUR for Minecraft 1.14.4
- forge-server-1.12.2AUR for Minecraft 1.12.2
- forge-server-1.11.2AUR for Minecraft 1.11.2
- forge-server-1.10.2AUR for Minecraft 1.10.2
- forge-server-1.9.4AUR for Minecraft 1.9.4
- forge-server-1.8.9AUR for Minecraft 1.8.9
- forge-server-1.7.10AUR for Minecraft 1.7.10
確保您已閱讀#配置並將遇到的所有 minecraftd
替換為 forged
(若是舊版則還需加上版本號,形同 forge-x.x.xd
)。
Fabric
Fabric 是為 Minecraft 開發的一個輕量化、實驗性的模組工具鏈。通過 fabric-serverAUR 安裝其服務端軟體包。
確保您已閱讀#配置並將遇到的所有 minecraftd
替換為 fabricd
。
Quilt
Quilt 是一個主要為 Minecraft 開發、開源的、社區驅動的模組工具鏈。通過 quilt-serverAUR 安裝其服務端軟體包。
確保您已閱讀#配置 並將遇到的所有 minecraftd
替換為 quiltd
。
Quilt 是 Fabric 的一個分支,意味著其可以向下兼容一些 Fabric 模組。
提示和技巧
Minecraft 伺服器埠
Minecraft 服務端默認在 25565
埠上運行,當輸入的地址不帶埠時默認使用該埠。
大部分 Minecraft 伺服器提供商需要購買高級服務以使用默認的 Minecraft 埠。因此若您使用的埠不是 25565
,您需要在域名或地址後加上一個冒號(:)和您的伺服器為遊戲分配的埠。例如,若您的地址是 43.12.122.96
,埠是 28543
,那麼您需要連接到43.12.122.96:28543
。
疑難解答
日誌
Screen 日誌存儲在 /tmp/spigot_spigot_command_dump.txt
文件中。如果 systemctl 無法啟動服務,請檢查 screen 日誌。
Journal 日誌存儲在 spigot.service
另請參閱
- 一些打包好的服務端提供從自動備份到多線程伺服器等所有功能,請參閱 Server Wrappers 以了解更多信息。然而 AUR 提供的管理腳本應當可以滿足大部分需求。
- 您可能會想要設置一個 systemd 定時器,例如與 mapper 一起使用以為您的世界定時生成地圖。
- 確保定時備份地圖,可以使用提供的管理腳本(見閱#配置或 rsync)。
- 另見架設 Java 版伺服器。