SSD Nodes Learn 🎉 VPS from $5.50/mo
How to do am Matt ConnorBy Matt Connor · Updated 2026-08-13

How to choose VPS for game server wey go work

VPS for game server need fast single-core CPU, enough RAM, open ports and systemd restarts. Learn sizing, backups, and why server location controls latency.

Wich kind gaming VPS you mean?

VPS for game servers na good buy for one work: to run dedicated server wey you and your friends go connect to from una own machines. E no good for the other thing wey people dey mean when dem talk this phrase: to play the game directly for the VPS through remote desktop. Both work need different hardware. Dedicated server need one fast CPU core and enough RAM to hold the world. Playing need GPU (graphics processing unit), and standard VPS plan no get one.

Everything below na about the first work. The second one worth make you use two minutes check am, because plenty people dey buy wrong box for am.

Why you no fit play games for VPS

Standard VPS dey give you virtual CPU cores but no graphics card. Nothing dey pass through from the physical host, so game no get hardware renderer to use. You fit see wetin you actually get:

sudo apt install -y pciutils
lspci | grep -iE "vga|3d"

The answer na virtual display adapter, like Cirrus Logic or virtio GPU device. E dey there so provider web console fit show you screen, but e no get 3D acceleration behind am. If you install desktop and VNC server on top, glxinfo -B go report say e renderer na llvmpipe, wey be Mesa software renderer wey dey run for CPU. Modern 3D game wey CPU dey draw go run at only few frames per second, so e no playable before anything even comot the box. Windows instances get the same problem from another side. Many titles go exit when dem launch am and complain say dem no fit create Direct3D device, because no display adapter dey available to create am on.

The second problem na the trip back to you. If you dey play for remote box, every frame go encode to video, send through internet, then decode for your screen. This add encoding and decoding time on top of the game's own input lag, and RDP and VNC na desktop tools, no be tools wey dem design for 60 frames per second movement. Cloud gaming services solve this with real GPU hardware and purpose-built streaming protocol. Plain VPS no get either one. If you wan play, rent GPU time. If you wan host, continue reading.

Game server wey dey dedicated actually need

Game server na simulation loop. E dey keep the world for memory and move am forward fixed number of times every second. E then send each player wey connect the part of the world wey dem fit see.

This structure na wetin decide the hardware. The loop mostly dey run for one thread, so core speed matter pass core count. The world dey live for memory, so RAM usually na the first limit wey you go reach. Disk quiet during play, but e dey busy when game dey load and save. Your network path na wetin set the ping, and no plan tier fit change am.

Single core speed pass core count

Most game servers dey advance the world for one main thread. Minecraft tick loop and Source engine server frame both dey work like this. That tick get deadline. Minecraft Java dey run 20 ticks per second, so each tick get 50 milliseconds budget. When the work no fit inside, server go print exactly this:

[12:04:51] [Server thread/WARN]: Can't keep up! Is the server overloaded? Running 2547ms or 50 ticks behind

That line mean say one thread don run out of time. Adding more cores no give that thread extra time. Plan wey get 2 fast vCPUs go hold tick rate wey plan wey get 8 slow vCPUs go drop, because na only one of those 8 dey do the work wey matter.

Measure single thread speed before you commit to anything:

sudo apt install -y sysbench
sysbench cpu --cpu-max-prime=20000 --threads=1 run

Read the events per second line. The number no mean anything by itself; e only useful for comparison. So run am for two candidate plans and put the results side by side. Full VPS benchmark run cover disk and network the same way.

Extra cores still get use. Dem go run the second game server, the database, the nightly backup, and the chunk pre-generator without taking time from the tick thread. Server software don also learn how to spread work, and Paper, one popular Minecraft server fork, dey move some work away from the main tick thread. So the better shape to buy na few fast cores, not plenty slow ones.

One number no dey appear for plan page, and e decide whether the fast core wey you pay for really belong to you:

vmstat 1 5

The st column na the percentage of time your virtual CPU dey ready to run, but the physical host give the core to another person. If st stay above few percent, e mean say the host dey oversell resources. Players go feel am as stutter while top for your box still dey show idle CPU, because that idle time no be your own to use.

Game server need how much RAM?

ChartCommon starting RAM per game server (published guidance, not a measurement)
The data behind this chart
[
  {
    "label": "Minecraft Java, vanilla",
    "players": 10,
    "ram_gb": 2
  },
  {
    "label": "Minecraft Java, large modpack",
    "players": 10,
    "ram_gb": 8
  },
  {
    "label": "Valheim",
    "players": 10,
    "ram_gb": 4
  },
  {
    "label": "Palworld",
    "players": 32,
    "ram_gb": 16
  }
]

Na the starting allocations wey the game and modpack documentation publish, as of August 2026. Dem na guidance, no be numbers wey dem measure for one particular box. Vanilla Minecraft Java dey comfortable with 2 GB heap for around 10 players. The same number of players for large modpack need 8 GB, because the mods add entities and generated structures wey all dey live inside that heap. Valheim own listed minimum na 2 GB, but operators wey get small world report say the process dey settle near 3 GB, so 4 GB na sensible place to start. Palworld na the outlier with 16 GB for its 32 player maximum, na wetin Pocketpair recommend.

RAM no dey scale with connections. E dey scale with loaded world. Each player dey keep the region around dem loaded, so two players wey stand together cost far less than two players wey dey explore opposite corners of the map. Na why “RAM per player” na only rough guide, while “RAM per active area” na the real driver. Na also why small group wey like exploring fit outgrow plan wey dem size for twice their number.

Java servers need two extra rules. Set minimum and maximum heap to the same value so JVM no go pause to resize am:

java -Xms4G -Xmx4G -jar server.jar nogui

Then leave headroom. JVM dey use memory outside the heap wey you give am, for thread stacks and native buffers, and kernel need page cache to read world files quickly. For 6 GB box, 4 GB heap make sense; 6 GB heap no make sense.

The two memory failures dey look completely different, so learn both strings. Heap wey too small dey throw error inside Java, and server usually continue to limp:

java.lang.OutOfMemoryError: Java heap space

Heap wey bigger than the box go make the whole process get killed from outside. Console go show only Killed, and evidence dey inside kernel log:

sudo dmesg -T | grep -i "out of memory"

Adding swap go stop the kill, but e no go fix anything. Tick loop wey need read world back from swap go miss every deadline, so your players go get frozen server instead of crashed server.

One version note, current as of August 2026: Minecraft Java 1.20.5 and later need Java 21. Older runtime fit start, then fail with unsupported class file version error. The error dey look like compiler message, and e dey confuse everybody the first time dem see am.

sudo apt install -y openjdk-21-jre-headless
java -version

Disk speed matter for game server?

E no matter as much as people dey expect while game dey run, but e matter plenty for 2 specific times. System read the world enter memory when e start, then write am back during autosave. So disk speed show as slow boot and pause when save dey run. For the time between dem, RAM handle most reads.

Two things make disk matter pass wetin this summary suggest. Exploration load new chunks or zones from disk while players dey move, and this read dey happen inside the tick budget. Autosave for large world write plenty data at once. For slow volume, this write fit block the loop long enough to print the "Can't keep up" warning wey dey above. Both na latency problems, no be throughput problems. Na why the difference between NVMe and SATA SSD for VPS matter more here than the headline megabytes per second suggest. Wetin matter na how long one small operation take.

Size the volume make e fit grow. World dey grow every time person walk go new place, and your backups multiply the amount of space e use. Run du -sh world once every week for one month, and you go know your real growth rate.

Tick rate, ping, and wetin dey different between dem

Tick rate na how many times server dey recalculate the world every second. Minecraft Java dey run at 20. Source engine servers commonly dey run at 64. For Minecraft, you no fit buy higher tick rate because na part of the game design. So the goal na to hold 20, no be to pass am.

Ping na the round trip between one player and the server. These two things dey cause different complaints, so separate dem before you spend money. When server miss ticks, everybody go rubber-band for the same time, and server log go show am plainly. When one player get long network path, na only that player go lag while the rest of the group dey fine. Bigger CPU no go ever fix the second case.

Latency na about location, no be about plan tier

Light for fibre dey travel about 200 kilometres for every millisecond. Round trip dey cover the distance two times, so the lowest possible time na roughly 1 ms for every 100 km between player and server. No provider fit beat this, and no plan upgrade fit change am.

ChartRound trip floor by distance, fibre physics only
The data behind this chart
[
  {
    "label": "Toronto to New York",
    "distance_km": 550,
    "rtt_floor_ms": 5.5
  },
  {
    "label": "Dallas to Chicago",
    "distance_km": 1290,
    "rtt_floor_ms": 12.9
  },
  {
    "label": "Dallas to Los Angeles",
    "distance_km": 1990,
    "rtt_floor_ms": 19.9
  },
  {
    "label": "New York to London",
    "distance_km": 5570,
    "rtt_floor_ms": 55.7
  },
  {
    "label": "Los Angeles to Sydney",
    "distance_km": 12070,
    "rtt_floor_ms": 120.7
  }
]

Na great circle distance dem use calculate these lowest values. Real fibre no dey run straight, and every router for the path add small delay, so good real-world result dey usually somewhere near double the lowest value. Player for Toronto wey dey reach server for New York, 550 km away, get lowest value of 5.5 ms and e go usually see something for the teens. The Los Angeles to Sydney path get lowest value of 120.7 ms, and no amount of money fit move am.

So put the server near the people wey dey play for am. If your group dey split across ocean, somebody go get the long path, and the fair answer usually na the region wey hold most of the players.

Measure the path instead of guessing:

sudo apt install -y mtr-tiny
mtr -rwzc 100 203.0.113.10

Read the last line first. That line na the server, and na its loss and latency only decide how the game go feel. Loss wey show for middle hop with clean final hop almost always na ICMP rate limiting for that router, because routers dey give replies to probe packets lower priority while dem dey forward real traffic normally. Make every player run am toward the server, because each person dey use different path.

How dem calculate the round trip floor

Light for glass dey move at roughly two thirds of its speed for vacuum, and this come close to 200 km for every millisecond. Round trip dey cover the distance two times, so the floor for milliseconds na the one-way distance for kilometres divided by 100. New York to London na 5,570 km, and 5570 divided by 100 give 55.7 ms. Every measured number dey higher than this, because cables dey follow coastlines and routers need time to process packets.

Open only the ports wey the game need

Game server need one or two ports open, and nothing else. These na the common defaults:

  • Minecraft Java Edition: TCP 25565
  • Minecraft Bedrock Edition: UDP 19132
  • Valheim: UDP 2456 and UDP 2457
  • Palworld: UDP 8211
  • Source engine games like Counter-Strike 2: UDP 27015

Check the game own documentation, because some titles dey use extra query port. Valheim na the clearest example: 2456 carry the game traffic, while 2457 answer the Steam server query wey make your server show for the browser list. Opening those numbers for TCP no go achieve anything, because Valheim dey use UDP only.

Allow SSH before you enable the firewall, or you go lock yourself out of your own server:

sudo ufw allow 22/tcp
sudo ufw allow 25565/tcp
sudo ufw enable
sudo ufw status verbose

Many providers dey also run network firewall for their control panel, separate from the one for the box. If port open for ufw but closed for there, connections still no go enter. The symptom from outside go look the same, so check both places before you start edit config files.

Checking TCP port from another machine easy:

sudo apt install -y netcat-openbsd
nc -vz 203.0.113.10 25565

You no fit test UDP that way. Closed UDP port normally dey silent, so if probe get no reply, e never tell you anything. Confirm am from the server side instead, and look for the game process wey bind to the port wey you expect:

sudo ss -lunp | grep 2456

Never expose RCON, the remote console protocol, to the internet. Na one password wey dey pass through plaintext connection, for port 25575 by default. Bind am to 127.0.0.1 and reach am through SSH tunnel. Run the game server with its own unprivileged user too, so bug for a mod no fit reach the rest of the machine. The first ten minutes for new VPS cover the user account and SSH hardening wey this section assume say you don already do.

Run server under systemd so e go restart

Server wey you start by hand for SSH session go stop when the session close, and e no go start again after reboot. systemd solve both problems. Write /etc/systemd/system/minecraft.service:

[Unit]
Description=Minecraft Java server
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=minecraft
WorkingDirectory=/opt/minecraft
ExecStart=/usr/bin/java -Xms4G -Xmx4G -jar server.jar nogui
Restart=on-failure
RestartSec=15
TimeoutStopSec=180

[Install]
WantedBy=multi-user.target

Restart=on-failure go bring the server back after crash, but e go leave am stopped after clean shutdown. Na this one you want. Restart=always go dey fight you every time you intentionally stop the server. TimeoutStopSec=180 important pass as e first look. systemctl stop go send SIGTERM. The vanilla Minecraft server dey catch that signal and save the world before e exit. When the timeout finish, systemd go send SIGKILL. Big world fit need more than the default 90 seconds to write. Anything wey never reach disk before SIGKILL land don lost.

sudo systemctl daemon-reload
sudo systemctl enable --now minecraft
sudo journalctl -u minecraft -f

Healthy start go end with line like Done (12.345s)! For help, type "help". If the unit dey switch between activating and failed, journalctl -u minecraft -n 50 go show the reason. Most times, na wrong path for WorkingDirectory or heap wey big pass the machine memory.

systemd no give you interactive console, so plan for that from the beginning. Use RCON for localhost to run commands, or run the server inside tmux session. Na the same habit wey keep long-running Claude Code session alive for VPS between logins.

Games wey Steam distribute need SteamCMD before all this. The Ubuntu package na 32 bit binary, na why the architecture line dey there. If you skip that line, apt go report say e get no installation candidate:

sudo add-apt-repository multiverse
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y steamcmd

Some game servers dey use more memory the longer dem run. Scheduled restart for quiet hour na the accepted workaround, but e no be fix. systemd timer wey dey call systemctl restart easier to understand than cron entry, because systemctl list-timers go show you exactly when e go run next.

Back up everything on schedule

Everything wey dey for game server fit replace except the world directory and player data. Reinstalling the game fit take minutes. Rebuilding wetin una group build fit take months.

Safe backup na the one wey you take when nothing dey write. Stopping the server for one minute na the simplest way to guarantee this:

sudo systemctl stop minecraft
sudo tar czf /var/backups/mc-$(date +%F).tgz -C /opt/minecraft world world_nether world_the_end
sudo systemctl start minecraft

If nightly pause no acceptable, flush the world first instead. For Minecraft console, save-off dey stop autosave, save-all flush dey write everything wey still dey pending, and save-on dey turn autosave back on after the copy finish. If you copy world while server still dey write, e fit capture region file wey only half write. You no go discover the problem until the day you need restore am.

Keep at least one copy outside the machine. Backup wey dey for the same disk no go survive disk failure. Provider snapshot na convenience, no be proper backup, because e dey for the same account wey you fit lose. Scheduled restic backups to off-site storage dey handle retention and deduplication, so one month of nightly world copies no go fill your volume.

Then restore one backup. Backup wey you never restore na guesswork. Extract last night archive into spare directory, point test server to am, and confirm say world loads and the buildings still dey where una leave dem.

Commit go am only after you check am

Buy one month instead of one year, then test am with real players for one evening. Run the single thread sysbench figure, then make every player run mtr toward the server. The complete VPS benchmark procedure go through those tools step by step and show you how bad result dey look. How much VPS really cost per month go help you confirm say you dey pay for the resource wey dey limit your server, instead of the one wey plan page print with the biggest number.

Two posts continue from where this one stop. How to build Minecraft server for VPS na the step-by-step version of everything we discuss above, using the game wey most people start with. The broader list of things VPS fit run worth reading if you prefer make the box do something useful between game nights.

FAQ

I fit play games for VPS instead of buying gaming PC?

No. Standard VPS no get GPU; e only get virtual display adapter for provider console. So after you install desktop, glxinfo -B go report software renderer llvmpipe, and 3D game go run at just few frames per second. Even if you attach GPU, remote play still add video encoding and decoding to every frame round trip, and dem never build RDP and VNC for this kind work. VPS na for hosting dedicated server wey your group go connect to. Rent GPU time or use cloud gaming service if na playing you want.

How many CPU cores game server need?

For most games, two fast cores better pass eight slow ones. World simulation dey run for one main thread, and extra cores no fit help that thread meet im 50 ms deadline. Compare candidate plans with sysbench cpu --cpu-max-prime=20000 --threads=1 run and read the events per second figure. Extra cores worth the money when you also run second server or database for the same box, because those workloads fit run without taking time from tick thread.

How much RAM Minecraft server need?

Around 2 GB heap for vanilla world with about 10 players, and 8 GB for large modpack with the same player count. Set -Xms and -Xmx to the same value, and leave 1 GB to 2 GB of the machine free for operating system. JVM dey use memory outside heap, and kernel need page cache. If heap pass the box memory, kernel go kill the process. For dmesg, this one go show as out of memory line, not Java error.

Why players dey lag when server still get CPU and RAM available?

Two causes fit explain am. Check server log for Can't keep up! Is the server overloaded?. This means single main thread miss im 50 ms tick budget while the other cores dey idle. If that line no dey there, problem dey the network path. Make each player run mtr -rwzc 100 203.0.113.10 against your server address and read the last line. Also check st column for vmstat 1. Steal time above few percent means host dey oversold, so the idle CPU wey you see no really dey available to you.

Which ports I need open for game server?

Only the game own port, plus SSH. Minecraft Java dey use TCP 25565. Minecraft Bedrock dey use UDP 19132. Valheim dey use UDP 2456 and 2457. Palworld dey use UDP 8211. Add SSH rule before you run ufw enable, or you go lose access to the box. Remember say many providers get second firewall for their control panel, and the port must dey open for both places. Never open RCON for port 25575 to the internet, because na one password wey dem send as plaintext.