Minecraft/Java 版服務端 - Arch Linux 中文维基

跳至內容

# Minecraft/Java 版服務端

出自 Arch Linux 中文维基
< Minecraft
翻譯狀態：

- 本文（或部分內容）譯自 Minecraft/Java Edition server，最近一次同步於 2025-03-17，若英文版本有所更改，則您可以幫助同步與翻譯更改的內容。
- 您可以在 ArchWiki 的對應頁面找到本文翻譯的原始修訂歷史。
- 本文可能與英文原文存在出入。

Minecraft 是一個多人遊戲。它使用客戶端-服務端模型，遊戲本體是一個可以獨立遊玩的客戶端，連接到伺服器時也可以和其他玩家一起遊玩。

注意：第三方可以運行 Minecraft 服務端。您應當閱讀它們的隱私政策來知曉它們如何處理您的數據。一些伺服器需要登錄第三方帳戶，還有一些支持通過小額交易購買物品。即使這可能違反了 Minecraft 最終用戶許可協議 (「EULA」)，具體取決於伺服器銷售的內容。

## 安裝

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`。此外，允許遠程控制會帶來風險，開啟前請三思。

以上是官方服務端的配置方法。若您使用其他替代的服務端，請閱讀它們的文檔以獲取更多細節及配置方法。

參閱 [1] 和 [2] 以獲取更多信息。

### 服務端管理腳本

您可以使用軟體包提供的 `minecraftd` 腳本來容易地管理服務端。它可以執行一些簡單的諸如 `start`、`stop`、`restart` 的基本命令或使用 `console` 連接到會話。更進一步地，您可以使用 `status` 查看狀態信息，用 `backup` 備份服務端的世界目錄，用 `restore` 從備份恢復您的世界或使用 `command 要執行的命令` 在伺服器控制台上運行單條命令。

注意：關於伺服器控制台（可通過 `minecraftd console` 訪問），請知曉您可以使用 `ctrl+b` `d` 快捷鍵退出任意 tmux 會話。

### 調整

要調整默認設置（如最大 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 伺服器埠

這篇文章的某些內容需要擴充。

原因：SRV 文檔有所記載，支持在使用域名時無需指定埠而使用非默認埠。 (在 Talk:Minecraft/Java 版服務端 中討論)

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 版伺服器。

分類：​

- 遊戲
- 伺服器

Minecraft/Java 版服務端
新增話題