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