Setup a Minecraft server on AWS EC2 with Docker
使用 Docker 在 AWS EC2 上建構 Minecraft 伺服器
前言
Minecraft 是一款全世界最有名的沙盒遊戲,早些年和朋友一起遊玩這款遊戲時連線的方式還是於個人電腦區域網路(LAN)連線,使用 Hamachi 模擬區域網路達成連線,但很明顯有各式各樣的侷限性。
這篇文章探討藉由不同的技術(AWS EC2、Docker)實現快速自建 MC 伺服器的目的:
- 穩定獨立專用的伺服器
- 更廣更快的設備擴充彈性
- 更靈活快速的建構伺服器
創建 EC2 虛擬伺服器
Amazon Elastic Compute Cloud (EC2) 讓我們設置特定規格的機器在雲端上,可以根據需求調整,本次流程如下,基本與官方部落格範例差不多:
- 登入 AWS Console
- 在右上角選擇部屬伺服器所在區域(Tokyo
ap-northeast-1
亞洲伺服器) - 搜尋 EC2 服務並進入 Dashboard,點擊 Launch Instance
- 給新 EC2 實例名稱(minecraft),選擇作業系統映像(Ubuntu Server 64-bit x86)
- 選擇 EC2 實例種類,未來硬體規格不夠再升級也不是問題(t3.small)
- 創建新的 key pair 方便未來外部透過 SSH 訪問該伺服器(預設,命名隨意)
- Network settings 關閉 Auto-assign public IP(可選,為了讓每次伺服器 IP 都是穩定而非臨時指派,可以晚點額外設置 Elastic IPs)
- Network settings 新增 Security group rule 2 (TCP, 25565, 0.0.0.0/0) 開放讓 Minecraft 所在的 port 25565 可以通行
- Configure store 選擇適當的容量(20 GB)
設置 Elastic IPs 實現實例對外固定 IP
如果先前關閉 Auto-assign public IP,可以需要透過 Elastic IPs 來實現固定對外 IP。
- Allocate Elastic IP address (預設 Allocate)
- Associate Elastic IP address (選擇先前創造的實例)
都完成後應該實例的詳細資料中 Public IPv4 address 會存在。

進入 EC2 實例
可以選擇各種方式連接,這裡直接在瀏覽器上使用 EC2 Instance Connect。如果使用 SSH 連線的話,先前設定的 key pair 會派上用場。
- 選取實例
- Connect
- EC2 Instance Connect

設置 EC2 實例
- 更新套件
sudo apt update
- 安裝 docker - Install using the apt repository
- Manage Docker as a non-root user
執行 Minecraft Docker Image
# 創建與進入 mc-docker 資料夾mkdir mc-dockercd mc-docker# 創立 docker-compose.ymlnano docker-compose.yml
根據 itzg/docker-minecraft-server 設置對應的 docker 映像。
services: minecraft: image: itzg/minecraft-server container_name: minecraft ports: - "25565:25565" environment: EULA: "TRUE" VERSION: "1.21.5" volumes: - mc-data:/data restart: unless-stopped
volumes: mc-data:
執行:
docker compose up -ddocker compose logs -f
總結
如果不熟悉 Minecraft 伺服器,可以先本地設置好 Docker 容器跑起來玩玩看,確定了再丟上 EC2 主持也完全沒有問題。
- 有備份需求可以參考看看 docker-mc-backup
- 於 Docker 內發送伺服器指令具體可以參考
itzg/minecraft-server
的 Sending commands - 模組插件安裝可參考 Working with mods and plugins,對於從 CurseForge 與 Modrinth 自動抓取模組都有很好的支援
延伸閱讀
- HOW TO RUN MINECRAFT ON DOCKER | RUNNING MINECRAFT IN PRODUCTION PART 1 - The_Sudo
- Setting up a Minecraft Java server on Amazon EC2 - AWS
- Cost optimize your Minecraft Java EC2 Server - AWS