The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →You can run a Minecraft: Java Edition server on a Linux VPS with the free official server JAR, a compatible Java runtime, an unprivileged Linux account and TCP port 25565. The reliable sequence is: provision the VPS, harden and update it, install the Java version required by your server release, accept the EULA, configure the world, open the firewall, then run the server under a service supervisor with tested backups.
Godlike.Host offers hosted Minecraft Java servers with its own game panel, SFTP access and free DDoS protection, if you would rather not host it yourself.
This guide covers Java Edition. Bedrock Edition uses a different server package, operating-system requirement and network protocol, so it cannot use the Java JAR or this exact setup.
| # | Preview | Product | Price | |
|---|---|---|---|---|
| 1 |
|
Minecraft | Java & Bedrock Deluxe Collection | Windows Digital Code | $39.99 | Buy on Amazon |
| 2 |
|
Minecraft | Java & Bedrock Ultimate Collection | Windows Digital Code | $49.99 | Buy on Amazon |
| 3 |
|
Minecraft | Standard Edition | XBOX Digital Code | $19.99 | Buy on Amazon |
| 4 |
|
Minecraft | $6.99 | Buy on Amazon |
| 5 |
|
Minecraft - Bedrock Edition PS4 | $42.98 | Buy on Amazon |
As an Amazon Associate I earn from qualifying purchases.
What you need before installing
Choose a VPS with SSH access, a public IPv4 address, SSD or NVMe storage, provider-level firewall controls and enough CPU and memory for your player load. A single Minecraft world is sensitive to single-thread CPU performance, so a plan with more advertised cores is not automatically faster if its per-core performance is weak.
- A Linux distribution supported by your VPS provider; Ubuntu or Debian are common choices.
- An account that can use
sudo, plus an SSH key. Keep a second recovery method available through the provider console. - A public IPv4 address that players can reach. If the provider places the VPS behind address translation, verify that inbound connections can be forwarded.
- SSD/NVMe storage with room for the world, logs, updates and at least one local staging backup. Keep actual backups off the VPS.
- A provider firewall or security group, and a Linux firewall such as UFW or nftables.
The official Java server software is free to download. You still pay for the VPS, storage, traffic and any backup or snapshot service you select.
#1 Best Overall
- DELUXE COLLECTION — Includes Minecraft: Java & Bedrock Edition, three Bedrock add-ons, three exclusive Character Creator items, and 700 Minecoins.
- CREATE YOUR WORLD — Build whatever you imagine in an infinite world that’s unique in every playthrough.
- EXPLORE AND CRAFT — Discover biomes, resources, and mobs, then craft your way through a sandbox world filled with surprises.
- SURVIVE THE ADVENTURE — Face mysterious foes, travel across exciting landscapes, and venture into perilous dimensions.
- PLAY TOGETHER — Play cross-platform with friends in Bedrock Edition on console, mobile, and PC, or join community servers in Java Edition on PC, Mac, and Linux. Online console multiplayer requires a platform-specific subscription (sold separately).
Java Edition and Bedrock are different deployments
| Item | Java Edition server | Bedrock Dedicated Server |
|---|---|---|
| Server program | A Java archive (JAR) launched by a compatible Java runtime | A separate official Bedrock package; the Java JAR is not interchangeable |
| Typical network port | TCP 25565 | UDP 19132 |
| Linux requirement stated by the official page | Use a Linux distribution supported by your VPS and the selected Java release | Ubuntu 22.04 LTS or later |
| Officially listed memory and storage figures | No universal VPS formula is published | 4 GB RAM and 180 MB to 1 GB storage are listed on the current official page |
The Bedrock figures are package requirements, not a promise that a busy Bedrock world or its operating system will fit comfortably in exactly that amount of memory. Do not use them to size a Java server.
Step 1: Provision and log in to the VPS
- Create the VPS in the region closest to most players. Select a current 64-bit Linux image and assign a public IPv4 address.
- Install your SSH public key during provisioning. Record the address and the initial login name supplied by the provider.
- From your local computer, connect with the provider’s user and address:
ssh provider-user@YOUR_SERVER_IP
Replace the example values with your real account and address. Never publish the address, private key or provider console credentials in a public post or repository.
Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Step 2: Update Linux and create a dedicated account
Run updates before installing Java. On an Ubuntu or Debian image, the following is a typical sequence:
sudo apt update
sudo apt full-upgrade -y
sudo apt install -y curl wget ca-certificates ufw tmux
Reboot if the package manager or provider indicates that a kernel restart is required, then reconnect. Create a system account with no interactive administrative privileges and a private home directory for the server:
sudo adduser --system --home /srv/minecraft --group minecraft
sudo mkdir -p /srv/minecraft
sudo chown -R minecraft:minecraft /srv/minecraft
Do not run the game process as root. Keeping world files owned by minecraft prevents a compromised server process from automatically gaining full control of the VPS.
Step 3: Install the Java runtime required by your JAR
Minecraft releases do not all require the same Java major version. Check the official documentation for the exact server JAR you intend to run and install a current, supported runtime for that release. Do not copy a Java version from an older tutorial simply because it worked previously.
Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchPC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11For an Ubuntu or Debian system, the package name follows the required major version. Substitute the documented number; the placeholder is intentionally not a claim that one version works for every 2026 release:
sudo apt update
sudo apt install -y openjdk-<required-major>-jre-headless
java -version
The final command should report the installed major version and a 64-bit runtime. If the distribution repository does not provide the required release, use a supported vendor package or repository that matches the server documentation, then verify the binary path with readlink -f "$(command -v java)".
Rank #2
- ULTIMATE COLLECTION — Includes Minecraft: Java & Bedrock Edition, five Bedrock add-ons, five exclusive Character Creator items, and 1000 Minecoins.
- CREATE YOUR WORLD — Build whatever you imagine in an infinite world that’s unique in every playthrough.
- EXPLORE AND CRAFT — Discover biomes, resources, and mobs, then craft your way through a sandbox world filled with surprises.
- SURVIVE THE ADVENTURE — Face mysterious foes, travel across exciting landscapes, and venture into perilous dimensions.
- PLAY TOGETHER — Play cross-platform with friends in Bedrock Edition on console, mobile, and PC, or join community servers in Java Edition on PC, Mac, and Linux. Online console multiplayer requires a platform-specific subscription (sold separately).
Step 4: Download the official Java server JAR
Use the official Minecraft Java server download page to obtain the release you want. Download only the JAR for Java Edition, and keep its version in the filename so upgrades are auditable. The page identifies the file in the form minecraft_server.<version>.jar.
Place the file in the dedicated directory and make it readable by the service account. If you downloaded it as your administrative user, move it and repair ownership:
Recommended Free Tools
sudo mv minecraft_server.<version>.jar /srv/minecraft/minecraft_server.<version>.jar
sudo chown minecraft:minecraft /srv/minecraft/minecraft_server.<version>.jar
sudo -u minecraft ln -sfn minecraft_server.<version>.jar /srv/minecraft/minecraft_server.jar
Using a stable symlink lets the service definition stay unchanged when you deliberately upgrade to a new release. Keep the old JAR until the new world has been tested and backed up.
Step 5: Generate the files and accept the EULA
Run the JAR once as the minecraft user. The first launch creates eula.txt, server.properties and the initial world directory:
sudo -u minecraft sh -c 'cd /srv/minecraft && java -Xms1G -Xmx2G -jar minecraft_server.jar --nogui'
The process stops or refuses a normal start until the EULA file is accepted. Read the Minecraft EULA yourself. If you agree to it, change only the value in the generated file:
sudo -u minecraft sed -i 's/^eula=false/eula=true/' /srv/minecraft/eula.txt
sudo -u minecraft grep '^eula=' /srv/minecraft/eula.txt
The official help instructions require changing eula=false to eula=true before rerunning the server. If you do not accept the EULA, leave the value false and do not run the server.
Step 6: Configure server.properties
Stop the foreground process with stop in the server console, or press Ctrl+C only after it has saved safely. Edit the generated properties file as the service account:
sudo -u minecraft nano /srv/minecraft/server.properties
Set the options that match your community. Property names and accepted values are release-dependent, so preserve unknown lines and check the documentation for your JAR.
Rank #3
- CREATE YOUR WORLD — Build whatever you imagine in an infinite world that is unique in every playthrough.
- EXPLORE AND CRAFT — Discover biomes, resources, and mobs, then craft your way through a sandbox world full of surprises.
- SURVIVAL ADVENTURES — Face mysterious foes, travel across varied landscapes, and venture into perilous dimensions.
- PLAY TOGETHER — Play solo or join friends in local split-screen and cross-platform play across console, mobile, and PC. Online multiplayer supports up to 8 players.
- COMMUNITY PLAY — Connect with players on community servers, or subscribe to Realms Plus (sold separately) to play with up to 10 friends on a private server.
| Property | What it controls | Practical guidance |
|---|---|---|
server-port |
Listening TCP port | Leave at 25565 unless you have a reason to use another port; open the same port in every firewall. |
server-ip |
Address to bind | Usually leave this blank so Java binds to available interfaces. Entering the wrong private address can prevent startup. |
gamemode |
Default game mode | Choose the mode new players should receive; operators can change individual players later. |
difficulty |
World difficulty | Set the intended survival difficulty before inviting players. |
pvp |
Player-versus-player damage | Set true or false according to your rules. |
spawn-protection |
Protection radius around the spawn for non-operators | Use a value appropriate to your hub or survival spawn; set it to zero if you manage protection another way. |
max-players |
Connection limit | Set a realistic cap for the VPS rather than advertising more slots than the hardware can sustain. |
motd |
Message shown in the multiplayer list | Keep it short and identify the server’s rules or version. |
view-distance and simulation-distance |
How much world is sent and actively simulated | These are major CPU and memory levers. Reduce them when tick time or memory pressure is high. |
online-mode |
Authentication behavior | Keep authentication enabled unless you fully understand the security and account implications of changing it. |
World generation, render distance, simulation distance, plugins, mods, automated farms and the size of explored terrain all affect resource use. Changing several high-cost settings at once makes troubleshooting harder; change one, measure logs and tick performance, then continue.
Step 7: Open the provider and Linux firewalls
Players normally connect to your public IPv4 address on TCP port 25565. The official Java server page notes that this port may need to be opened for outside connections.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
First add an inbound rule in the VPS provider’s firewall or security group:
- Protocol: TCP
- Destination port: 25565
- Source: any address if the server is public, or a restricted player network if it is private
- Keep SSH restricted to your own address range where practical
Then configure UFW on the VPS. Replace YOUR_ADMIN_IP/32 with your fixed management address; if you cannot keep a stable address, use another carefully managed SSH restriction instead of exposing every port.
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow from YOUR_ADMIN_IP/32 to any port 22 proto tcp
sudo ufw allow 25565/tcp
sudo ufw enable
sudo ufw status verbose
Do not open UDP 19132 for a Java server. That is the usual Bedrock port and does not make a Java JAR accept Bedrock clients. When a non-default Java port is used, players must supply it as YOUR_SERVER_IP:PORT; with 25565, the address alone normally suffices.
Step 8: Run the server under systemd
A process attached to an SSH terminal dies when the session ends unless you use a supervisor. systemd starts the service after boot, restarts it after an unexpected failure and records logs in the journal.
Create a unit as root:
sudo nano /etc/systemd/system/minecraft.service
Use a heap appropriate to your workload, leaving memory for Linux, file cache and other services. The values below are examples, not an official sizing rule:
[Unit]
Description=Minecraft Java Edition server
After=network-online.target
Wants=network-online.target
[Service]
User=minecraft
Group=minecraft
WorkingDirectory=/srv/minecraft
ExecStart=/usr/bin/java -Xms1G -Xmx2G -jar /srv/minecraft/minecraft_server.jar --nogui
Restart=on-failure
RestartSec=10
KillSignal=SIGINT
SuccessExitStatus=0 1
[Install]
WantedBy=multi-user.target
Confirm the Java path with command -v java and adjust ExecStart if it is elsewhere. Enable and start the service:
Rank #4
- Skins! We have biome settlers, city folk, town folk, and more!
- The Nether and all its inhabitants. Fight Ghasts and make friends with Pigmen
- Cross platform play for up to five players between Pocket Edition and Windows 10
- Revamped touch controls, controller support, and a controller mapping screen
- Enhanced Weather effects! Accumulating snow and more
sudo systemctl daemon-reload
sudo systemctl enable --now minecraft
sudo systemctl status minecraft --no-pager
sudo journalctl -u minecraft -f
To stop it cleanly before maintenance, use sudo systemctl stop minecraft. To apply a properties change, stop the service, edit the file, then start it again. Never edit world files while the server is actively writing them.
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Clear out junk files and repair common Windows errors3Scan for outdated or missing drivers - takes under a minuteUsing tmux instead
tmux is useful for an interactive console, but it does not automatically provide boot startup or a reliable restart policy. If you choose it for testing, start a session as the service user:
sudo -u minecraft tmux new -s minecraft
cd /srv/minecraft
java -Xms1G -Xmx2G -jar minecraft_server.jar --nogui
Detach with Ctrl+B, then D, and reattach with sudo -u minecraft tmux attach -t minecraft. Prefer systemd for a production server.
How much RAM and CPU does a Java VPS need?
There is no official universal VPS-sizing formula. A Java server’s requirement depends on concurrent players, view and simulation distance, entity counts, plugins or mods, world size and how quickly new terrain is generated. Client-computer requirements do not tell you how much memory the server process needs.
| Workload characteristic | What to prioritize | What to monitor |
|---|---|---|
| Small vanilla server with occasional players | Strong single-thread CPU, SSD storage and enough RAM for the Java heap plus Linux | Heap usage, garbage-collection pauses and tick time |
| Several simultaneous players exploring new terrain | Higher single-core performance, more memory headroom and fast storage | CPU saturation, disk latency, chunk-generation delays and memory pressure |
| Modded or plugin-heavy server | Additional RAM and CPU capacity; verify every mod’s supported game and Java versions | Startup errors, repeated crashes, long ticks and per-plugin impact |
| Large established world | SSD/NVMe capacity for region files, backups and logs | Disk free space, inode use, backup duration and save completion |
Allocate heap conservatively and leave headroom for the operating system. Increasing -Xmx until the VPS has no free memory can make the whole machine unstable. Begin with a modest allocation, observe several busy sessions, and resize the VPS or adjust distances and plugins when metrics show sustained pressure.
Free tools Windows power users keep installed
One-click scans. No signup required.
Security checklist for a public server
- Use SSH keys and disable password authentication after confirming key access works. Keep a provider-console recovery path.
- Apply security updates regularly and reboot for kernel updates when required.
- Allow only SSH and the Minecraft TCP port through public firewalls. Do not expose database, panel or monitoring ports unnecessarily.
- Run Java as
minecraft, not root, and keep/srv/minecraftowned by that account. - Use a long, unique password for any administrative web service you add, and enable multi-factor authentication where available.
- Treat the public IP as sensitive operational information. Share the player address, but do not publish management addresses, private keys or console credentials.
- Review operator privileges and whitelist players if the server is private.
- Check the provider’s DDoS controls and traffic limits before inviting a large community; a Linux firewall cannot absorb every upstream attack.
Backups, upgrades and restoration
Create consistent backups
Stop the server cleanly before a full file backup so region files and player data are not changing during the copy:
sudo systemctl stop minecraft
sudo tar -C /srv -czf /var/backups/minecraft-$(date +%F).tar.gz minecraft
sudo systemctl start minecraft
Copy the archive to storage outside the VPS. A snapshot on the same host is convenient for rollback but is not protection against account loss, provider failure or disk destruction. Retain more than one dated backup and protect the backup location separately.
Test restoration
- Provision a temporary test directory or separate VPS with the same Java major version.
- Extract a backup while preserving ownership:
sudo tar -C /srv/test -xzf backup.tar.gz. - Run the restored server privately on a different port and confirm that the world loads, player data exists and the expected configuration is present.
- Record how long restoration took and which files were required. A backup that has never been restored is only an assumption.
Upgrade safely
- Read the release notes and confirm the required Java version.
- Stop the service and make a verified backup of the world,
server.properties, EULA file and service configuration. - Download the new official JAR beside the old one; do not overwrite the only known-good copy.
- Point
minecraft_server.jarto the new file, start the service and watchjournalctl -u minecraft -f. - Keep the old JAR and backup until players have connected successfully and you have checked the world. Downgrade only with a backup made before the upgrade; world formats may not be reversible.
Troubleshooting common failures
Java command not found or wrong version
Run java -version and command -v java. Install the major version required by the selected JAR, then update the systemd ExecStart path if necessary. A successful installation of a different major version does not satisfy the server’s requirement.
Best Value
- Play and share with friends on console, mobile and Windows 10
- discover community creations in the new in-game store
- access new mini games and game modes through servers
The server exits immediately and mentions the EULA
Inspect /srv/minecraft/eula.txt. The value must be eula=true only after you have accepted the EULA. Ensure the file is owned by minecraft and that you started the JAR from /srv/minecraft.
Players cannot connect
- Confirm the service is running with
systemctl status minecraft. - Check that Java is listening:
sudo ss -ltnp | grep 25565. - Verify the provider firewall and UFW both allow TCP 25565.
- Confirm that the player is using the VPS public IPv4 address, not a private address or an old address.
- If you changed
server-port, open and use that exact port. - Check whether the provider blocks inbound traffic, uses NAT or requires a separate public-address attachment.
The service works manually but not through systemd
Compare the working command with ExecStart. Confirm the working directory, JAR symlink, Java path, ownership and file permissions. Read the complete journal with sudo journalctl -u minecraft -b --no-pager; systemd does not load shell aliases or environment variables from your interactive SSH session.
Lag, timeouts or crashes under load
Inspect memory pressure, CPU saturation, disk space, tick-time warnings and the latest server log. Lower view or simulation distance, reduce unnecessary plugins or mods, limit uncontrolled exploration and add capacity only after identifying the bottleneck. If the kernel kills Java for out-of-memory conditions, reduce the heap or move to a larger VPS while preserving operating-system headroom.
Connecting and operating the finished server
In Java Edition, players open Multiplayer, choose Add Server, enter the VPS public IPv4 address and connect. They normally omit the port when it is 25565. A custom port must be written as address:port. Players need a client version compatible with the server; a VPS does not make incompatible game versions interoperate.
For routine administration, use systemctl and journalctl rather than leaving an SSH terminal open. Schedule updates during an announced maintenance window, watch storage growth and confirm that backups continue after every configuration or version change.
When a managed host is a better choice
A Linux VPS gives you control over Java, systemd, firewall rules, files and network placement, but you are responsible for patching, hardening, monitoring, backups, upgrades and incident recovery. A managed Minecraft host or control panel can be preferable if you do not want to maintain those components. Compare current CPU limits, RAM guarantees, storage, data-center locations, DDoS policy, backup retention, console access and the ability to export your world before committing.
For an administrator comfortable with SSH, the VPS workflow is straightforward: install the release-compatible runtime, accept the EULA, configure the generated properties, allow TCP 25565, run as an unprivileged account and verify restoration. Those operational details matter more than choosing a plan with the largest headline core count.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




