兩百年沒有寫教學了
身為一個玩了將近15年麥塊的老玩家
讓我來分享分享現在在2025年開麥塊伺服器的心得吧

# 前言

本篇文章,筆者會從最簡單粗暴的方式
目標族群限於想架設小型私服遊玩的人們
如果你想要經營大型伺服器
你應該要去問問LogoCat之類的大老闆

# 流程

接下來我會根據作業系統、遊戲內版本
不同載入器、以及不同的需求分開來介紹
大概會長下面這樣

  • 環境配置
    • Java指南
    • 網路設定
  • windows
  • linux & MacOS
  • Docker
    • 自己寫
    • itzg

# 先備條件

  • 你會用電腦
  • 你有足夠支撐架設伺服器的硬體設備
  • 你家有固定IP網路(可選)
  • 你不介意你的電腦要一直開著(你有伺服器的話那很正常)

# 正文

# 共通性環境設定

# Java環境

首先我們要知道,你玩的Minecraft是以Java為基底寫成的(基岩版是C++,但你看看我的標題猜猜我要教啥)。
無論是客戶端或者是伺服器端,我們都需要Java Runtime去執行它。
以下是對應的版本
<br>

Minecraft 版本 推薦 Java 版本 備註
Beta 1.8 ~ 1.5.2 Java 6 ~ 7 舊版 Java,除非你要玩古早版本不然用不到這個
1.6.1 ~ 1.16.5 Java 8 支援期最長的版本,1.16.5同時可以用Java 11
1.17.x Java 16 從這裡開始 Java 8 會啟動失敗了
1.18.x ~ 1.20.4 Java 17 官方以 Java 17 做為主要支援
1.20.5 +(含 1.21) Java 21 開始要求 Java 21(LTS)

<br>

# 安裝Java

Minecraft的客戶端,無論是官方啟動器、CurseForge,都自帶Java的Library。
而Prism比較特別,Windows有自帶鏡像可以安裝,而Mac或Linux都得自己裝然後進啟動器偵測。
不過伺服器的話就沒有了,需要自己安裝,或者直接去偷官方啟動器裡面的

想要安裝Java的話,我會推薦前往Oracle的官網去下載。
安裝JDKJRE都可以,JDK雖然是開發者工具,但也包含了JRE。你只是要玩遊戲的話,那兩者都可以。
如果你找對網站(其實你可以直接點我給的連結進去,除非他失效了),你會看到以下的畫面

接著右邊那排找到你需要的版本,然後點進去之後會看到有各種不同的作業系統版本給你下載

注意,只要你需要裝Java環境就會需要來這個頁面找,不管哪個作業系統都一樣

接著根據你的系統架構或作業系統選擇版本

如果你都玩最新版
那可以直接下載windows_installerwindows_msi_installer
下載之後他就會有一個可以直接啟動的安裝檔,點開來安裝就可以啦
安裝的時候要勾選「加入環境變數」,不然你可能會找不到路徑喔~

如果你想要在電腦存在多個Java版本的環境
那就建議選Windows Compressed Archive版本,可以自己解壓縮到自己喜歡的路徑做使用
我自己的習慣是開一個C:/JavaRuntime/資料夾並丟在底下
並根據不同版本的資料夾來管理
然後要使用的時候直接引用這個路徑即可

MacOS與Windows的一樣,分成打包檔和安裝檔
Install一樣是安裝檔,Compressed Archive一樣是打包檔
需要注意的是,請確認自己的電腦架構是Intel還是Apple Silicon的晶片
如果你是M1~M4的系列,請選擇Arm64的版本(其實可以Rosseta但轉譯會有問題)
如果是老版Intel的晶片,要選擇x64的版本不然會直接跑不動喔

Linux的話就比較麻煩一點,因為不同的發行版安裝方式都不太一樣
不過大致上可以分為兩種方式

  1. 使用系統的套件管理工具安裝(我不建議,環境會混在一起)
  2. 手動下載並安裝

如果要用套件管理器
根據你的作業系統使用你的套件管理器安裝openjdk

# 以debian體系為例
sudo apt-get install openjdk-17-jdk

接著根據需求來添加環境變數,讓你可以使用java直接呼叫程式本體

# 直接寫死環境變數
echo 'export JAVA_HOME=/usr/local/jdk-17' >> ~/.bashrc
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

如果你想要手動安裝,可以在官網下載符合你版本的Compressed Archive
然後解壓縮到你想要的路徑即可

# 以jdk17為例
tar -xvf jdk-17_linux-x64_bin.tar.gz
sudo mv jdk-17 /etc/java-runtime/jdk-17

接著根據你有沒有要使用多版本來設定環境變數
如果你跟我一樣是用目錄去分類,那可能要自己alias一下版本

# 或者設定alias來控管版本
alias java17="/etc/java-runtime/jdk-17/bin/java"
alias java21="/etc/java-runtime/jdk-21/bin/java"

# 網路環境

接下來我們要設定伺服器的網路環境,這部分會因為你是用什麼樣的網路環境而有所不同

根據你的需求呢,大致上可以分為兩個狀況

  • 只想跟好朋友玩,而且你朋友不介意只有你開著才能玩 -> 內網穿透
  • 想開給大家一起玩,包括但不限於陌生人。 -> 靜態IP + 端口轉發

<font style="font-weight: bold; font-size: 1.2em;">內網穿透</font>

無論你要使用「開發至局域網」,還是自己架設伺服器執行檔
你都可以只使用VPN連線來達成雖然本人超討厭這個方式

想要在本地架設VPN的話
你可以使用ZeroTierHamachiRadmin VPN等軟體來達成
可以下載任意一個軟體來架設一個區域網路
並讓你的朋友加入這個網路,達到內網穿透的效果
這時候網路就會把你們判定在同一個區網內,就可以連線進行遊玩啦

各牌VPN教學與比較

以ZeroTier為例

  1. 前往ZeroTier官網
  2. 註冊帳號並登入
  3. 建立一個新的網路
  4. 下載並安裝ZeroTier One軟體
  5. 啟動ZeroTier One並加入你剛剛建立的網路
  6. 在ZeroTier的網頁上,允許你的裝置加入網路
  7. 你的朋友也需要重複步驟4-6來加入同一個網路
  8. 取得ZeroTier分配給你的虛擬IP
  9. 在Minecraft中使用這個虛擬IP來連線伺服器
  10. 開玩!
  1. 前往Hamachi官網
  2. 下載並安裝Hamachi軟體
  3. 啟動Hamachi並建立一個新的網路
  4. 你的朋友需要下載並安裝Hamachi,然後加入你建立的網路
  5. 取得Hamachi分配給你的虛擬IP
  6. 在Minecraft中使用這個虛擬IP來連線伺服器
  7. 開玩!
    (跟隔壁Radmin差不多,只差在這個要註冊帳號)
  1. 前往Radmin VPN官網
  2. 下載並安裝Radmin VPN軟體
  3. 啟動Radmin VPN並建立一個新的網路
  4. 你的朋友需要下載並安裝Radmin VPN,然後加入你建立的網路
  5. 取得Radmin VPN分配給你的虛擬IP
  6. 在Minecraft中使用這個虛擬IP來連線伺服器
  7. 開玩!
    (跟隔壁Hamachi差不多,只差在這個不用註冊帳號)

注意,Radmin和Hamachi都只有Windows版本
只有ZeroTier是跨平台的

<font style="font-weight: bold; font-size: 1.2em;">靜態IP設定</font>

如果你想要讓外面的人都能連進來
那你需要有一個固定的公網IP(或者至少知道你的公網IP)
然後在你的路由器上做端口轉發(Port Forwarding)

簡單講就是告訴你的路由器
「如果有人從外面連到我的25565 port,請幫我轉到我這台電腦」

具體的設定方式因路由器品牌而異
但大致上的流程是:

  1. 進入路由器管理介面(通常是192.168.1.1192.168.0.1
  2. 找到「Port Forwarding」或「虛擬伺服器」之類的設定
  3. 新增一條規則:外部Port 25565 -> 內部IP 你的電腦IP -> 內部Port 25565 -> TCP
  4. 儲存並套用

如果你家是用中華電信的小烏龜
你可能需要先把它設定成橋接模式(Bridge Mode)
然後讓你自己的路由器去撥號
不然你會卡在兩層NAT後面 外面的人怎樣都連不進來

如果你沒有固定IP的話
可以搭配DDNS服務(像No-IP或DuckDNS)
它會幫你把一個固定的域名指向你浮動的IP
這樣別人只要記你的域名就能連了

# 實際架設

我們會先以原版為範例
介紹不同作業系統下的啟動跟設定方式
由於Mod版的伺服器架設方式在不同OS下基本大同小異
因此介紹完原版後會單獨抽出來說明

# Windows下如何架設Minecraft伺服器

首先先下個提示,如果你的電腦有足夠的記憶體的話
我會建議你跑Docker,這樣不僅可以簡化許多環境設定的問題
還可以讓你的多環境不會互相干擾互串

如果你前面的Java環境和網路環境都設定好了的話
那Windows下架設伺服器可以說相當簡單

以原版為範例,打開你的「原版」Minecraft啟動器
在「安裝」頁籤中,選擇你想要的版本
版本的右下角應該會有一個小小的「伺服器」字樣
點擊即可下載對應版本的伺服器.jar檔案

下載完成後
在你想要的地方,創建一個新資料夾(檔案路徑盡量不要有非英數字元)
接著把剛剛的.jar檔案丟進去
然後在該資料夾內,按住Shift鍵並右鍵
選擇「在此處開啟命令視窗」或「在此處開啟PowerShell視窗」
接著輸入以下指令來啟動伺服器

java -Xmx2G -Xms1G -jar server.jar nogui

其中
-Xmx2G代表最大記憶體使用量為2GB
-Xms1G代表啟動時分配1GB記憶體

不想每次都打指令的替代方案

如果你不想每次都打指令啟動伺服器
你可以在該資料夾內新建一個start.bat的批次檔
(如果你不會建立的話,你可以先「新建文字文件」然後再把副檔名改掉)
然後把上面的指令貼進去並儲存
這樣你只要雙擊這個start.bat檔案就可以啟動伺服器了
當然如果你的java環境是正常的,你甚至直接雙擊server.jar檔案也可以啟動伺服器

緊接著,你就會看到伺服器啟動失敗關掉
欸別緊張,我沒在耍你,真的是這樣操作的
之所以會停住是因為我們在第一次啟動的時候
伺服器會自動生成一些必要的檔案
其中就包含了一個eula.txt的檔案
這個是官方的「使用者授權協議」
你需要打開這個檔案,然後把裡面的eula=false改成eula=true
這樣代表你同意這個協議
儲存後再次啟動伺服器
這次伺服器就會順利啟動啦
伺服器會在你本地的25565port監聽
別人就可以透過你的內網IP+port或者外網port forward連進來囉

# 使用 Linux或MacOS架設Minecraft伺服器

再次提示,你都用Linux了
我想再裝個Docker來跑不會太難的
能夠讓你更輕鬆的

Linux和MacOS的架設方式基本上一樣
畢竟都是走終端機操作

首先確認你的Java環境是正常的

java -version

接著去Mojang的官網或者你的啟動器下載對應版本的server.jar
如果你懶得開瀏覽器 也可以直接用wget抓

# 以1.21.4為例,請自行替換版本連結
mkdir -p ~/minecraft-server && cd ~/minecraft-server
wget https://piston-data.mojang.com/v1/objects/4707d00eb834b446575d89a61a11b5d548d8c001/server.jar

上面的連結僅供參考
實際的下載連結請去Minecraft官網取得
每個版本的hash都不一樣 不要傻傻的複製我的連結

接著跟Windows一樣 第一次啟動讓它生成設定檔

java -Xmx2G -Xms1G -jar server.jar nogui

他會跑一下然後停住 因為你還沒同意eula
eula.txt裡面的false改成true

sed -i 's/eula=false/eula=true/' eula.txt

改完再跑一次就啟動了

java -Xmx2G -Xms1G -jar server.jar nogui
用systemd讓伺服器自動啟動

如果你想要讓伺服器在開機時自動啟動 或者掛了自動重開
可以寫一個systemd service

sudo tee /etc/systemd/system/minecraft.service << 'EOF'
[Unit]
Description=Minecraft Server
After=network.target

[Service]
User=minecraft
WorkingDirectory=/home/minecraft/minecraft-server
ExecStart=/usr/bin/java -Xmx4G -Xms2G -jar server.jar nogui
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable minecraft
sudo systemctl start minecraft

# 看看有沒有跑起來
sudo systemctl status minecraft

這樣伺服器就會在背景跑了
要看log的話可以用journalctl -u minecraft -f

server.properties 常用設定

啟動之後會在伺服器目錄下生成一個server.properties檔案
這裡面可以設定很多東西 列幾個常用的

# 伺服器port(預設25565)
server-port=25565

# 最大玩家數
max-players=20

# 遊戲難度(peaceful, easy, normal, hard)
difficulty=normal

# 遊戲模式(survival, creative, adventure, spectator)
gamemode=survival

# 世界種子碼(留空隨機生成)
level-seed=

# 伺服器描述(會顯示在伺服器列表)
motd=A Minecraft Server

# 是否啟用正版驗證(私服關掉 公服建議開)
online-mode=true

# 最大建築高度
max-build-height=319

# 視野距離(越大越吃效能)
view-distance=10

# 開啟命令方塊
enable-command-block=true

改完設定之後要重啟伺服器才會生效

如果你關了online-mode 任何人都可以用任何名字連進來
安全性會大幅下降 請自己斟酌

# 使用 Docker 架設Minecraft伺服器

這是筆者認為最簡單也最好用的方式
不用自己裝Java 不用擔心環境衝突
一個docker compose up -d就搞定了

這裡使用itzg/minecraft-server這個Image
這是目前社群維護最活躍的Minecraft Docker Image
支援原版、Forge、Fabric、Paper、Spigot等等一大堆

# 前置條件

你的機器上要先裝好Docker和Docker Compose
如果還沒裝的話可以參考我的Docker介紹文

# 原版伺服器

建一個資料夾放你的伺服器設定

mkdir -p ~/minecraft-docker && cd ~/minecraft-docker

建立docker-compose.yml

services:
  minecraft:
    image: itzg/minecraft-server
    container_name: minecraft
    ports:
      - "25565:25565"
    environment:
      EULA: "TRUE"
      TYPE: "VANILLA"
      VERSION: "1.21.4"
      MEMORY: "4G"
      VIEW_DISTANCE: 12
      MAX_PLAYERS: 20
      MOTD: "Welcome to my server"
      DIFFICULTY: "normal"
    volumes:
      - ./data:/data
    restart: unless-stopped
    tty: true
    stdin_open: true

然後一行指令搞定

docker compose up -d

就這樣 伺服器就跑起來了
所有的世界資料和設定檔都會存在./data資料夾裡

# 看log
docker compose logs -f

# 進入伺服器console
docker attach minecraft
# 按 Ctrl+P Ctrl+Q 退出(不要按Ctrl+C 那會關伺服器)

# Mod伺服器(Forge / Fabric)

只要改TYPE就好 其他都一樣

services:
  minecraft:
    image: itzg/minecraft-server
    container_name: minecraft
    ports:
      - "25565:25565"
    environment:
      EULA: "TRUE"
      TYPE: "FABRIC"
      VERSION: "1.21.4"
      MEMORY: "6G"
    volumes:
      - ./data:/data
    restart: unless-stopped

啟動之後 把你要裝的mod丟進./data/mods/資料夾
然後重啟容器就行了

# 丟完mod之後重啟
docker compose restart

Forge的話把TYPE改成FORGE就行
如果要指定Forge/Fabric的版本 可以加上FORGEVERSIONFABRICVERSION的環境變數
詳細的選項可以去看itzg的文件

# Paper / Spigot(插件伺服器)

想要用插件而不是mod的話
Paper是目前效能最好的選擇

services:
  minecraft:
    image: itzg/minecraft-server
    container_name: minecraft
    ports:
      - "25565:25565"
    environment:
      EULA: "TRUE"
      TYPE: "PAPER"
      VERSION: "1.21.4"
      MEMORY: "4G"
    volumes:
      - ./data:/data
    restart: unless-stopped

插件丟./data/plugins/裡面就好

Paper是Spigot的fork 效能更好而且向下相容Spigot的插件
除非你有特殊原因 不然建議直接用Paper

# 備份

既然都用Docker了 備份也可以用容器來做

services:
  minecraft:
    image: itzg/minecraft-server
    # ... 省略

  backup:
    image: itzg/mc-backup
    depends_on:
      - minecraft
    environment:
      BACKUP_INTERVAL: "24h"
      RCON_HOST: minecraft
      PRUNE_BACKUPS_DAYS: 7
    volumes:
      - ./data:/data:ro
      - ./backups:/backups

這樣每24小時會自動備份一次 並保留最近7天的備份

# Mod版本伺服器補充

不管你用哪個作業系統
裝Mod的伺服器流程其實都差不多
差別只在於你選的載入器(Forge或Fabric)

# Forge

  1. 前往Forge官網下載Installer
  2. 用Java執行Installer並選擇「Install Server」
  3. 指定安裝目錄
  4. 安裝完之後用生成的啟動腳本啟動(通常是run.shrun.bat
  5. 把mod丟進mods/資料夾
  6. 重啟伺服器

# Fabric

  1. 前往Fabric官網下載Installer
  2. 用Java執行Installer並選擇「Server」
  3. 選擇Minecraft版本和Fabric版本
  4. 指定安裝目錄
  5. 安裝完之後用start.shstart.bat啟動
  6. 把mod丟進mods/資料夾
  7. 重啟伺服器

Forge和Fabric的mod是不相容的
Forge的mod不能在Fabric上跑 反之亦然
選的時候先確認你要用的mod支援哪個載入器

# 結語

架Minecraft伺服器這件事情
說難不難 說簡單嘛 坑也是不少
尤其是網路環境的設定最容易卡人

如果你只是要跟三五好友私服玩玩
VPN方案最無腦 裝完連上就能玩
如果你想要認真一點長期經營
那建議直接上Docker + Paper + 固定IP
管理起來方便得多

總之 希望這篇文章能幫到正在爬文的你
有問題可以在下面留言 我看到會回
祝各位開服順利 不要被苦力怕炸掉