Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

minecraft

Minecraft Server Configuration

Server Type

Using itzg/minecraft-server:java21 via Docker Compose (Dockge), running on TrueNAS.

Docker Compose

services:
  minecraft:
    image: itzg/minecraft-server:java21
    container_name: minecraft
    restart: unless-stopped
    stdin_open: true
    tty: true
    user: 568:568
    labels:
      - homepage.group=Gaming
      - homepage.name=Minecraft
      - homepage.icon=minecraft.png
      - homepage.href=https://play.svb-avh.com
      - homepage.description=Ailin-1 - Survival Server
    ports:
      - 25565:25565
      - 25575:25575 
    volumes:
      - /mnt/tnt-hex/configs/minecraft:/data
    environment:
      # Core
      EULA: "true"
      TYPE: PAPER
      VERSION: LATEST
      TZ: Europe/Brussels
      # Server identity
      SERVER_NAME: Ailin-1
      MOTD: Welcome to Minecraft on TrueNAS!
      SEED: "-2478968794318969857"
      # Gameplay
      GAMEMODE: survival
      DIFFICULTY: peaceful
      LEVEL_TYPE: DEFAULT
      HARDCORE: "false"
      PVP: "false"
      ALLOW_FLIGHT: "false"
      ONLINE_MODE: "false"
      # World
      MAX_WORLD_SIZE: "10000"
      MAX_BUILD_HEIGHT: "256"
      GENERATE_STRUCTURES: "true"
      ALLOW_NETHER: "true"
      # Players & spawning
      MAX_PLAYERS: "20"
      SPAWN_PROTECTION: "16"
      SPAWN_ANIMALS: "true"
      SPAWN_NPCS: "true"
      SPAWN_MONSTERS: "true"
      FORCE_GAMEMODE: "false"
      ANNOUNCE_PLAYER_ACHIEVEMENTS: "true"
      ENABLE_COMMAND_BLOCK: "false"
      # Performance
      VIEW_DISTANCE: "16"
      MAX_TICK_TIME: "60000"
      # RCON
      RCON_ENABLED: "true"
      RCON_PASSWORD: ${RCON_PASSWORD}
      RCON_PORT: "25575"
      # Plugins
      PLUGINS: ${PLUGINS}
networks: {}

Secrets (RCON_PASSWORD, PLUGINS) are stored in a .env file alongside the compose file in Dockge.

RCON

RCON is enabled on host port 25575. Use any RCON client (e.g. mcrcon) to run admin commands without joining the server:

mcrcon -H <truenas-ip> -P 25575 -p <RCON_PASSWORD> "whitelist list"

AuthMe Plugin

Purpose: Password protection for offline-mode server

Player Registration (first time):

/register password password

Player Login (subsequent times):

/login password

Admin Commands:

# Reset player password
/authme password PlayerName newpassword

# Unregister player
/authme unregister PlayerName

# Check if player is registered
/authme accounts PlayerName

Access Control

  1. Whitelist: Only approved usernames can connect
  2. AuthMe: Password required for each username
  3. Monitoring: Check logs and use CoreProtect for tracking

Minecraft Server Setup - Pre-registration Only Workflow

Overview

This guide will help you configure your Minecraft server so that:

  • Only you can create accounts (pre-registration)
  • Players cannot self-register
  • You have full control over who plays
  • Simple workflow for adding new players

Perfect for managing a kids’ Minecraft server with friends aged 6-8 years old.


Prerequisites

  • ✅ Minecraft server running (Paper/Spigot)
  • ✅ AuthMe plugin installed
  • ✅ You have OP permissions on the server
  • ✅ Whitelist enabled

Step 1: Configure Server Properties

Edit server.properties

Location: /path/to/minecraft/server.properties

Ensure these settings:

# Enable whitelist
white-list=true

# Only you can use admin commands
op-permission-level=4

# Disable command blocks (safety)
enable-command-block=false

# Basic security
spawn-protection=16
allow-flight=false

Save and restart the server for changes to take effect.


Step 2: Make Yourself Server Operator

From Server Console

op YourUsername

Verify

Check the ops.json file:

cat /path/to/minecraft/ops.json

Should contain:

[
  {
    "uuid": "your-uuid",
    "name": "YourUsername",
    "level": 4,
    "bypassesPlayerLimit": false
  }
]

Important: Only you should be in this file. Never add kids as operators!


Step 3: Configure AuthMe to Disable Self-Registration

Edit AuthMe Config

Location: /path/to/minecraft/plugins/AuthMe/config.yml

Find and modify these sections:

settings:
  # DISABLE self-registration
  registration:
    enabled: false  # Players cannot use /register
    force: false    # Don't force registration
    
  # Session settings - keep players logged in
  sessions:
    enabled: true
    timeout: 60  # Stay logged in for 60 minutes
    
  # Security settings
  security:
    minPasswordLength: 4  # Allow short passwords for kids
    maxLoginPerIp: 5      # Multiple kids from same house
    maxJoinPerIp: 3       # Limit connections per IP
    
  # Protect inventory before login
  ProtectInventoryBeforeLogIn: true
  
  # Commands allowed before login (ONLY login, not register)
  allowCommands:
    - /login
    - /help
    - /l  # Common alias for /login

# Disable external registration methods
ExternalBoardOptions:
  enableExternalRegistration: false

restrictions:
  # Allowed characters in usernames
  allowedNicknameCharacters: '[a-zA-Z0-9_]*'
  minNicknameLength: 3
  maxNicknameLength: 16
  
  # Allowed commands BEFORE login (no /register here)
  allowCommands:
    - /login
    - /l
    - /help

Save and Reload

In-game as OP or from console:

authme reload

Or restart the server:

# Stop server
stop

# Start server (method depends on your setup)

Step 4: Enable Whitelist

From Console or In-Game (as OP)

# Enable whitelist
whitelist on

# Verify it's enabled
whitelist list

Whitelist should now be active. Only usernames you explicitly add can join.


Step 5: Test That Self-Registration is Disabled

Connect as a Non-OP Player

  1. Join the server with a test account (or ask someone to test)

  2. Try to register:

    /register testpass testpass
    
  3. Expected result:

    [AuthMe] Registration is disabled.
    

    or

    [AuthMe] Unknown command. Type /help for help.
    

✅ If you see this, self-registration is successfully disabled!


Step 6: Pre-register Your Kids

Add Kids to Whitelist First

# From console or as OP in-game:
whitelist add Kid1
whitelist add Kid2

Pre-register Each Kid

# From console or as OP in-game:
authme register Kid1 cookie123
authme register Kid2 dino456

Format: authme register <username> <password>

Verify Registration

# Check all registered accounts
authme accounts

# Check specific account
authme accounts Kid1

Should show:

[AuthMe] Player Kid1 is registered.

Step 7: Create a Password Management System

Create a Password List

Create a file to track all accounts (keep this secure!):

File: minecraft-accounts.txt or use a spreadsheet

Username    | Password   | Real Name        | Parent Contact      | Date Added
------------|------------|------------------|---------------------|------------
Kid1        | cookie123  | Your First Kid   | -                   | 2025-11-28
Kid2        | dino456    | Your Second Kid  | -                   | 2025-11-28
Friend1     | lego789    | Friend Name      | parent@email.com    | 2025-11-28

Keep this file secure - it contains all passwords!

Alternative: Use a Password Manager

Store in KeePass, Bitwarden, 1Password, etc. with a note like:

Service: Minecraft Server
Username: Kid1
Password: cookie123
Notes: Real name - Your Kid, Added 2025-11-28

Step 8: Workflow for Adding New Players

When a Parent Asks to Add Their Child

Step 1: Parent Request

  • Parent contacts you (in person, text, email)
  • Asks: “Can my kid join the Minecraft server?”
  • Get kid’s preferred username

Step 2: Pre-register the Account

# Whitelist the username
whitelist add TheirKid

# Register with a simple password
authme register TheirKid simplepass123

Step 3: Share Credentials with Parent

Send parent (securely):

Minecraft Server Details:
- Server Address: mc.mydomain.com:25565
- Username: TheirKid
- Password: simplepass123

Your child will need to type "/login simplepass123" after joining.

Step 4: Record in Your Password List

Add to your tracking file:

TheirKid | simplepass123 | Friend Name | parent@email.com | 2025-11-29

Step 5: Kid Joins!

Kid connects to server and types:

/login simplepass123

Done! ✅


Step 9: Common Management Tasks

Reset a Forgotten Password

# Player forgot password
authme password Kid1 newpassword456

# Tell the kid/parent the new password

Remove a Player

# Unregister from AuthMe
authme unregister BadPlayer

# Remove from whitelist
whitelist remove BadPlayer

# Optional: Ban them
ban BadPlayer Reason for ban

Temporary Kick

# Kick player (they can rejoin)
kick PlayerName Stop being mean to others

Temporary Ban

# Ban for specific time
ban PlayerName 7d Being unkind to others

# Permanent ban
ban PlayerName Griefing is not allowed

View Who’s Online

# See online players
list

# See all whitelisted players
whitelist list

# See all registered accounts
authme accounts

Check Player Info

# Last login time
authme lastlogin Kid1

# All accounts from an IP
authme accounts

Step 10: Create Quick Reference Commands

Admin Quick Reference

Save this somewhere handy:

# ADD NEW PLAYER
whitelist add PlayerName
authme register PlayerName password123

# RESET PASSWORD
authme password PlayerName newpassword

# REMOVE PLAYER
authme unregister PlayerName
whitelist remove PlayerName

# KICK/BAN
kick PlayerName reason
ban PlayerName time reason
pardon PlayerName

# VIEW INFO
whitelist list
authme accounts
list
authme lastlogin PlayerName

# RELOAD CONFIG
authme reload

Step 11: Player Instructions for Parents

Create a simple guide to share with parents:

=== Minecraft Server - Player Guide ===

SERVER ADDRESS: mc.mydomain.com:25565

USERNAME: [provided by admin]
PASSWORD: [provided by admin]

HOW TO JOIN:
1. Open Minecraft (Java Edition)
2. Click "Multiplayer"
3. Click "Add Server"
4. Server Name: [Your Server Name]
5. Server Address: mc.mydomain.com:25565
6. Click "Done"
7. Double-click server to join

AFTER JOINING:
- Type in chat: /login [your password]
- Example: /login cookie123

HELP:
- If you forget your password, contact [your name]
- If you can't connect, contact [your name]

RULES:
- Be kind to others
- No griefing (breaking others' stuff)
- No stealing
- Have fun!

Step 12: Safety & Monitoring

Tracks who breaks/places blocks:

Add to your server’s plugin configuration:

PLUGINS: |
  https://github.com/AuthMe/AuthMeReloaded/releases/download/5.6.0-beta2/AuthMe-5.6.0-beta2.jar
  https://github.com/PlayPro/CoreProtect/releases/download/22.4/CoreProtect-22.4.jar

Usage:

# Enable inspector mode
/co inspect

# Right-click blocks to see who placed/broke them

# Rollback a player's actions
/co rollback u:BadPlayer t:30m

# Restore (undo rollback)
/co restore u:Kid1 t:1h

Regular Checks

Daily:

  • Check who’s online: list
  • Monitor chat for issues

Weekly:

  • Review server logs
  • Check for unusual activity
  • Make backups

Monthly:

  • Review whitelist (remove inactive players)
  • Update plugins
  • Check disk space

Troubleshooting

Player Says “Registration is disabled”

✅ This is correct! Tell them:

  • They cannot register themselves
  • They need to contact you for an account
  • You will pre-register them

Player Forgot Password

# Reset it
authme password PlayerName newpassword123

# Tell them the new password

Player Can’t Join Server

Check:

  1. Are they whitelisted? whitelist list
  2. Are they registered? authme accounts PlayerName
  3. Is server online? list
  4. Firewall/network issue?

Fix:

# Add to whitelist
whitelist add PlayerName

# Pre-register if needed
authme register PlayerName password

“Too many login attempts”

Player entered wrong password too many times.

Wait 5-10 minutes, or:

# Unregister and re-register
authme unregister PlayerName
authme register PlayerName newpassword

Player’s Inventory Missing After Login

This is an AuthMe feature for security.

To disable (not recommended): Edit config.yml:

ProtectInventoryBeforeLogIn: false

Security Checklist

Before opening server to kids:

  • Whitelist enabled (white-list=true)
  • Only you are OP (check ops.json)
  • AuthMe registration disabled (registration: enabled: false)
  • Self-registration tested and blocked
  • Test account created and working
  • Password list created and secured
  • Parent instructions prepared
  • Server rules written
  • Backup system in place
  • Monitoring tools configured (optional)

Complete Configuration Reference

server.properties

white-list=true
op-permission-level=4
enable-command-block=false
spawn-protection=16
allow-flight=false
online-mode=false

AuthMe config.yml (Key Sections)

settings:
  registration:
    enabled: false
    force: false
  sessions:
    enabled: true
    timeout: 60
  security:
    minPasswordLength: 4
    maxLoginPerIp: 5
    maxJoinPerIp: 3
  ProtectInventoryBeforeLogIn: true
  allowCommands:
    - /login
    - /help
    - /l

  1. Parent requests access for their kid
  2. You pre-register: whitelist add Kid && authme register Kid pass
  3. Share credentials with parent (username + password + server address)
  4. Kid joins and logs in: /login password
  5. Record in password list for future reference
  6. Monitor and moderate as needed

Benefits of This Approach

✅ Full control - You approve every account
✅ No unwanted players - Only whitelisted can join
✅ Simple for kids - Just need to remember /login password
✅ Easy password recovery - You can reset anytime
✅ Parent involvement - Parents request access
✅ Safe environment - No random players
✅ No OP accidents - Kids can’t become admin


Next Steps

  1. ✅ Complete Steps 1-6 above
  2. ✅ Test with a dummy account
  3. ✅ Pre-register your own kids
  4. ✅ Create parent instructions document
  5. ✅ Share server info with trusted parents
  6. ✅ Monitor and have fun!

Support & Resources

  • AuthMe Documentation: https://github.com/AuthMe/AuthMeReloaded/wiki
  • Minecraft Commands: https://minecraft.fandom.com/wiki/Commands
  • Server Management: Check your server logs in /logs/latest.log

Last Updated: November 28, 2025