Minecraft - Java Edition (Forge) gameplay

Host a Minecraft - Java Edition (Forge) Dedicated Server

Forge Minecraft server with extensive mod support and optional built-in voice chat. Forge is the original Minecraft modding platform, providing compatibility with thousands of community-created mods. 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 (Forge) 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 (Forge) server on your desktop, laptop, VPS, or dedicated machine — GameCP automates Docker setup, resource allocation, and Minecraft - Java Edition (Forge) 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 (Forge) 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 (Forge) 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 (Forge) uses a custom install script to download and configure the server files.

Installation Script
#!/bin/bash

apt update
apt install -y wget curl jq

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}"
FORGE_PROMOS="https://files.minecraftforge.net/maven/net/minecraftforge/forge/promotions_slim.json"

if [ "$MC_VERSION" = "latest" ]; then
  echo "Fetching latest recommended Forge version..."
  JSON_DATA=$(curl -sSL "$FORGE_PROMOS")
  MC_VERSION=$(echo "$JSON_DATA" | jq -r '.promos | to_entries[] | .key | select(contains("recommended")) | split("-")[0]' | sort -t. -k1,1n -k2,2n -k3,3n | tail -1)
  if [ -z "$MC_VERSION" ]; then
    MC_VERSION=$(echo "$JSON_DATA" | jq -r '.promos | to_entries[] | .key | select(contains("latest")) | split("-")[0]' | sort -t. -k1,1n -k2,2n -k3,3n | tail -1)
  fi
  echo "Latest Forge MC version: $MC_VERSION"
else
  echo "Using specified version: $MC_VERSION"
fi

# Get Forge version for this MC version
echo "Resolving Forge version for MC $MC_VERSION..."
JSON_DATA=$(curl -sSL "$FORGE_PROMOS")

# Try recommended first, then latest
FORGE_VER=$(echo "$JSON_DATA" | jq -r --arg V "$MC_VERSION" '.promos["($V)-recommended"] // empty')
if [ -z "$FORGE_VER" ]; then
  FORGE_VER=$(echo "$JSON_DATA" | jq -r --arg V "$MC_VERSION" '.promos["($V)-latest"] // empty')
fi

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

FULL_VERSION="$MC_VERSION-$FORGE_VER"
echo "Using Forge version: $FULL_VERSION"

# Download Forge installer
FORGE_URL="https://maven.minecraftforge.net/net/minecraftforge/forge/$FULL_VERSION/forge-$FULL_VERSION-installer.jar"
echo "Downloading Forge installer..."
wget -q "$FORGE_URL" -O installer.jar

if [ ! -f installer.jar ]; then
  echo "ERROR: Failed to download Forge installer!"
  exit 1
fi

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

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

# Handle JAR naming based on MC version
FORGE_JAR=$(ls forge-*.jar 2>/dev/null | head -1)
if [ -n "$FORGE_JAR" ] && [ "$FORGE_JAR" != "installer.jar" ]; then
  # Older Forge (< 1.17) ships a jar directly
  mv "$FORGE_JAR" server.jar
fi

# Set up unix_args.txt symlink for 1.17+
if [ -f libraries/net/minecraftforge/forge/*/unix_args.txt ]; then
  ln -sf libraries/net/minecraftforge/forge/*/unix_args.txt unix_args.txt
fi

# Cleanup
rm -f installer.jar
rm -f run.bat run.sh installer.jar.log

echo "Forge 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%22forge%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 Forge build..."
    MODRINTH_API="https://api.modrinth.com/v2/project/simple-voice-chat/version?loaders=%5B%22forge%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 Forge. Skipping."
  fi
else
  echo "Voice Chat disabled. Skipping mod install."
fi

echo "Install Completed"
Step 3

Open Firewall Ports

Minecraft - Java Edition (Forge) 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 (Forge) server using the configuration from Step 1.

terminal
docker run -d \
  --name minecraft-java-forge-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 (Forge) server in under 5 minutes.

Deploy with GameCP

Ready to Host Your Minecraft - Java Edition (Forge) 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