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
- 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.jarfiles exist)start.sh config— Read/set server.properties from CLIstart.sh stats— Server monitoring (RAM, PID, threads, TPS via RCON)start.sh world— World backup/restore/liststart.sh send— Send commands to server consolebackup.sh— Universal backup with rotationplugins.sh— Modrinth plugin management (search, install, remove, update)update.sh— Update server jar without touching world/configdocker.sh— Docker Compose generator (alternative to bare-metal)- Systemd service for auto-start on boot
- Progress bar on all jar downloads
# 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.shcurl -fsSL -o start.sh https://raw.githubusercontent.com/bianvigano/mc-server/main/start.sh
chmod +x start.sh
./start.shBisa 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$ ./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)
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./start.shor./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, ornohup)../start.sh run: runs the server directly in the current terminal foreground without using a backend../start.sh stop,status,console, andsendare intended for the background/backend-based mode started with./start.sh start.AUTO_RESTART=true ./start.sh runkeeps restarting the foreground server after it exits.
./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 |
- Original plugin API / Optimized Bukkit
- Built via SpigotMC BuildTools (requires git)
- Compiled from source (takes a few minutes)
- High-performance fork of Spigot
- Compatible with all Bukkit/Spigot plugins
- API:
fill.papermc.io/v3
- Fork of Paper with extra configurability
- Compatible with Bukkit/Spigot/Paper plugins
- API:
api.purpurmc.org/v2
- Fork of Paper with regionized multithreading
- Compatible with Paper plugins (thread-safe plugins only)
- API:
fill.papermc.io/v3
- Mod loader (mods, not plugins)
- Rich mod ecosystem (Sodium, Lithium, etc.)
- API:
meta.fabricmc.net/v2
- Classic mod loader
- Mod ecosystem (requires Forge-specific mods)
- API:
maven.minecraftforge.net
- Modern Forge fork for modded servers
- API:
maven.neoforged.net
- Lightweight mod loader (Fabric-compatible ecosystem)
- API:
quiltmc.org
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.sh --type paper --ram 2G --port 25565
docker compose up -d
docker compose logs -f
docker compose down# 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.shcrontab -e
# Add: Backup every 4 hours
0 */4 * * * /root/survival/backup.sh autosudo cp survival/minecraft-purpur.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable minecraft-purpur
sudo systemctl start minecraft-purpur# 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.sh # Update to latest
./update.sh --version 1.21.5 # Update to specific versionUpdates the server jar only. World, config, and plugins are untouched.
- 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)
Paper/Folia/Purpur:
- Queries official API for version list + current stable
- Downloads server jar directly with progress bar
- Accepts EULA
- Copies start.sh, backup.sh, plugins.sh, update.sh from repo or GitHub
- Generates systemd service
Fabric:
- Queries
meta.fabricmc.netfor latest stable loader + installer - Downloads installer jar from
maven.fabricmc.net - Runs installer to download Minecraft server + Fabric
- Accepts EULA
- Copies scripts; generates systemd service
- Cleans up installer jar
Forge/NeoForge:
- Queries
maven.minecraftforge.net/maven.neoforged.netfor matching version - Downloads installer jar
- Runs installer (
--installServer) - Generates
mc-launch.shwrapper - Accepts EULA; copies scripts; generates systemd service
Quilt:
- Downloads latest Quilt installer from
quiltmc.org - Runs installer to download Minecraft server + Quilt
- Accepts EULA; copies scripts; generates systemd service
Bukkit/Spigot:
- Downloads SpigotMC BuildTools
- Compiles server jar from source
- Accepts EULA
- Copies scripts; generates systemd service
MIT