Use Cases

Hosting a Minecraft Server on Proxmox VE

Learn how to set up and optimize a Minecraft server on Proxmox VE, covering Java and Bedrock editions, resource allocation, server configuration, automated backups, and mod support.

ProxmoxR app icon

Managing Proxmox? Try ProxmoxR

Monitor and control your VMs & containers from your phone.

Try Free

Minecraft on Proxmox: The Ideal Setup

Proxmox VE is an excellent platform for hosting Minecraft servers. You can allocate dedicated CPU cores and memory to the game server, isolate it from other services, take snapshots before risky updates, and automate backups — all things that are difficult to do when running Minecraft directly on bare metal. This guide covers both Java Edition and Bedrock Edition deployments.

Java Edition vs Bedrock Edition

Java Edition is the most popular choice for self-hosted servers. It supports mods (Forge, Fabric), plugins (Paper, Spigot), and has the largest community. However, it is more resource-intensive due to the JVM.

Bedrock Edition runs natively on Windows, consoles, and mobile devices. The dedicated server binary is lighter on resources but has limited mod support. Choose Bedrock if most of your players use mobile or console clients.

Creating the VM

A VM is recommended over LXC for Minecraft because the JVM benefits from direct memory management and consistent CPU scheduling. Create a VM with these specifications:

# Create VM via CLI
qm create 120 \
  --name minecraft \
  --memory 8192 \
  --cores 4 \
  --cpu cputype=host \
  --scsihw virtio-scsi-single \
  --scsi0 local-lvm:50,iothread=1 \
  --net0 virtio,bridge=vmbr0 \
  --ostype l26 \
  --boot order=scsi0

# Allocate 4 cores — Minecraft is single-threaded for the main
# game loop, but Paper/Fabric use worker threads for chunk loading

Install Ubuntu Server 22.04 or Debian 12 as the guest OS. After installation, update the system and install Java:

# Install Java 21 (required for Minecraft 1.20.5+)
apt update && apt upgrade -y
apt install -y openjdk-21-jre-headless screen wget

Installing the Minecraft Server

Create a dedicated user and directory for the server:

# Create minecraft user
useradd -r -m -d /opt/minecraft -s /bin/bash minecraft

# Switch to minecraft user
su - minecraft

# Download Paper (recommended over vanilla for performance)
mkdir server && cd server
wget https://api.papermc.io/v2/projects/paper/versions/1.21.4/builds/latest/downloads/paper-1.21.4.jar -O paper.jar

# Accept EULA
echo "eula=true" > eula.txt

Server Configuration

The server.properties file controls all server behavior. Here are the key settings to tune:

# server.properties — key settings
server-port=25565
max-players=20
view-distance=10
simulation-distance=8
max-tick-time=60000
online-mode=true
difficulty=normal
gamemode=survival
motd=\u00a76Welcome to our Proxmox-hosted server!
spawn-protection=16
enable-command-block=false

For memory allocation, create a startup script that sets JVM flags optimized for Minecraft:

#!/bin/bash
# /opt/minecraft/server/start.sh

java -Xms4G -Xmx6G \
  -XX:+UseG1GC \
  -XX:+ParallelRefProcEnabled \
  -XX:MaxGCPauseMillis=200 \
  -XX:+UnlockExperimentalVMOptions \
  -XX:+DisableExplicitGC \
  -XX:G1NewSizePercent=30 \
  -XX:G1MaxNewSizePercent=40 \
  -XX:G1HeapRegionSize=8M \
  -XX:G1ReservePercent=20 \
  -XX:G1MixedGCCountTarget=4 \
  -XX:InitiatingHeapOccupancyPercent=15 \
  -XX:G1MixedGCLiveThresholdPercent=90 \
  -jar paper.jar --nogui

Running as a systemd Service

Create a systemd unit file so the server starts automatically and can be managed cleanly:

# /etc/systemd/system/minecraft.service
[Unit]
Description=Minecraft Server
After=network.target

[Service]
User=minecraft
WorkingDirectory=/opt/minecraft/server
ExecStart=/bin/bash /opt/minecraft/server/start.sh
ExecStop=/usr/bin/screen -S mc -X stuff "stop\n"
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target
# Enable and start the service
systemctl daemon-reload
systemctl enable minecraft
systemctl start minecraft

Automated Backups with Cron

World corruption can happen during crashes or updates. Schedule regular backups of the world data using a cron job that pauses world saving during the copy:

#!/bin/bash
# /opt/minecraft/backup.sh
BACKUP_DIR="/opt/minecraft/backups"
SERVER_DIR="/opt/minecraft/server"
TIMESTAMP=$(date +%Y%m%d-%H%M%S)

mkdir -p "$BACKUP_DIR"

# Tell the server to flush and pause saving
screen -S mc -X stuff "save-all\n"
sleep 5
screen -S mc -X stuff "save-off\n"
sleep 2

# Create compressed backup
tar -czf "$BACKUP_DIR/world-$TIMESTAMP.tar.gz" -C "$SERVER_DIR" world world_nether world_the_end

# Resume saving
screen -S mc -X stuff "save-on\n"

# Delete backups older than 7 days
find "$BACKUP_DIR" -name "*.tar.gz" -mtime +7 -delete
# Add to crontab (runs every 6 hours)
crontab -e
0 */6 * * * /opt/minecraft/backup.sh >> /var/log/mc-backup.log 2>&1

On top of in-game backups, you can also snapshot the entire VM from Proxmox before major updates — giving you a full rollback point at the hypervisor level.

Installing Mods and Plugins

Paper supports plugins from the Bukkit/Spigot ecosystem. Simply drop .jar files into the plugins/ directory and restart. For client-side mods, Fabric with the Fabric API is the modern choice:

# Essential Paper plugins for server management
plugins/
├── EssentialsX.jar        # Teleport, homes, warps, kits
├── LuckPerms.jar          # Permission management
├── WorldGuard.jar         # Region protection
├── CoreProtect.jar        # Block logging and rollback
└── ViaVersion.jar         # Multi-version client support

Monitoring and Remote Management

Minecraft servers can occasionally hang or consume excessive memory. Keeping an eye on the VM's resource usage from Proxmox helps you catch problems early. If you run your Proxmox homelab remotely or want quick status checks from your phone, ProxmoxR can show you whether the Minecraft VM is running and how much memory it is consuming — handy for those times when players report lag and you are away from your desk.

Conclusion

Proxmox provides a rock-solid foundation for Minecraft hosting. Dedicated resources prevent other services from stealing CPU during peak play, snapshots protect against bad updates, and automated backups ensure your world survives any disaster. With Paper and the right JVM flags, even a modest 4-core VM can comfortably host 20 or more players.

Take Proxmox management mobile

All the features discussed in this guide — accessible from your phone with ProxmoxR. Real-time monitoring, power control, firewall management, and more.

ProxmoxR

Manage Proxmox from your phone

Monitor, control, and manage your clusters on the go.

Free 7-day trial · No credit card required