Skip to content

Environment Variables

Configure your Lumo server using environment variables. Pass them with -e flag in Docker or in docker-compose.yml.

VariableDefaultDescription
EULAfalseREQUIRED. Set to true to accept the Minecraft EULA. Server won’t start without this.
VariableDefaultDescription
MEMORY4GJVM heap size. Recommended: 2G (small), 4G (medium), 6G (large), 8G+ (very large)
MAX_TICK_TIME-1Maximum tick time before watchdog kills server. -1 disables watchdog.
NETWORK_COMPRESSION_THRESHOLD256Network compression threshold in bytes. Higher = less CPU, more bandwidth.
VariableDefaultDescription
MAX_PLAYERS20Maximum number of players allowed on the server
DIFFICULTYnormalGame difficulty: peaceful, easy, normal, hard
GAMEMODEsurvivalDefault gamemode: survival, creative, adventure, spectator
HARDCOREfalseEnable hardcore mode (players banned on death)
PVPtrueEnable player vs player combat
PLAYER_IDLE_TIMEOUT0Kick idle players after N minutes. 0 = disabled
VariableDefaultDescription
MOTDWelcome to the Lumo Universe!Message of the day shown in server list
ONLINE_MODEtrueVerify players with Mojang servers. Keep true for security
VariableDefaultDescription
VIEW_DISTANCE12Server-side view distance in chunks (3-32). Higher = more RAM usage
SIMULATION_DISTANCE10Distance in chunks where mobs/crops update (3-32)
SPAWN_PROTECTION0Radius around spawn where only ops can build. 0 = disabled
SPAWN_ANIMALStrueSpawn passive mobs (cows, pigs, etc.)
SPAWN_MONSTERStrueSpawn hostile mobs (zombies, skeletons, etc.)
SPAWN_NPCStrueSpawn villagers
ENTITY_BROADCAST_RANGE100Percentage of normal entity tracking distance
VariableDefaultDescription
ALLOW_FLIGHTtrueAllow flight (required for creative mode and some plugins)
ENABLE_COMMAND_BLOCKtrueEnable command blocks
WHITELISTfalseEnable whitelist (only whitelisted players can join)
ENFORCE_WHITELISTfalseKick non-whitelisted players if whitelist is enabled mid-session
VariableDefaultDescription
OPS""Comma-separated list of operators. Format: Player1,Player2:3,Player3:2 where :N is op level (1-4)

Op Levels:

  • 1: Can bypass spawn protection
  • 2: Can use /clear, /difficulty, /effect, /gamemode, /tp
  • 3: Can use /ban, /kick, /op
  • 4: Can use /stop (full control)

Examples:

Terminal window
-e OPS="Player1" # Op level 4 (default)
-e OPS="Player1,Player2" # Multiple ops, level 4
-e OPS="Player1:4,Player2:2" # Different op levels
VariableDefaultDescription
WHITELIST_USERS""Comma-separated list of whitelisted players

Example:

Terminal window
-e WHITELIST=true -e WHITELIST_USERS="Player1,Player2,Player3"
VariableDefaultDescription
ENABLE_RCONtrueEnable RCON for remote server management
RCON_PASSWORDminecraftRCON password. Change in production!
RCON_PORT25575RCON port

Security Warning: Change RCON_PASSWORD in production! Default password is widely known.

Terminal window
-e RCON_PASSWORD="$(openssl rand -base64 32)"
VariableDefaultDescription
ENABLE_AUTOPAUSEtrueEnable autopause when no players are online
AUTOPAUSE_TIMEOUT10Minutes of idle time before pausing
AUTOPAUSE_POLL_INTERVAL30Seconds between player checks

How it works:

  • Server monitors player count and chunk loading
  • After AUTOPAUSE_TIMEOUT minutes of no activity, pauses JVM with SIGSTOP
  • wake-listener.py shows “server sleeping” message to connecting players
  • Server automatically resumes when player tries to connect

When to disable:

  • Running in Kubernetes (conflicts with health checks)
  • Need guaranteed uptime
  • Running scheduled tasks/plugins
VariableDefaultDescription
BACKUP_ENABLEDtrueEnable automated backups
BACKUP_INTERVAL86400Backup interval in seconds (86400 = 24 hours)
BACKUP_DIR/backupsDirectory to store backups
BACKUP_COMPRESSIONgzCompression format: gz (fast), bz2 (smaller), xz (smallest)
VariableDefaultDescription
BACKUP_RETENTION_DAYS7Keep all backups from last N days
BACKUP_RETENTION_WEEKS4After daily retention, keep one backup per week for N weeks

Example: With defaults (7 days + 4 weeks), you’ll have ~11 backups at any time.

VariableDefaultDescription
S3_ENABLEDfalseEnable S3 uploads
S3_BUCKET""S3 bucket name
S3_PREFIXminecraft-backupsS3 object prefix/folder
S3_ENDPOINT""Custom endpoint for MinIO, Backblaze B2, etc. Leave empty for AWS S3
AWS_ACCESS_KEY_ID-AWS access key (required if S3_ENABLED=true)
AWS_SECRET_ACCESS_KEY-AWS secret key (required if S3_ENABLED=true)
AWS_DEFAULT_REGION-AWS region (e.g., us-east-1)

AWS S3 Example:

Terminal window
-e S3_ENABLED=true \
-e S3_BUCKET=minecraft-backups \
-e AWS_ACCESS_KEY_ID=AKIA... \
-e AWS_SECRET_ACCESS_KEY=... \
-e AWS_DEFAULT_REGION=us-east-1

MinIO Example:

Terminal window
-e S3_ENABLED=true \
-e S3_BUCKET=minecraft \
-e S3_ENDPOINT=https://minio.example.com \
-e AWS_ACCESS_KEY_ID=minioadmin \
-e AWS_SECRET_ACCESS_KEY=minioadmin
VariableDefaultDescription
RCLONE_ENABLEDfalseEnable rclone for cloud backups
RCLONE_DEST""Rclone destination (e.g., remote:bucket/folder)

Requires: Mount rclone config into container

Terminal window
-v ~/.config/rclone:/root/.config/rclone:ro

Example:

Terminal window
-e RCLONE_ENABLED=true \
-e RCLONE_DEST="gdrive:minecraft-backups" \
-v ~/.config/rclone:/root/.config/rclone:ro
VariableDefaultDescription
DISCORD_WEBHOOK_URL""Discord webhook URL for backup notifications

Setup:

  1. Server Settings → Integrations → Webhooks → New Webhook
  2. Copy webhook URL
  3. Pass as environment variable
Terminal window
-e DISCORD_WEBHOOK_URL="https://discord.com/api/webhooks/..."
VariableDefaultDescription
ENABLE_CHUNKERtrueEnable Chunker plugin for world pre-generation

More plugin-specific configuration available in plugin config files. See Plugin Configuration.

Terminal window
docker run -e EULA=true -p 25565:25565 ghcr.io/lucasilverentand/lumo-server:latest
Terminal window
docker run -d --name minecraft-server \
--restart unless-stopped \
-e EULA=true \
-e MEMORY=6G \
-e MAX_PLAYERS=30 \
-e DIFFICULTY=hard \
-e MOTD="Welcome to My Server!" \
-e OPS="Admin1:4,Moderator1:3" \
-e WHITELIST=true \
-e WHITELIST_USERS="Admin1,Moderator1,Player1,Player2" \
-e RCON_PASSWORD="$(openssl rand -base64 32)" \
-e ENABLE_AUTOPAUSE=true \
-e BACKUP_ENABLED=true \
-e BACKUP_INTERVAL=43200 \
-e S3_ENABLED=true \
-e S3_BUCKET=my-minecraft-backups \
-e AWS_ACCESS_KEY_ID="${AWS_ACCESS_KEY_ID}" \
-e AWS_SECRET_ACCESS_KEY="${AWS_SECRET_ACCESS_KEY}" \
-e AWS_DEFAULT_REGION=us-east-1 \
-e DISCORD_WEBHOOK_URL="${DISCORD_WEBHOOK_URL}" \
-p 25565:25565 \
-p 8100:8100 \
-p 25575:25575 \
-p 24454:24454/udp \
-v minecraft_data:/data \
-v minecraft_backups:/backups \
ghcr.io/lucasilverentand/lumo-server:latest
version: '3.8'
services:
minecraft:
image: ghcr.io/lucasilverentand/lumo-server:latest
environment:
# Required
EULA: "true"
# Performance
MEMORY: "6G"
# Server Settings
MAX_PLAYERS: "30"
DIFFICULTY: "hard"
MOTD: "Welcome to My Server!"
# Permissions
OPS: "Admin1:4,Moderator1:3"
WHITELIST: "true"
WHITELIST_USERS: "Admin1,Moderator1,Player1"
# RCON
RCON_PASSWORD: "${RCON_PASSWORD}"
# Autopause
ENABLE_AUTOPAUSE: "true"
AUTOPAUSE_TIMEOUT: "15"
# Backups
BACKUP_ENABLED: "true"
BACKUP_INTERVAL: "43200"
S3_ENABLED: "true"
S3_BUCKET: "${S3_BUCKET}"
AWS_ACCESS_KEY_ID: "${AWS_ACCESS_KEY_ID}"
AWS_SECRET_ACCESS_KEY: "${AWS_SECRET_ACCESS_KEY}"
AWS_DEFAULT_REGION: "us-east-1"
# Notifications
DISCORD_WEBHOOK_URL: "${DISCORD_WEBHOOK_URL}"
ports:
- "25565:25565"
- "8100:8100"
- "25575:25575"
- "24454:24454/udp"
volumes:
- minecraft_data:/data
- minecraft_backups:/backups
volumes:
minecraft_data:
minecraft_backups: