Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Host modded Minecraft servers (CurseForge, Modrinth).
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 95% | 0% |
| case-11 | ✗→✓ | ▲ Improved | -20% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 122% | 0% |
| case-05 | ✓→✗ | ▼ Worse | 9% | 0% |
| case-07 | ✓→✓ | = Same ✓ | 83% | 0% |
Before starting setup, ask the user for:
Use sensible defaults if the user doesn't care, but always ask before generating the config.
bashmkdir -p ~/minecraft-server cd ~/minecraft-server wget -O serverpack.zip "<URL>" unzip -o serverpack.zip -d server ls server/
Look for: startserver.sh, installer jar (neoforge/forge), user_jvm_args.txt, mods/ folder. Check the script to determine: mod loader type, version, and required Java version.
sudo apt install openjdk-21-jre-headlesssudo apt install openjdk-17-jre-headlesssudo apt install openjdk-8-jre-headlessjava -versionMost server packs include an install script. Use the INSTALL_ONLY env var to install without launching:
bashcd ~/minecraft-server/server ATM10_INSTALL_ONLY=true bash startserver.sh # Or for generic Forge packs: # java -jar forge-*-installer.jar --installServer
This downloads libraries, patches the server jar, etc.
bashecho "eula=true" > ~/minecraft-server/server/eula.txt
Key settings for modded/LAN:
propertiesmotd=\u00a7b\u00a7lServer Name \u00a7r\u00a78| \u00a7aModpack Name server-port=25565 online-mode=true # false for LAN without Mojang auth enforce-secure-profile=true # match online-mode difficulty=hard # most modpacks balance around hard allow-flight=true # REQUIRED for modded (flying mounts/items) spawn-protection=0 # let everyone build at spawn max-tick-time=180000 # modded needs longer tick timeout enable-command-block=true
Performance settings (scale to hardware):
properties# 2 players, beefy machine: view-distance=16 simulation-distance=10 # 4-6 players, moderate machine: view-distance=10 simulation-distance=6 # 8+ players or weaker hardware: view-distance=8 simulation-distance=4
Scale RAM to player count and mod count. Rule of thumb for modded:
-Xms12G
-Xmx24G
-XX:+UseG1GC
-XX:+ParallelRefProcEnabled
-XX:MaxGCPauseMillis=200
-XX:+UnlockExperimentalVMOptions
-XX:+DisableExplicitGC
-XX:+AlwaysPreTouch
-XX:G1NewSizePercent=30
-XX:G1MaxNewSizePercent=40
-XX:G1HeapRegionSize=8M
-XX:G1ReservePercent=20
-XX:G1HeapWastePercent=5
-XX:G1MixedGCCountTarget=4
-XX:InitiatingHeapOccupancyPercent=15
-XX:G1MixedGCLiveThresholdPercent=90
-XX:G1RSetUpdatingPauseTimePercent=5
-XX:SurvivorRatio=32
-XX:+PerfDisableSharedMem
-XX:MaxTenuringThreshold=1bashsudo ufw allow 25565/tcp comment "Minecraft Server"
Check with: sudo ufw status | grep 25565
bashcat > ~/start-minecraft.sh << 'EOF' #!/bin/bash cd ~/minecraft-server/server java @user_jvm_args.txt @libraries/net/neoforged/neoforge/<VERSION>/unix_args.txt nogui EOF chmod +x ~/start-minecraft.sh
Note: For Forge (not NeoForge), the args file path differs. Check startserver.sh for the exact path.
Create backup script:
bashcat > ~/minecraft-server/backup.sh << 'SCRIPT' #!/bin/bash SERVER_DIR="$HOME/minecraft-server/server" BACKUP_DIR="$HOME/minecraft-server/backups" WORLD_DIR="$SERVER_DIR/world" MAX_BACKUPS=24 mkdir -p "$BACKUP_DIR" [ ! -d "$WORLD_DIR" ] && echo "[BACKUP] No world folder" && exit 0 TIMESTAMP=$(date +%Y-%m-%d_%H-%M-%S) BACKUP_FILE="$BACKUP_DIR/world_${TIMESTAMP}.tar.gz" echo "[BACKUP] Starting at $(date)" tar -czf "$BACKUP_FILE" -C "$SERVER_DIR" world SIZE=$(du -h "$BACKUP_FILE" | cut -f1) echo "[BACKUP] Saved: $BACKUP_FILE ($SIZE)" BACKUP_COUNT=$(ls -1t "$BACKUP_DIR"/world_*.tar.gz 2>/dev/null | wc -l) if [ "$BACKUP_COUNT" -gt "$MAX_BACKUPS" ]; then REMOVE=$((BACKUP_COUNT - MAX_BACKUPS)) ls -1t "$BACKUP_DIR"/world_*.tar.gz | tail -n "$REMOVE" | xargs rm -f echo "[BACKUP] Pruned $REMOVE old backup(s)" fi echo "[BACKUP] Done at $(date)" SCRIPT chmod +x ~/minecraft-server/backup.sh
Add hourly cron:
bash(crontab -l 2>/dev/null | grep -v "minecraft/backup.sh"; echo "0 * * * * $HOME/minecraft-server/backup.sh >> $HOME/minecraft-server/backups/backup.log 2>&1") | crontab -
allow-flight=true for modded — mods with jetpacks/flight will kick players otherwisemax-tick-time=180000 or higher — modded servers often have long ticks during worldgenpgrep -fa neoforge or pgrep -fa minecraft to check if runningtail -f ~/minecraft-server/server/logs/latest.logOther measured skills in the registry, with their headline benchmark lift.