Minecraft - Java Edition (NeoForge) gameplay

Host a Minecraft - Java Edition (NeoForge) Dedicated Server

NeoForge Minecraft server with modern mod support and optional built-in voice chat. NeoForge is a modern fork of Forge with improved performance, updated modding APIs, and active development for the latest Minecraft versions. Supports automatic version resolution, Aikar's flags, and Simple Voice Chat integration. Runs in Docker for isolated resource management.

Hardware Requirements

Here's what you need to run a Minecraft - Java Edition (NeoForge) dedicated server.

Economy

Small server, 1-10 players

CPU1 core
RAM4 GB
Storage5 GB

Standard

Community server, 10-40 players

CPU2 cores
RAM6 GB
Storage5 GB

Pro

Large server, 40-200 players

CPU4 cores
RAM10 GB
Storage5 GB

Start hosting from your own computer

Run a Minecraft - Java Edition (NeoForge) server on your desktop, laptop, VPS, or dedicated machine — GameCP automates Docker setup, resource allocation, and Minecraft - Java Edition (NeoForge) configuration instantly. Automatic port forwarding means your friends can connect without touching your router. Start local, scale to a VPS when you're ready.

Get Started FreeNo credit card required

Setup in 4 Steps

Skip the manual installation, port forwarding, and configuration. Install on your own computer and start hosting instantly.

The Manual Way vs. GameCP

Manual Setup

  • Configure 4+ firewall ports and router settings
  • Write systemd service files
  • SSH into server to edit configs
  • Requires a VPS or dedicated server
  • 30-60 minutes if experienced

With GameCP

  • Automatic port forwarding — no router config
  • Host from your own PC, VPS, or dedicated server
  • Docker container with auto-restart
  • Visual config editor in browser
  • Under 5 minutes total

Under the Hood

The full manual process to host a Minecraft - Java Edition (NeoForge) dedicated server on a VPS. Or install GameCP on your own computer and skip all of this.

Step 1

Configure & Prepare

Set your server settings, then install Docker, and pull the Minecraft - Java Edition (NeoForge) container image.

Server ConfigurationEdit values to update all commands
terminal
# Update system and install Docker
sudo apt update && sudo apt install -y docker.io
sudo systemctl enable --now docker

# Create game server directory
sudo mkdir -p /opt/gameserver

# Server configuration
export GAMEMODE="survival"
export DIFFICULTY="easy"
export LEVEL_NAME="world"
export PVP="true"
export SPAWN_MONSTERS="true"
export WHITE_LIST="false"
export ALLOW_FLIGHT="true"
export SPAWN_PROTECTION="16"
export HARDCORE="false"
export FORCE_GAMEMODE="false"
export ALLOW_NETHER="true"
export LEVEL_TYPE="minecraft:normal"
export GENERATE_STRUCTURES="true"
export ONLINE_MODE="true"
export ENFORCE_WHITELIST="false"
export ENFORCE_SECURE_PROFILE="true"
export ENABLE_RCON="false"
export ENABLE_QUERY="true"
export ENABLE_STATUS="true"
export ENABLE_COMMAND_BLOCK="false"
export VIEW_DISTANCE="10"
export SIMULATION_DISTANCE="10"
export MAX_TICK_TIME="60000"
export NETWORK_COMPRESSION_THRESHOLD="256"
export VOICE_CHAT_ENABLED="true"
export VOICE_MAX_DISTANCE="48"
export VOICE_WHISPER_DISTANCE="24"
export VOICE_ENABLE_GROUPS="true"

# Pull the container image
docker pull eclipse-temurin:21-jre-alpine
Step 2

Run the Installation Script

Minecraft - Java Edition (NeoForge) uses a custom install script to download and configure the server files.

Installation Script
#!/bin/bash

apt update
apt install -y wget curl jq xmlstarlet

cd /opt/gameserver || { echo "Failed to change directory to /opt/gameserver"; exit 1; }

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

# Resolve Minecraft version
MC_VERSION="${MINECRAFT_VERSION:-latest}"
NEOFORGE_MAVEN="https://maven.neoforged.net/releases/net/neoforged/neoforge"

if [ "$MC_VERSION" = "latest" ] || [ -z "$MC_VERSION" ]; then
  echo "Fetching latest NeoForge version..."
  XML_DATA=$(curl -sSL "$NEOFORGE_MAVEN/maven-metadata.xml")
  NEOFORGE_VERSION=$(echo "$XML_DATA" | xmlstarlet sel -t -v '/metadata/versioning/release' 2>/dev/null)
  if [ -z "$NEOFORGE_VERSION" ]; then
    NEOFORGE_VERSION=$(echo "$XML_DATA" | grep -oP '<release>[^<]+</release>' | sed 's/<[^>]*>//g')
  fi
  MC_VERSION="1.$(echo "$NEOFORGE_VERSION" | cut -d'.' -f1-2)"
  echo "Latest NeoForge version: $NEOFORGE_VERSION (MC $MC_VERSION)"
else
  echo "Using specified MC version: $MC_VERSION"
  # Derive version key from MC version (e.g., 1.21.4 -> 21.4)
  if echo "$MC_VERSION" | grep -qP '^d+.d+.d+$'; then
    VERSION_KEY="$(echo "$MC_VERSION" | cut -d'.' -f2-)."
  else
    VERSION_KEY="$(echo "$MC_VERSION" | cut -d'.' -f2-)"
  fi

  echo "Resolving NeoForge version for key: $VERSION_KEY"
  XML_DATA=$(curl -sSL "$NEOFORGE_MAVEN/maven-metadata.xml")
  NEOFORGE_VERSION=$(echo "$XML_DATA" | grep -oP '<version>[^<]+</version>' | sed 's/<[^>]*>//g' | grep "^$VERSION_KEY" | tail -1)

  if [ -z "$NEOFORGE_VERSION" ]; then
    echo "ERROR: No NeoForge version found for MC $MC_VERSION!"
    exit 1
  fi
  echo "Resolved NeoForge version: $NEOFORGE_VERSION"
fi

# Download NeoForge installer
INSTALLER_JAR="neoforge-$NEOFORGE_VERSION-installer.jar"
DOWNLOAD_URL="$NEOFORGE_MAVEN/$NEOFORGE_VERSION/$INSTALLER_JAR"
echo "Downloading NeoForge installer..."
wget -q "$DOWNLOAD_URL" -O "$INSTALLER_JAR"

if [ ! -f "$INSTALLER_JAR" ]; then
  echo "ERROR: Failed to download NeoForge installer!"
  exit 1
fi

# Clean previous install for upgrade/downgrade support
rm -rf libraries/net/neoforged/neoforge
rm -f unix_args.txt

# Run installer
echo "Running NeoForge installer..."
java -jar "$INSTALLER_JAR" --installServer || { echo "NeoForge install failed!"; exit 1; }

# Set up unix_args.txt symlink
if [ -d "libraries/net/neoforged/neoforge/$NEOFORGE_VERSION" ]; then
  ln -sf "libraries/net/neoforged/neoforge/$NEOFORGE_VERSION/unix_args.txt" unix_args.txt
fi

if [ ! -f unix_args.txt ]; then
  echo "ERROR: Installer did not generate unix_args.txt!"
  exit 1
fi

# Cleanup
rm -f "$INSTALLER_JAR"
rm -f run.bat run.sh

echo "NeoForge server installed successfully."

# Install Simple Voice Chat mod if enabled
VOICE_ENABLED="${VOICE_CHAT_ENABLED:-false}"
if [ "$VOICE_ENABLED" = "true" ] || [ "$VOICE_ENABLED" = "1" ]; then
  echo "Voice Chat enabled. Installing Simple Voice Chat mod..."
  mkdir -p mods

  MODRINTH_API="https://api.modrinth.com/v2/project/simple-voice-chat/version?loaders=%5B%22neoforge%22%5D&game_versions=%5B%22$MC_VERSION%22%5D"
  VOICE_URL=$(curl -sSL "$MODRINTH_API" | jq -r '.[0].files[0].url // empty')

  if [ -z "$VOICE_URL" ]; then
    echo "No exact version match, trying latest NeoForge build..."
    MODRINTH_API="https://api.modrinth.com/v2/project/simple-voice-chat/version?loaders=%5B%22neoforge%22%5D"
    VOICE_URL=$(curl -sSL "$MODRINTH_API" | jq -r '.[0].files[0].url // empty')
  fi

  if [ -n "$VOICE_URL" ]; then
    wget -q "$VOICE_URL" -O mods/voicechat.jar
    echo "Simple Voice Chat mod installed."
  else
    echo "WARNING: Could not find Simple Voice Chat for NeoForge. Skipping."
  fi
else
  echo "Voice Chat disabled. Skipping mod install."
fi

echo "Install Completed"
Step 3

Open Firewall Ports

Minecraft - Java Edition (NeoForge) requires 4 ports to be open for game traffic and queries.

terminal
sudo ufw allow 25565/tcp
sudo ufw allow 25575/tcp
sudo ufw allow 25566/both
sudo ufw allow 24454/udp
25565/TCP(PORT)25575/TCP(RCON_PORT)25566/BOTH(QUERY_PORT)24454/UDP(VOICE_CHAT_PORT)
Step 4

Launch the Server

Start the Minecraft - Java Edition (NeoForge) server using the configuration from Step 1.

terminal
docker run -d \
  --name minecraft-java-neoforge-server \
  -p 25565:25565/tcp \
  -p 25575:25575/tcp \
  -p 25566:25566/both \
  -p 24454:24454/udp \
  -e GAMEMODE="survival" \
  -e DIFFICULTY="easy" \
  -e LEVEL_NAME="world" \
  -e PVP="true" \
  -e SPAWN_MONSTERS="true" \
  -e WHITE_LIST="false" \
  -e ALLOW_FLIGHT="true" \
  -e SPAWN_PROTECTION="16" \
  -e HARDCORE="false" \
  -e FORCE_GAMEMODE="false" \
  -e ALLOW_NETHER="true" \
  -e LEVEL_TYPE="minecraft:normal" \
  -e GENERATE_STRUCTURES="true" \
  -e ONLINE_MODE="true" \
  -e ENFORCE_WHITELIST="false" \
  -e ENFORCE_SECURE_PROFILE="true" \
  -e ENABLE_RCON="false" \
  -e ENABLE_QUERY="true" \
  -e ENABLE_STATUS="true" \
  -e ENABLE_COMMAND_BLOCK="false" \
  -e VIEW_DISTANCE="10" \
  -e SIMULATION_DISTANCE="10" \
  -e MAX_TICK_TIME="60000" \
  -e NETWORK_COMPRESSION_THRESHOLD="256" \
  -e VOICE_CHAT_ENABLED="true" \
  -e VOICE_MAX_DISTANCE="48" \
  -e VOICE_WHISPER_DISTANCE="24" \
  -e VOICE_ENABLE_GROUPS="true" \
  -v /opt/gameserver:/opt/gameserver \
  -w /opt/gameserver \
  eclipse-temurin:21-jre-alpine \
  java -Xmx -Xms -Dterminal.jline=false -Dterminal.ansi=true @unix_args.txt

Alternative startup profiles:

  • Aikar's Flags (Optimized)Optimized JVM flags recommended by Aikar for Minecraft servers. Best for servers with 10+ players.

GameCP lets you switch between these profiles with one click.

Or skip all of this

GameCP automates every step above: Docker, port forwarding, startup, and config. Install on your own PC and deploy a Minecraft - Java Edition (NeoForge) server in under 5 minutes.

Deploy with GameCP

Ready to Host Your Minecraft - Java Edition (NeoForge) Server?

Install GameCP on your own computer and start hosting in minutes. Automatic port forwarding, zero config — your friends connect instantly.

No credit card required · Free tier available · Install local, scale later

Deploy Free