Deploying Luanti
Introduction
Luanti (formerly known as Minetest) is an open-source voxel game engine that provides a platform for creating and playing sandbox games similar to Minecraft. Unlike traditional games, Luanti is a game engine that can run various games and supports extensive modding through its Lua API. The project was renamed to Luanti in 2024 to better reflect its nature as a game creation platform rather than a single game.
With Luanti, you can host multiplayer servers for various game types, from survival and creative building to educational environments and mini-games. The engine’s lightweight design means it runs efficiently on modest hardware while supporting up to 255 players on a single server.
Key highlights of Luanti:
- Voxel Game Engine: Create and play various sandbox games
- Easy Modding: Extensive Lua API for custom content
- Multiple Games: Support different games on the same engine
- Cross-Platform: Players can join from Windows, macOS, Linux, Android
- Multiplayer: Host servers supporting up to 255 players
- Resource Efficient: Low hardware requirements
- Content Database: Access thousands of mods and games
- Educational Use: Popular in schools for teaching programming
- Active Community: Large community of modders and players
- Open Source: LGPL/MIT licensed with active development
This guide walks through deploying a Luanti server on Klutch.sh using Docker, configuring your game world, and managing mods and content.
Why Deploy Luanti on Klutch.sh
Deploying Luanti on Klutch.sh provides several advantages:
Always Online: Your game server remains accessible 24/7 without managing personal hardware.
Persistent Worlds: Attach persistent volumes for your world data. Player progress and builds survive restarts.
Easy Management: Docker deployment simplifies server administration.
GitHub Integration: Connect your configuration repository directly from GitHub for version-controlled server settings.
Scalable Resources: Allocate CPU and memory based on expected player count and world complexity.
Custom Domains: Use a memorable domain for players to connect.
Geographic Reach: Deploy close to your player base for better latency.
Prerequisites
Before deploying Luanti on Klutch.sh, ensure you have:
- A Klutch.sh account
- A GitHub account with a repository for your server configuration
- Basic familiarity with Docker and game server management
- Players with Luanti/Minetest clients installed
Understanding Luanti Architecture
Luanti server uses a straightforward architecture:
Game Engine: The core Luanti engine handles world generation, physics, and client connections.
Games: Games are collections of mods that define gameplay. Popular games include Minetest Game, Mineclone 2, and NodeCore.
Mods: Lua scripts that extend functionality, add items, or modify gameplay.
World Data: Player data, map chunks, and metadata stored in the world directory.
Configuration: Server settings in minetest.conf control gameplay parameters.
Preparing Your Repository
To deploy Luanti on Klutch.sh, create a GitHub repository containing your Docker configuration.
Repository Structure
luanti-server/├── Dockerfile├── docker-compose.yml├── minetest.conf├── mods/└── .dockerignoreCreating the Dockerfile
Create a Dockerfile using LinuxServer’s image:
FROM lscr.io/linuxserver/luanti:latest
# Set environment variablesENV PUID=1000ENV PGID=1000ENV TZ=UTC
# Copy server configurationCOPY minetest.conf /config/.minetest/minetest.conf
# Copy custom mods (if any)COPY mods/ /config/.minetest/mods/
# Expose the game portEXPOSE 30000/udp
# The base image includes the default entrypointAlternative: Official Luanti Image
Using the official Luanti image:
FROM ghcr.io/luanti-org/luanti:latest
# Set working directoryWORKDIR /var/lib/minetest
# Copy configurationCOPY minetest.conf /etc/minetest/minetest.conf
# Expose the game portEXPOSE 30000/udp
CMD ["minetestserver", "--config", "/etc/minetest/minetest.conf"]Creating Server Configuration
Create minetest.conf:
# Server Settingsname = My Luanti Serverdescription = Welcome to my Luanti server!address =port = 30000max_users = 15creative_mode = falseenable_damage = trueenable_pvp = true
# Securitydefault_privs = interact, shoutdisallow_empty_password = trueenable_rollback_recording = true
# World Settingsdefault_game = minetestmotd = Welcome! Please read /rules
# Performancemax_block_send_distance = 10max_simultaneous_block_sends_per_client = 10dedicated_server_step = 0.05
# Server Listing (optional)server_announce = falseserverlist_url = servers.minetest.net
# Adminname = admin
# Debug (disable in production)debug_log_level = warningCreating Docker Compose Configuration
Create docker-compose.yml for reference:
version: '3.8'
services: luanti: image: lscr.io/linuxserver/luanti:latest container_name: luanti-server restart: unless-stopped ports: - "30000:30000/udp" environment: - PUID=1000 - PGID=1000 - TZ=UTC - CLI_ARGS=--gameid minetest volumes: - luanti_config:/config/.minetest
volumes: luanti_config:Creating the .dockerignore File
Create a .dockerignore file:
.git.github*.mdLICENSE.gitignore*.log.DS_Store.env.env.localEnvironment Variables Reference
| Variable | Required | Default | Description |
|---|---|---|---|
PUID | No | 1000 | User ID for file permissions |
PGID | No | 1000 | Group ID for file permissions |
TZ | No | UTC | Timezone |
CLI_ARGS | No | - | Additional server command arguments |
Deploying Luanti on Klutch.sh
Once your repository is prepared, follow these steps to deploy:
- Select UDP as the traffic type
- Set the internal port to 30000
- Detect your Dockerfile automatically
- Build the container image
- Attach the persistent volumes
- Start the Luanti server
- Configure UDP port forwarding
- Server address:
your-app-name.klutch.sh - Port:
30000
Push Your Repository to GitHub
Initialize your repository and push to GitHub:
git initgit add Dockerfile minetest.conf docker-compose.yml .dockerignoregit commit -m "Initial Luanti server configuration"git remote add origin https://github.com/yourusername/luanti-server.gitgit push -u origin mainCreate a New Project on Klutch.sh
Navigate to the Klutch.sh dashboard and create a new project. Give it a descriptive name like “luanti-server” or “game-server”.
Create a New App
Within your project, create a new app. Connect your GitHub account if you haven’t already, then select the repository containing your Luanti configuration.
Configure UDP Traffic
In the deployment settings:
Set Environment Variables
In the environment variables section:
| Variable | Value |
|---|---|
PUID | 1000 |
PGID | 1000 |
TZ | Your timezone (e.g., America/New_York) |
Attach Persistent Volumes
Add persistent storage for your world and configuration:
| Mount Path | Recommended Size | Purpose |
|---|---|---|
/config/.minetest | 20 GB | World data, mods, and configuration |
Deploy Your Application
Click Deploy to start the build process. Klutch.sh will:
Connect to Your Server
Once deployment completes, players can connect using:
Server Configuration
Game Selection
Choose which game to run:
# In minetest.confdefault_game = minetest
# Or use CLI_ARGS environment variableCLI_ARGS=--gameid mineclone2Popular games:
- minetest: The classic Minetest Game
- mineclone2: Minecraft-like experience
- nodecore: Technology progression game
- bucket_game: Adventure-focused gameplay
Player Privileges
Configure default player privileges:
# Basic privilegesdefault_privs = interact, shout
# More permissivedefault_privs = interact, shout, home, teleport
# Available privileges:# interact - interact with objects# shout - chat# home - set and use home position# teleport - teleport to coordinates# bring - bring players to you# give - spawn items# settime - change time# fast - fast movement# fly - flying# noclip - pass through walls# basic_privs - grant basic privs# privs - grant any privileges# server - server management# ban - ban/unban players# kick - kick players# rollback - use rollbackWorld Settings
Configure world generation:
# Map generationmg_name = v7mg_flags = caves, dungeons, light, decorations
# Seed (for reproducible worlds)fixed_map_seed = 12345
# World border (optional)mapgen_limit = 31000Performance Tuning
Optimize for your player count:
# For small servers (< 10 players)max_block_send_distance = 10max_simultaneous_block_sends_per_client = 10dedicated_server_step = 0.05
# For larger servers (10+ players)max_block_send_distance = 8max_simultaneous_block_sends_per_client = 8dedicated_server_step = 0.03
# Reduce memory usagemax_clearobjects_extra_loaded_blocks = 512num_emerge_threads = 1Installing Mods
Adding Mods
Add mods to your server:
- Download mods from ContentDB
- Place mod folders in the
mods/directory - Enable mods in
world.mtor server settings
Popular Server Mods
- areas: Protected regions
- worldedit: Building tools
- skins: Player customization
- unified_inventory: Enhanced inventory
- technic: Technology mod pack
- mesecons: Redstone-like circuits
- mobs_redo: Animals and creatures
Mod Configuration
Configure mods in minetest.conf:
# Enable specific modsload_mod_areas = trueload_mod_worldedit = true
# Mod-specific settingsareas.self_protection = trueareas.legacy_table = trueServer Administration
In-Game Commands
Common server commands:
/status - Server status/kick <player> - Kick a player/ban <player> - Ban a player/unban <player> - Unban a player/grant <player> <privilege> - Grant privilege/revoke <player> <privilege> - Remove privilege/teleport <player> <x> <y> <z> - Teleport player/shutdown - Shut down server/clearobjects - Clear dropped itemsRemote Console
Configure remote console access:
# Enable remote consoleremote_console = true# Set password (change this!)remote_console_password = your_secure_passwordBackups
Protect your world:
- Automated Backups: Back up
/config/.minetest/worlds/regularly - Player Data: Include
players/directory in backups - Configuration: Version control your
minetest.conf
Production Best Practices
Security Recommendations
- Strong Passwords: Require passwords for all players
- Privilege Management: Grant minimal necessary privileges
- Mod Vetting: Review mods before installation
- Regular Updates: Keep server and mods updated
- Ban Management: Maintain ban lists for problematic players
Performance Optimization
- Resource Allocation: Scale based on player count
- World Limits: Set reasonable map boundaries
- Object Cleanup: Schedule regular clearobjects
- Mod Selection: Avoid resource-heavy mods
Community Management
- Rules: Display clear server rules
- Moderation: Appoint trusted moderators
- Communication: Set up Discord or forum
- Events: Organize community activities
Troubleshooting Common Issues
Players Cannot Connect
Symptoms: Connection timeout or refused.
Solutions:
- Verify UDP port 30000 is configured
- Check server is running
- Confirm address and port
- Test from different network
World Not Loading
Symptoms: Server starts but world is empty.
Solutions:
- Check world directory exists
- Verify game ID is correct
- Review server logs for errors
- Check file permissions
Mod Errors
Symptoms: Server crashes or mods don’t work.
Solutions:
- Check mod compatibility
- Review server logs
- Verify mod dependencies
- Update to latest mod versions
Performance Issues
Symptoms: Lag or slow response.
Solutions:
- Reduce max_block_send_distance
- Increase allocated resources
- Clear inactive player data
- Optimize world with clearobjects
Additional Resources
- Luanti GitHub Repository
- Luanti Official Website
- LinuxServer Luanti Docker Documentation
- ContentDB - Mods and Games
- Server Setup Wiki
- Klutch.sh Persistent Volumes
- Klutch.sh Deployments
Conclusion
Deploying Luanti on Klutch.sh gives you a powerful voxel game server with persistent worlds and easy management. The combination of Luanti’s extensive modding capabilities and Klutch.sh’s reliable hosting creates an excellent foundation for community game servers.
With support for multiple games, thousands of mods, and up to 255 players, Luanti scales from small private servers to large community hubs. The Docker deployment ensures consistent, reproducible server environments that can be version-controlled alongside your mods and configuration.
Whether you’re hosting a creative building server, survival adventure, or educational environment, Luanti on Klutch.sh provides the infrastructure for engaging multiplayer experiences.