Skip to content
Logo
Table of contents
VeryCloud
DocumentationGames servers

Migrate a Minecraft server to VeryCloud

Migrate a Minecraft server to VeryCloud

Move a Minecraft server (Vanilla, Paper, Spigot, Forge, Fabric or modpack) from another host to a VeryCloud VPS or Wisp panel without losing progress. Worlds, plugins, configs and permissions included.

Category
Games servers
Level
Easy
Reading time
6 min
Published
May 16, 2026

Introduction

Migrating a Minecraft server is simpler than migrating a FiveM server: everything is in one folder, and almost all configurations are text files (.yml, .properties, .json). This guide covers the following cases:

  • Migration from another host via FTP/SFTP
  • Migration from a self-hosted VPS
  • Migration to the VeryCloud Wisp panel (panel.verycloud.fr)
  • Migration to an independent Linux VPS

Prerequisites

  • SFTP access to source server
  • Access to destination server (Wisp panel or VPS root SSH)
  • Java 17+ installed on destination (for Minecraft 1.18+) or Java 21 (for 1.21+)
  • Knowledge of the exact Minecraft version of source server

Step 1: Identify version and specifics

On the source server, note:

  • Server type: Vanilla, Paper, Spigot, Bukkit, Forge, Fabric, Velocity, BungeeCord
  • Minecraft version: 1.20.4, 1.21.1, etc.
  • Installed plugins/mods: full list
  • Folder size: du -sh . (the world is usually 70% of the total)

This info determines the Java version and .jar to use on the destination.

Step 2: Prepare the destination server

Option A: On Wisp (VeryCloud panel)

On https://panel.verycloud.fr, order or use an existing Minecraft server. Wisp pre-configures Paper / Forge / Fabric based on your needs.

Option B: On a Linux VPS

# Install Java 21
sudo apt update
sudo apt install -y openjdk-21-jre-headless screen

# Check
java -version

# Create the minecraft user
sudo useradd -m -s /bin/bash minecraft
sudo passwd minecraft
sudo su - minecraft

# Prepare the folder
mkdir -p ~/server && cd ~/server

Download the right .jar:

# Paper 1.21
wget -O server.jar "https://api.papermc.io/v2/projects/paper/versions/1.21.1/builds/132/downloads/paper-1.21.1-132.jar"

Launch once to generate files:

java -Xms2G -Xmx4G -jar server.jar nogui

Accept the EULA:

echo "eula=true" > eula.txt

Step 3: Stop the source server

Crucial: completely stop the source server before transferring the world. Otherwise, the level.dat file is locked and the backup will be corrupted.

# In the source server console
stop

Step 4: Transfer files

Method 1: Direct SCP (if VPS → VPS)

From your local machine or directly between servers:

# On source server
cd /path/to/server
tar -czf minecraft-backup.tar.gz \
  --exclude='logs' \
  --exclude='cache' \
  --exclude='crash-reports' \
  world/ world_nether/ world_the_end/ \
  plugins/ config/ \
  server.properties bukkit.yml spigot.yml paper-global.yml \
  ops.json banned-players.json banned-ips.json whitelist.json

Transfer:

scp minecraft-backup.tar.gz root@DEST_IP:/tmp/

Method 2: SFTP (most universal)

Use FileZilla or WinSCP:

  • Source: connect to the old host's SFTP
  • Destination: connect to Wisp SFTP (panel.verycloud.fr → Server → SFTP Details) or to VPS

Download everything locally, then re-upload. Slower but works everywhere.

Method 3: rsync (fastest for large volumes)

rsync -avz --progress \
  --exclude='logs' --exclude='cache' \
  root@SOURCE_SERVER:/path/server/ \
  /home/minecraft/server/

Step 5: Extract and restore

On destination:

cd ~/server
tar -xzf /tmp/minecraft-backup.tar.gz
chown -R minecraft:minecraft .

Step 6: Adapt the configuration

server.properties

nano ~/server/server.properties

Check:

server-ip=
server-port=25565
max-players=20
view-distance=10
motd=Welcome to \u00a7b\u00a76VeryCloud

Leave server-ip= empty (the VPS IP will be used).

LuckPerms permissions (or other)

If you use LuckPerms, your data is in MySQL or SQLite. If SQLite, the file luckperms-h2-v2.mv.db should have been transferred. If MySQL, export the database and import it:

# On source
mysqldump -u user -p luckperms_db > luckperms.sql

# On destination
mysql -u user -p luckperms_db < luckperms.sql

Then adapt the connection string in plugins/LuckPerms/config.yml.

EssentialsX, EconomyAPI, etc.

Most plugins store their data in plugins/PluginName/. Verify these folders have been copied.

Step 7: Adapt the launch script

Create a startup script with the right JVM options:

nano ~/server/start.sh
#!/bin/bash
cd "$(dirname "$0")"
java -Xms4G -Xmx8G \
  -XX:+UseG1GC \
  -XX:+ParallelRefProcEnabled \
  -XX:MaxGCPauseMillis=200 \
  -XX:+UnlockExperimentalVMOptions \
  -XX:+DisableExplicitGC \
  -XX:+AlwaysPreTouch \
  -XX:G1NewSizePercent=30 \
  -XX:G1MaxNewSizePercent=40 \
  -XX:G1HeapRegionSize=8M \
  -XX:G1ReservePercent=20 \
  -XX:G1HeapWastePercent=5 \
  -XX:G1MixedGCCountTarget=4 \
  -XX:InitiatingHeapOccupancyPercent=15 \
  -XX:G1MixedGCLiveThresholdPercent=90 \
  -XX:G1RSetUpdatingPauseTimePercent=5 \
  -XX:SurvivorRatio=32 \
  -XX:+PerfDisableSharedMem \
  -XX:MaxTenuringThreshold=1 \
  -Dusing.aikars.flags=https://mcflags.emc.gs \
  -Daikars.new.flags=true \
  -jar server.jar nogui

These JVM flags ("Aikar's flags") are known to drastically optimize Minecraft servers.

chmod +x start.sh

Step 8: First startup

cd ~/server
./start.sh

Watch the console: all plugins should start with Enabled. Worlds should load without errors.

Connect with your Minecraft client: DEST_IP:25565.

Check:

  • Your character finds its position, inventory, hotbar
  • Filled chests are intact
  • Admin / OP permissions work
  • Plugins respond (/help, /plot info, /money, etc.)

Step 9: Configure systemd service (on VPS)

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

[Service]
Type=forking
User=minecraft
WorkingDirectory=/home/minecraft/server
ExecStart=/usr/bin/screen -dmS minecraft /home/minecraft/server/start.sh
ExecStop=/usr/bin/screen -S minecraft -X stuff "say Stopping in 10 seconds...^Mstop^M"
TimeoutStopSec=30
Restart=on-failure
RestartSec=10

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

Access the live console:

sudo -u minecraft screen -r minecraft

Step 10: Update DNS

If you have a domain like play.your-server.com, update the record:

A     play.your-server.com    →   VERYCLOUD_VPS_IP

To use a non-standard port without forcing it on players, create an SRV record:

SRV   _minecraft._tcp.play.your-server.com  →  0 5 25565 play.your-server.com

Troubleshooting

"Outdated server"

The .jar version doesn't match your client. Download the exact version of your source server.

Plugins don't start

[ERROR] Could not load 'plugins/PluginX.jar'

Classic cause: plugin version not compatible with Paper/Spigot 1.21. Download the latest version on SpigotMC / Modrinth.

Corrupted worlds

If you transferred the world while server was running, it may be corrupted. Backup and use MCAselector to repair damaged chunks.

Significant lag

Check allocated RAM (-Xmx). Modern Minecraft likes at least 4 GB. For 20 players: 6-8 GB.

Inspect ticks:

# In console
/tps

20.0 = optimal. Below 18 = noticeable lag.

Useful commands

# Live console (VPS)
sudo -u minecraft screen -r minecraft

# Exit without killing: Ctrl+A then D

# Live logs
tail -f ~/server/logs/latest.log

# Quick backup
tar -czf backup-$(date +%F).tar.gz ~/server/world ~/server/world_nether ~/server/world_the_end

# Disk space used
du -sh ~/server/*

# List plugins
ls ~/server/plugins/*.jar

Conclusion

Your Minecraft server is migrated without loss. Going further:

  • Configure daily automatic backups (cron + tar)
  • Install an anti-cheat (Vulcan, Matrix) if the server is public
  • If you manage multiple servers (lobby, survival, creative), switch to a Velocity/BungeeCord proxy

VeryCloud offers a free migration service on Minecraft Wisp and Gaming VPS plans: open a ticket and we'll handle it.

Resources

Join our Discord community server

For any questions, suggestions, or just to chat with the community, join us on Discord!

900+Members