Skip to content

Latest commit

 

History

41 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mc-server

All-in-one Minecraft server setup. Downloads, installs, configures EULA, and generates launcher + backup + systemd service.

Supports: Bukkit, Spigot, Paper, Folia, Purpur, Fabric, Forge, NeoForge, Quilt

Features

  • Interactive setup with version list from API
  • Auto-download server jar from official APIs (PaperMC, PurpurMC, Fabric Meta, Forge/NeoForge Maven, Quilt, SpigotMC BuildTools)
  • Accept EULA automatically
  • start.sh — Universal launcher with interactive menu, direct run mode, backend auto-detect, auto port switch (moves to the next free port instead of killing processes), and multi-jar detection (pick jar from menu when multiple .jar files exist)
  • start.sh config — Read/set server.properties from CLI
  • start.sh stats — Server monitoring (RAM, PID, threads, TPS via RCON)
  • start.sh world — World backup/restore/list
  • start.sh send — Send commands to server console
  • backup.sh — Universal backup with rotation
  • plugins.sh — Modrinth plugin management (search, install, remove, update)
  • update.sh — Update server jar without touching world/config
  • docker.sh — Docker Compose generator (alternative to bare-metal)
  • Systemd service for auto-start on boot
  • Progress bar on all jar downloads

Quick Start

Setup (install server baru)

# One-file setup (downloads other scripts from GitHub automatically)
curl -fsSL -o setup.sh https://raw.githubusercontent.com/bianvigano/mc-server/main/setup.sh
chmod +x setup.sh
./setup.sh

Stalone start.sh (server sudah ada, butuh launcher doang)

curl -fsSL -o start.sh https://raw.githubusercontent.com/bianvigano/mc-server/main/start.sh
chmod +x start.sh
./start.sh

Bisa langsung dipakai di folder server yang sudah ada. Auto-detect jar, backend, RAM, dll.

Or with flags:

./setup.sh --type paper
./setup.sh --type purpur --version 1.21.4
./setup.sh --type folia --version 1.21.4
./setup.sh --type fabric --version 1.21.4
./setup.sh --type bukkit --version 1.21.4
./setup.sh --type spigot --version 1.21.4

Interactive Mode

$ ./setup.sh

========================================
  MC Server Setup
========================================

Pilih server type:
  1) Bukkit   — Original plugin API (legacy)
  2) Spigot   — Optimized Bukkit (legacy)
  3) Paper    — Performance + Bukkit/Spigot plugin support
  4) Folia    — Paper fork with regionized multithreading
  5) Purpur   — Paper + extra configurability
  6) Fabric   — Mod loader (mods, not plugins)
  7) Forge    — Classic mod loader
  8) NeoForge — Modern Forge fork for modded servers
  9) Quilt    — Lightweight mod loader

Pilih [1/2/3/4/5/6/7/8/9]: 5

Nama directory [./purpur-server]: survival

[*] Fetching available versions for PURPUR...

Available versions:
  > 26.2
  > 26.1
  > 1.21.11
  > 1.21.10
  > 1.21.9
  > ...

Ketik versi [latest = 26.1.2]: 1.21.4
  • Pilih server type (1-9)
  • Ketik nama directory (Enter = default)
  • Pilih versi dari list (Enter = latest)

Commands

cd survival  # server directory

# Server
./start.sh                     # Open interactive menu
./start.sh menu                # Open interactive menu explicitly
./start.sh start              # Start
./start.sh run                # Run directly in foreground
./start.sh stop               # Stop
./start.sh restart            # Restart
./start.sh status             # Status
./start.sh console            # Attach console
./start.sh send "say Hello"   # Send command to server
./start.sh rename minecraft1  # Rename tmux/screen session (tersimpan di .mc-info)
./start.sh new minecraft1     # Daftar nama server baru di .mc-info lalu start dgn nama itu
./start.sh new                # List nama server yang terdaftar

# Config
./start.sh config                    # Show all properties
./start.sh config server-port        # Read one key
./start.sh config set motd "Hi!"     # Set a key

# Monitoring
./start.sh stats              # RAM, PID, threads, TPS (needs RCON)

# World
./start.sh world backup           # Backup world
./start.sh world backup "before-update"  # Labeled backup
./start.sh world list             # List backups
./start.sh world restore <file>   # Restore

# Plugins (Paper/Folia/Purpur only)
./start.sh plugins search essentials
./start.sh plugins install essentialsx
./start.sh plugins list
./start.sh plugins update

# RAM
JAVA_XMX=4G ./start.sh start

# Direct run with auto-restart
AUTO_RESTART=true ./start.sh run

Launcher Modes

  • ./start.sh or ./start.sh menu: opens the interactive menu for navigating server actions without memorizing commands.
  • ./start.sh start: starts the server in the background using the configured backend (tmux, screen, or nohup).
  • ./start.sh run: runs the server directly in the current terminal foreground without using a backend.
  • ./start.sh stop, status, console, and send are intended for the background/backend-based mode started with ./start.sh start.
  • AUTO_RESTART=true ./start.sh run keeps restarting the foreground server after it exits.

Setup Script

./setup.sh [OPTIONS]
Option Default Description
--type (interactive) Server type: bukkit, spigot, paper, folia, purpur, fabric, forge, neoforge, quilt
--version latest Minecraft version
--dir ./<type>-server Output directory
--build latest stable Paper: specific build number
--fabric-loader latest stable Fabric: specific loader version
--fabric-installer latest stable Fabric: specific installer version

Server Types

Bukkit / Spigot

  • Original plugin API / Optimized Bukkit
  • Built via SpigotMC BuildTools (requires git)
  • Compiled from source (takes a few minutes)

Paper

  • High-performance fork of Spigot
  • Compatible with all Bukkit/Spigot plugins
  • API: fill.papermc.io/v3

Purpur

  • Fork of Paper with extra configurability
  • Compatible with Bukkit/Spigot/Paper plugins
  • API: api.purpurmc.org/v2

Folia

  • Fork of Paper with regionized multithreading
  • Compatible with Paper plugins (thread-safe plugins only)
  • API: fill.papermc.io/v3

Fabric

  • Mod loader (mods, not plugins)
  • Rich mod ecosystem (Sodium, Lithium, etc.)
  • API: meta.fabricmc.net/v2

Forge

  • Classic mod loader
  • Mod ecosystem (requires Forge-specific mods)
  • API: maven.minecraftforge.net

NeoForge

  • Modern Forge fork for modded servers
  • API: maven.neoforged.net

Quilt

  • Lightweight mod loader (Fabric-compatible ecosystem)
  • API: quiltmc.org

Files

mc-server/
├── setup.sh        # Multi-type bare-metal setup (only file needed)
├── start.sh        # Universal launcher + config + stats + world + plugins
├── backup.sh       # Universal backup with rotation
├── plugins.sh      # Modrinth plugin manager
├── update.sh       # Update server jar
├── docker.sh       # Docker Compose generator
└── README.md

After setup:

<dir>/
├── start.sh         # Launcher + commands
├── backup.sh        # Backup
├── plugins.sh       # Plugin manager
├── update.sh        # Server updater
├── plugins/         # Plugins directory
├── world/           # World data
├── server.jar       # Paper/Folia/Purpur/Fabric/Forge/NeoForge/Quilt jar (or mc-launch.sh)
├── .mc-info         # Server metadata + launcher config
├── eula.txt         # Auto-accepted
└── server.properties

Metadata format (.mc-info):

type=paper
version=1.21.4
jar=paper.jar
backend=tmux
xms=1G
xmx=2G
auto_restart=false
java_flags=-XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200

start.sh reads launcher defaults from .mc-info. The interactive menu can also save backend and RAM changes back into this file, while environment variables such as JAVA_XMS, JAVA_XMX, JAVA_FLAGS, AUTO_RESTART, or SERVER_JAR still override the saved values for a single run.

Docker Mode

./docker.sh --type paper --ram 2G --port 25565
docker compose up -d
docker compose logs -f
docker compose down

Backup

# Manual backup
./backup.sh

# Labeled backup
./backup.sh before-mods

# Custom location
BACKUP_DIR=/mnt/backup ./backup.sh

# Keep more backups (default: 24)
MAX_BACKUPS=48 ./backup.sh

Auto-Backup (cron)

crontab -e
# Add: Backup every 4 hours
0 */4 * * * /root/survival/backup.sh auto

Systemd (auto-start on boot)

sudo cp survival/minecraft-purpur.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable minecraft-purpur
sudo systemctl start minecraft-purpur

Monitoring

# Basic status
./start.sh stats

# With RCON (for TPS, player list)
./start.sh config set enable-rcon true
./start.sh config set rcon.password "secret"
./start.sh restart
./start.sh stats

Update Server

./update.sh                     # Update to latest
./update.sh --version 1.21.5    # Update to specific version

Updates the server jar only. World, config, and plugins are untouched.

Requirements

  • Java 17+
  • curl, python3 (for setup script only)
  • tmux or screen (optional, auto-detects)
  • tar (for backup)
  • git (for Bukkit/Spigot BuildTools)
  • mcrcon (optional, for TPS monitoring)

How It Works

Paper/Folia/Purpur:

  1. Queries official API for version list + current stable
  2. Downloads server jar directly with progress bar
  3. Accepts EULA
  4. Copies start.sh, backup.sh, plugins.sh, update.sh from repo or GitHub
  5. Generates systemd service

Fabric:

  1. Queries meta.fabricmc.net for latest stable loader + installer
  2. Downloads installer jar from maven.fabricmc.net
  3. Runs installer to download Minecraft server + Fabric
  4. Accepts EULA
  5. Copies scripts; generates systemd service
  6. Cleans up installer jar

Forge/NeoForge:

  1. Queries maven.minecraftforge.net / maven.neoforged.net for matching version
  2. Downloads installer jar
  3. Runs installer (--installServer)
  4. Generates mc-launch.sh wrapper
  5. Accepts EULA; copies scripts; generates systemd service

Quilt:

  1. Downloads latest Quilt installer from quiltmc.org
  2. Runs installer to download Minecraft server + Quilt
  3. Accepts EULA; copies scripts; generates systemd service

Bukkit/Spigot:

  1. Downloads SpigotMC BuildTools
  2. Compiles server jar from source
  3. Accepts EULA
  4. Copies scripts; generates systemd service

License

MIT

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages