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
- Whitelist: Only approved usernames can connect
- AuthMe: Password required for each username
- 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
-
Join the server with a test account (or ask someone to test)
-
Try to register:
/register testpass testpass -
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
Install CoreProtect (Optional but Recommended)
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:
- Are they whitelisted?
whitelist list - Are they registered?
authme accounts PlayerName - Is server online?
list - 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
Recommended Workflow Summary
- Parent requests access for their kid
- You pre-register:
whitelist add Kid && authme register Kid pass - Share credentials with parent (username + password + server address)
- Kid joins and logs in:
/login password - Record in password list for future reference
- 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
- ✅ Complete Steps 1-6 above
- ✅ Test with a dummy account
- ✅ Pre-register your own kids
- ✅ Create parent instructions document
- ✅ Share server info with trusted parents
- ✅ 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