Deploy Minecraft Paper Server

Pinned Paper Minecraft: 2G heap, /data volume, EULA, autopause, TCP 25565.

Deploy Minecraft Paper Server

Deploy and Host Minecraft Paper Server on Railway

Pinned Paper Java Edition on itzg/minecraft-server. World and plugins live on a /data volume. Players join over a public TCP 25565 proxy (not HTTP). Heap defaults to 2G, not 8G.

About Hosting Minecraft Paper Server on Railway

This is a single paper service:

  • Image itzg/minecraft-server:2026.9.0-java25 (digest sha256:4e29d14082d94748f945edad3ee5307b97adc730fec49860199f5e52218a9ae3)
  • Java 25 (Paper 26.x minimum)
  • TYPE=PAPER, VERSION=26.2, PAPER_BUILD=121 (stable)
  • Volume mount /data for world, server.properties, plugins, logs
  • TCP proxy application port 25565
  • MAX_MEMORY=2G and INIT_MEMORY=2G with Aikar flags
  • Native empty-server pause via PAUSE_WHEN_EMPTY_SECONDS=60
  • No extra dashboard service (panels balloon RAM on a 2G heap)

Join address is the Railway TCP proxy host:port shown on the service (the public port is assigned by Railway; the container still listens on 25565).

Why Deploy Minecraft Paper Server on Railway

Marketplace Minecraft cards such as BLEtpx still default an 8G heap, unpinned :latest images, and weak persistence. This listing pins the itzg tag and Paper build, mounts /data, exposes TCP 25565, keeps the heap at 2G, requires an explicit EULA, and documents autopause.

Verified on the template test project: deployment 512d44f1-9a13-4388-b24e-5eed78132776 reached SUCCESS with /data mounted; logs showed Done (10.110s)!; a status ping on the TCP proxy returned Paper 26.2 with MOTD Paper on Railway.

Common Use Cases

  • Small friend-group Paper SMP
  • Plugin testing on a pinned Paper build
  • Always-on Java Edition server with a sane Railway bill
  • Worlds that survive redeploys via /data
  • Idle-friendly hosting with native pause-when-empty

Dependencies for Minecraft Paper Server Hosting

You need a Minecraft Java Edition client and acceptance of the Minecraft EULA. The server downloads the pinned Paper jar on first boot (needs outbound HTTPS). Premium accounts are required unless you set ONLINE_MODE=FALSE.

Deployment Dependencies

  • EULA (required): you must set this to TRUE yourself. That is Mojang EULA acceptance. The server will not start otherwise. Do not leave it blank.
  • TYPE=PAPER, VERSION=26.2, PAPER_BUILD=121 — pinned Paper
  • MAX_MEMORY=2G, INIT_MEMORY=2G — never 8G
  • USE_AIKAR_FLAGS=TRUE
  • ENABLE_AUTOPAUSE=FALSE — itzg JVM freeze; leave off unless you need it
  • PAUSE_WHEN_EMPTY_SECONDS=60 — native pause when no players are online
  • MAX_TICK_TIME=-1 — disables the vanilla tick watchdog (required if you later enable itzg autopause)
  • VIEW_DISTANCE=8, SIMULATION_DISTANCE=6, MAX_PLAYERS=20
  • ONLINE_MODE=TRUE, MODE=survival, DIFFICULTY=normal
  • Volume /data and TCP proxy port 25565 (created by the template)

No generated secrets. Whitelist/ops are in-game or files on /data.

One-click deploy

  1. Click deploy.
  2. Set EULA=TRUE (required).
  3. Wait for first boot (downloads Paper 26.2-121 and generates a world).
  4. Open the Paper service → Settings → Networking → TCP Proxy. Copy host:port.
  5. Minecraft Java client → Multiplayer → Direct Connection → paste host:port.

Autopause (save RAM when empty)

Prefer native pause on Paper 26:

  • PAUSE_WHEN_EMPTY_SECONDS=60 maps to pause-when-empty-seconds. The JVM stays up; the dedicated server stops ticking after 60 empty seconds.
  • Set 0 / -1 if farms must keep running with nobody online.

Legacy itzg freeze (ENABLE_AUTOPAUSE=TRUE) SIGSTOPs Java and wakes on a TCP knock:

ENABLE_AUTOPAUSE=TRUE
MAX_TICK_TIME=-1
JVM_DD_OPTS=disable.watchdog:true

Leave that off by default. knockd plus Railway’s TCP proxy is easy to misconfigure. Do not set ENABLE_AUTOSTOP=TRUE — Railway will treat a stopped process as a crash and restart it.

How this is healthier than BLEtpx-style clones

  • Pinned image tag + digest, not :latest
  • Pinned Paper 26.2 build 121
  • 2G heap, not 8G
  • /data volume
  • Explicit required EULA
  • Autopause documented (native + optional itzg)
  • TCP 25565 only — no RAM-heavy dashboard

After Deploy

  1. Confirm logs contain Done ( and Starting Minecraft server on *:25565.
  2. Copy the TCP proxy endpoint.
  3. Join with a Java client. Default ONLINE_MODE=TRUE.
  4. Drop plugin jars into /data/plugins (volume browser or railway ssh) and restart.
  5. Raise MAX_MEMORY / INIT_MEMORY together only if you also size the Railway service above heap + ~500MB native.

Support Checklist

If a deploy fails, include the Paper deployment ID, whether /data is mounted, the TCP proxy endpoint, and log lines around EULA, Paper download, memory (Setting initial memory), and Done (.


Template Content

More templates in this category

View Template
Rocky Linux
Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀

codestorm
47
View Template
Foundry Virtual Tabletop
A Self-Hosted & Modern Roleplaying Platform

Lucas
71
View Template
Letta Code Remote
Run a Letta Code agent 24/7. No inbound ports, just deploy.

Letta
51