Add Phase 13: Minecraft server VMs on R720
Documents creating four Minecraft VMs (201-204) on the second Proxmox host (R720), following the same wizard-driven setup style as Phases 11-12 but without GPU/Coral/raw-disk passthrough, which only applies to the R730xd. Adds matching VM config templates.
This commit is contained in:
@@ -21,6 +21,7 @@ one document.
|
||||
- [Phase 10 — GPU Passthrough Setup](#phase-10--gpu-passthrough-setup)
|
||||
- [Phase 11 — Create the VMs](#phase-11--create-the-vms)
|
||||
- [Phase 12 — Deploy Frigate in VM 101](#phase-12--deploy-frigate-in-vm-101)
|
||||
- [Phase 13 — Minecraft Server VMs (R720)](#phase-13--minecraft-server-vms-r720)
|
||||
|
||||
---
|
||||
|
||||
@@ -3261,6 +3262,219 @@ stats. Navigate to **System → Stats** to confirm:
|
||||
|
||||
---
|
||||
|
||||
## Phase 13 — Minecraft Server VMs (R720)
|
||||
|
||||
**What this phase does:** Creates four Minecraft server VMs on a second,
|
||||
separate Proxmox host — a Dell R720 — using the same wizard-driven VM setup
|
||||
as Phases 11/12, but without any of the GPU passthrough, Coral USB, or raw
|
||||
drive passthrough work. Minecraft needs CPU, RAM, and disk — nothing else.
|
||||
|
||||
**Hardware (this host, not the R730xd):**
|
||||
|
||||
| Component | Detail |
|
||||
|-----------|--------|
|
||||
| Server | Dell PowerEdge R720 |
|
||||
| CPU | 2x Intel Xeon E5-2697 v2 (12c/24t each — 24 cores / 48 threads total) |
|
||||
| RAM | 125 GiB |
|
||||
| Storage | 5x spinning HDD behind PERC H710 (no SSD) — `local-lvm` |
|
||||
| Network | `eno1` → `vmbr0`, single 1GbE link |
|
||||
| Proxmox | VE 8.1.3 |
|
||||
|
||||
> **No GPU passthrough, no Coral, no raw disk passthrough on this host.**
|
||||
> Skip `gpu-passthrough-setup.sh`, `build-bay-map.sh`, and `perc-nonraid.sh`
|
||||
> entirely — those only apply to the R730xd's Frigate/storage workload.
|
||||
> VM disks here are plain `local-lvm` virtual disks, same as VM 102 in the
|
||||
> R730xd setup.
|
||||
|
||||
> **All HDDs, no SSD.** Minecraft autosaves and region-file writes are small
|
||||
> and frequent. Expect more I/O wait under heavy load (many players, modded
|
||||
> redstone/farms) than an SSD host would show. If a server feels laggy under
|
||||
> load, check `iostat -x 2` on the Proxmox host before assuming it's CPU.
|
||||
|
||||
**Prerequisites:**
|
||||
- VMs 101, 102, 106 removed from this host (freed full 24c/48t, 125GiB, and
|
||||
all five disks for this phase)
|
||||
- Ubuntu Server 24.04.4 LTS ISO uploaded to this host's `local` storage
|
||||
(same download step as Phase 11, Step 11.1/11.2 — repeat on the R720)
|
||||
|
||||
---
|
||||
|
||||
### Step 13.1 — Create VM 201 (Survival/Paper #1) via the wizard
|
||||
|
||||
In the R720's Proxmox web UI, click **Create VM**.
|
||||
|
||||
**Tab: General**
|
||||
|
||||
| Field | Value |
|
||||
|-------|-------|
|
||||
| VM ID | 201 |
|
||||
| Name | mc-survival-1 |
|
||||
|
||||
**Tab: OS**
|
||||
|
||||
| Field | Value |
|
||||
|-------|-------|
|
||||
| ISO image | ubuntu-24.04.4-live-server-amd64.iso |
|
||||
| OS Type | Linux |
|
||||
| Version | 6.x - 2.6 Kernel |
|
||||
|
||||
**Tab: System**
|
||||
|
||||
| Field | Value |
|
||||
|-------|-------|
|
||||
| Graphic card | Default |
|
||||
| Machine | i440fx |
|
||||
| BIOS | SeaBIOS |
|
||||
| SCSI Controller | VirtIO SCSI Single |
|
||||
| Qemu Agent | checked |
|
||||
|
||||
> **Why SeaBIOS/i440fx here instead of OVMF/q35 like Phases 11–12?** Those
|
||||
> were required for GPU passthrough on the R730xd. Nothing on this host is
|
||||
> being passed through, so there's no reason to take on UEFI's extra
|
||||
> complexity (Secure Boot prompts, EFI disk, etc.).
|
||||
|
||||
**Tab: Disks**
|
||||
|
||||
| Field | Value |
|
||||
|-------|-------|
|
||||
| Bus/Device | SCSI / 0 |
|
||||
| Storage | local-lvm |
|
||||
| Disk size (GiB) | 20 |
|
||||
| Cache | Write back |
|
||||
| Discard | checked |
|
||||
| IO thread | checked |
|
||||
|
||||
**Tab: CPU**
|
||||
|
||||
| Field | Value |
|
||||
|-------|-------|
|
||||
| Sockets | 1 |
|
||||
| Cores | 4 |
|
||||
| Type | host |
|
||||
|
||||
**Tab: Memory**
|
||||
|
||||
| Field | Value |
|
||||
|-------|-------|
|
||||
| Memory (MiB) | 8192 |
|
||||
| Ballooning | unchecked |
|
||||
|
||||
> **Why disable ballooning?** Minecraft's JVM heap grabs and holds memory.
|
||||
> Letting Proxmox reclaim "idle" RAM from the VM fights with the JVM and can
|
||||
> trigger GC pauses or swapping inside the guest. Fix the allocation instead.
|
||||
|
||||
**Tab: Network**
|
||||
|
||||
| Field | Value |
|
||||
|-------|-------|
|
||||
| Bridge | vmbr0 |
|
||||
| Model | VirtIO (paravirtualized) |
|
||||
| Firewall | checked |
|
||||
|
||||
Click **Finish**, then **Start** the VM and install Ubuntu Server normally
|
||||
(same installer flow as Phase 11 — set hostname `mc-survival-1`, enable
|
||||
OpenSSH server during install).
|
||||
|
||||
---
|
||||
|
||||
### Step 13.2 — Repeat for VMs 202–204
|
||||
|
||||
Same wizard steps as 13.1, changing only VM ID/name, cores, and memory:
|
||||
|
||||
| VM ID | Name | Cores | Memory | Disk | Notes |
|
||||
|-------|------|-------|--------|------|-------|
|
||||
| 201 | mc-survival-1 | 4 | 8192 MiB | 20G | Paper, vanilla-like |
|
||||
| 202 | mc-survival-2 | 4 | 8192 MiB | 20G | Paper, vanilla-like |
|
||||
| 203 | mc-modded | 6 | 12288 MiB | 30G | Forge/NeoForge modpack |
|
||||
| 204 | mc-minigames | 2 | 4096 MiB | 15G | Creative/minigames |
|
||||
|
||||
This commits 16 of 24 cores and 32 of 125 GiB RAM — leaving headroom for
|
||||
Proxmox itself and room to add a fifth server later without resizing
|
||||
anything.
|
||||
|
||||
---
|
||||
|
||||
### Step 13.3 — Install Java and the server jar (inside each VM)
|
||||
|
||||
SSH into each VM and run:
|
||||
|
||||
```bash
|
||||
sudo apt update && sudo apt install -y openjdk-21-jre-headless
|
||||
sudo useradd -m -s /bin/bash minecraft
|
||||
sudo mkdir -p /opt/minecraft
|
||||
sudo chown minecraft:minecraft /opt/minecraft
|
||||
```
|
||||
|
||||
Download the server jar as the `minecraft` user (Paper for 201/202/204,
|
||||
the modpack's server pack for 203), accept the EULA:
|
||||
|
||||
```bash
|
||||
sudo -u minecraft bash -c '
|
||||
cd /opt/minecraft
|
||||
curl -o server.jar "<paper or modpack server jar URL>"
|
||||
echo "eula=true" > eula.txt
|
||||
'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Step 13.4 — Create a systemd service per VM
|
||||
|
||||
```bash
|
||||
sudo tee /etc/systemd/system/minecraft.service <<'EOF'
|
||||
[Unit]
|
||||
Description=Minecraft Server
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
User=minecraft
|
||||
WorkingDirectory=/opt/minecraft
|
||||
ExecStart=/usr/bin/java -Xms2G -Xmx<HEAP> -jar server.jar nogui
|
||||
Restart=on-failure
|
||||
RestartSec=10
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable --now minecraft.service
|
||||
```
|
||||
|
||||
Set `-Xmx` to roughly RAM minus 1.5–2 GiB headroom for the OS (e.g. 6G heap
|
||||
on the 8 GiB VMs, 10G heap on the 12 GiB VM, 2.5G heap on the 4 GiB VM).
|
||||
|
||||
---
|
||||
|
||||
### Step 13.5 — Open ports
|
||||
|
||||
One port per server, forwarded from the router/firewall to each VM's IP:
|
||||
|
||||
| VM | Port |
|
||||
|----|------|
|
||||
| 201 | 25565 |
|
||||
| 202 | 25566 |
|
||||
| 203 | 25567 |
|
||||
| 204 | 25568 |
|
||||
|
||||
```bash
|
||||
sudo ufw allow 25565/tcp # adjust per VM
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Phase 13 complete — summary
|
||||
|
||||
| What is done | Status |
|
||||
|---|---|
|
||||
| VMs 201–204 created with fixed (non-ballooned) CPU/RAM | ✓ |
|
||||
| Ubuntu Server installed in each, SSH access confirmed | ✓ |
|
||||
| Java + server jar installed, EULA accepted | ✓ |
|
||||
| systemd service running each server, restarts on crash | ✓ |
|
||||
| Ports forwarded per server | ✓ |
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### GPU not passing through — still shows `nouveau`
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
# Proxmox VM 201 — Minecraft Survival #1 (R720)
|
||||
#
|
||||
# Copy to /etc/pve/qemu-server/201.conf on the R720 host.
|
||||
# No GPU, no USB, no raw drive passthrough — plain local-lvm disk.
|
||||
|
||||
agent: 1
|
||||
bios: seabios
|
||||
boot: order=scsi0
|
||||
cores: 4
|
||||
cpu: host
|
||||
machine: i440fx
|
||||
memory: 8192
|
||||
balloon: 0
|
||||
name: mc-survival-1
|
||||
numa: 0
|
||||
ostype: l26
|
||||
scsihw: virtio-scsi-single
|
||||
sockets: 1
|
||||
|
||||
# OS + world disk
|
||||
scsi0: local-lvm:vm-201-disk-0,cache=writeback,discard=on,iothread=1,size=20G
|
||||
|
||||
# Network
|
||||
net0: virtio,bridge=vmbr0,firewall=1
|
||||
@@ -0,0 +1,24 @@
|
||||
# Proxmox VM 202 — Minecraft Survival #2 (R720)
|
||||
#
|
||||
# Copy to /etc/pve/qemu-server/202.conf on the R720 host.
|
||||
# No GPU, no USB, no raw drive passthrough — plain local-lvm disk.
|
||||
|
||||
agent: 1
|
||||
bios: seabios
|
||||
boot: order=scsi0
|
||||
cores: 4
|
||||
cpu: host
|
||||
machine: i440fx
|
||||
memory: 8192
|
||||
balloon: 0
|
||||
name: mc-survival-2
|
||||
numa: 0
|
||||
ostype: l26
|
||||
scsihw: virtio-scsi-single
|
||||
sockets: 1
|
||||
|
||||
# OS + world disk
|
||||
scsi0: local-lvm:vm-202-disk-0,cache=writeback,discard=on,iothread=1,size=20G
|
||||
|
||||
# Network
|
||||
net0: virtio,bridge=vmbr0,firewall=1
|
||||
@@ -0,0 +1,25 @@
|
||||
# Proxmox VM 203 — Minecraft Modded (R720)
|
||||
#
|
||||
# Copy to /etc/pve/qemu-server/203.conf on the R720 host.
|
||||
# No GPU, no USB, no raw drive passthrough — plain local-lvm disk.
|
||||
# Larger allocation — modpacks (Forge/NeoForge) need more heap than vanilla/Paper.
|
||||
|
||||
agent: 1
|
||||
bios: seabios
|
||||
boot: order=scsi0
|
||||
cores: 6
|
||||
cpu: host
|
||||
machine: i440fx
|
||||
memory: 12288
|
||||
balloon: 0
|
||||
name: mc-modded
|
||||
numa: 0
|
||||
ostype: l26
|
||||
scsihw: virtio-scsi-single
|
||||
sockets: 1
|
||||
|
||||
# OS + world disk
|
||||
scsi0: local-lvm:vm-203-disk-0,cache=writeback,discard=on,iothread=1,size=30G
|
||||
|
||||
# Network
|
||||
net0: virtio,bridge=vmbr0,firewall=1
|
||||
@@ -0,0 +1,25 @@
|
||||
# Proxmox VM 204 — Minecraft Minigames/Creative (R720)
|
||||
#
|
||||
# Copy to /etc/pve/qemu-server/204.conf on the R720 host.
|
||||
# No GPU, no USB, no raw drive passthrough — plain local-lvm disk.
|
||||
# Smallest allocation — lighter player count / simpler worlds.
|
||||
|
||||
agent: 1
|
||||
bios: seabios
|
||||
boot: order=scsi0
|
||||
cores: 2
|
||||
cpu: host
|
||||
machine: i440fx
|
||||
memory: 4096
|
||||
balloon: 0
|
||||
name: mc-minigames
|
||||
numa: 0
|
||||
ostype: l26
|
||||
scsihw: virtio-scsi-single
|
||||
sockets: 1
|
||||
|
||||
# OS + world disk
|
||||
scsi0: local-lvm:vm-204-disk-0,cache=writeback,discard=on,iothread=1,size=15G
|
||||
|
||||
# Network
|
||||
net0: virtio,bridge=vmbr0,firewall=1
|
||||
Reference in New Issue
Block a user