Configuration Guide ​
Learn how to customize Minepanel to fit your needs.
Environment Variables ​
Minepanel uses environment variables for configuration. You can set them in:
docker-compose.ymlfile.envfile (recommended for sensitive data)- Command line when starting containers
Backend Variables ​
| Variable | Default | Description |
|---|---|---|
SERVERS_DIR | ${PWD}/servers | Directory where server files are stored |
FRONTEND_URL | http://localhost:3000 | URL where the frontend is accessible |
CLIENT_USERNAME | admin | Admin username for authentication |
CLIENT_PASSWORD | (bcrypt hash) | Admin password (bcrypt hashed) |
DEFAULT_LANGUAGE | en | Default interface language (en or es) |
BACKEND_PORT | 8091 | Port for backend API |
Frontend Variables ​
| Variable | Default | Description |
|---|---|---|
NEXT_PUBLIC_BACKEND_URL | http://localhost:8091 | Backend API URL |
NEXT_PUBLIC_FILEBROWSER_URL | http://localhost:8080 | Filebrowser URL |
NEXT_PUBLIC_DEFAULT_LANGUAGE | en | Default language (en or es) |
FRONTEND_PORT | 3000 | Port for frontend web interface |
Filebrowser Variables ​
| Variable | Default | Description |
|---|---|---|
FB_BASEURL | / | Base URL for Filebrowser |
FILEBROWSER_PORT | 8080 | Port for file browser |
Change Admin Password ​
The default password is not secure. Change it immediately after installation!
Step 1: Generate a bcrypt Hash ​
Use an online tool: bcrypt-generator.com
Enter your desired password and select rounds: 12. You'll get a hash like:
$2a$12$abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLStep 2: Escape Dollar Signs ​
In docker-compose.yml, dollar signs must be doubled ($$):
environment:
- CLIENT_PASSWORD=$$2a$$12$$abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLStep 3: Update and Restart ​
docker compose down
docker compose up -dKeep Your Password Safe
- Use a strong, unique password
- Store the bcrypt hash securely
- Never commit passwords to version control
Alternative: Using .env File ​
Create a .env file (recommended for security):
CLIENT_USERNAME=admin
CLIENT_PASSWORD=$$2a$$12$$YourBcryptHashHere...Then in docker-compose.yml:
environment:
- CLIENT_USERNAME=${CLIENT_USERNAME}
- CLIENT_PASSWORD=${CLIENT_PASSWORD}Customize Ports ​
Method 1: .env File (Recommended) ​
Create a .env file in the same directory as docker-compose.yml:
# Minepanel ports
BACKEND_PORT=8091
FRONTEND_PORT=3000
FILEBROWSER_PORT=8080
# Credentials
CLIENT_USERNAME=admin
CLIENT_PASSWORD=$$2a$$12$$YourHashHere...Then update docker-compose.yml to use these variables:
services:
minepanel:
ports:
- "${BACKEND_PORT:-8091}:8091"
- "${FRONTEND_PORT:-3000}:3000"
environment:
- CLIENT_USERNAME=${CLIENT_USERNAME:-admin}
- CLIENT_PASSWORD=${CLIENT_PASSWORD}Method 2: Direct Edit ​
Directly edit the ports in docker-compose.yml:
services:
minepanel:
ports:
- "9090:8091" # Backend on port 9090
- "8080:3000" # Frontend on port 8080Testing Port Availability
Check if a port is in use:
# Linux/Mac
sudo netstat -tulpn | grep :3000
# Windows
netstat -ano | findstr :3000Language Configuration ​
Minepanel supports multiple languages. Change the default language:
environment:
- DEFAULT_LANGUAGE=es # Spanish
# or
- DEFAULT_LANGUAGE=en # EnglishSupported languages:
en- Englishes- Spanish (Español)
Users can also change the language from the web interface.
Persistent Data ​
Understanding Volumes ​
Minepanel uses Docker volumes to persist data:
volumes:
- ${PWD}/servers:${PWD}/servers # Minecraft server data
- /var/run/docker.sock:/var/run/docker.sock # Docker control
- ./filebrowser-data:/config # Filebrowser settingsServer Data Location ​
All Minecraft servers are stored in the servers/ directory:
servers/
├── my-server-1/
│ ├── world/
│ ├── server.properties
│ ├── ops.json
│ └── ...
├── my-server-2/
│ └── ...
└── backups/
├── my-server-1/
└── my-server-2/Backup Your Data ​
Manual Backup:
# Stop servers
docker compose down
# Backup
tar -czf minepanel-backup-$(date +%Y%m%d).tar.gz servers/ filebrowser-data/
# Restart
docker compose up -dRestore from Backup:
# Stop services
docker compose down
# Extract backup
tar -xzf minepanel-backup-20241024.tar.gz
# Start services
docker compose up -dChange Server Directory ​
To store servers in a different location:
environment:
- SERVERS_DIR=/custom/path/servers
volumes:
- /custom/path/servers:/custom/path/serversPath Consistency
The SERVERS_DIR environment variable must match the volume mount path!
Resource Limits ​
Limit Minepanel's resource usage:
services:
minepanel:
deploy:
resources:
limits:
cpus: "2.0"
memory: 2G
reservations:
memory: 512MPer-Server Limits ​
You can also limit individual Minecraft servers from the Minepanel interface:
- Go to Server Settings → Resources
- Set Memory limit (e.g., 2G for 2 gigabytes)
- Set CPU cores
Network Configuration ​
Custom Network ​
Create a custom Docker network for better isolation:
networks:
minepanel:
driver: bridge
services:
minepanel:
networks:
- minepanel
filebrowser:
networks:
- minepanelExternal Access (Public Server) ​
To expose your servers to the internet:
Port Forward on your router:
- Forward port 25565 (Minecraft) → Your server IP
- Forward port 3000 (Minepanel) → Your server IP
Firewall Rules:
# Allow Minecraft port
sudo ufw allow 25565/tcp
# Allow Minepanel (only if needed externally)
sudo ufw allow 3000/tcpSecurity Warning
Never expose Minepanel directly to the internet without:
- Strong passwords
- HTTPS/SSL certificates
- A reverse proxy with security headers
- Fail2ban or similar protection
Consider using a VPN (WireGuard, Tailscale) for remote access instead.
Using Reverse Proxy ​
For production deployments, use a reverse proxy with SSL:
See Installation Guide - Split Services for detailed nginx-proxy and Traefik configurations.
HTTPS/SSL Configuration ​
With Cloudflare Tunnel (Easiest) ​
Cloudflare Tunnel provides free HTTPS without opening ports:
# Install cloudflared
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 -o cloudflared
sudo mv cloudflared /usr/local/bin/
sudo chmod +x /usr/local/bin/cloudflared
# Authenticate
cloudflared tunnel login
# Create tunnel
cloudflared tunnel create minepanel
# Route traffic
cloudflared tunnel route dns minepanel minepanel.yourdomain.com
# Run tunnel
cloudflared tunnel run minepanelWith Let's Encrypt + nginx-proxy ​
See Installation Guide - nginx-proxy example
With Caddy (Automatic HTTPS) ​
Caddy automatically obtains SSL certificates:
minepanel.yourdomain.com {
reverse_proxy localhost:3000
}
api.yourdomain.com {
reverse_proxy localhost:8091
}
files.yourdomain.com {
reverse_proxy localhost:8080
}Advanced Configuration ​
Custom Minecraft Server Defaults ​
Edit server creation defaults by mounting a config file:
{
"defaultMemory": "2G",
"defaultVersion": "1.20.1",
"defaultType": "PAPER",
"defaultPort": 25565,
"javaArgs": "-XX:+UseG1GC -XX:+ParallelRefProcEnabled"
}volumes:
- ./config.json:/app/config.json:roEnable Debug Logging ​
environment:
- LOG_LEVEL=debugDocker Socket Security ​
For enhanced security, use Docker Socket Proxy:
services:
socket-proxy:
image: tecnativa/docker-socket-proxy
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- CONTAINERS=1
- IMAGES=1
- NETWORKS=1
- VOLUMES=1
restart: always
minepanel:
environment:
- DOCKER_HOST=tcp://socket-proxy:2375
volumes:
- ${PWD}/servers:${PWD}/servers
# No direct docker.sock mountThis limits what Minepanel can do with Docker.
Updating Minepanel ​
Update from Docker Hub ​
# Pull latest image
docker pull ketbom/minepanel:latest
# Recreate container with new image
docker compose up -d
# Clean up old images
docker image pruneUpdate from Source ​
cd minepanel
git pull origin main
docker compose build
docker compose up -dTroubleshooting Configuration ​
Check Current Environment Variables ​
# View environment variables in running container
docker compose exec minepanel envReset to Defaults ​
# Stop services
docker compose down
# Remove configuration
rm .env
# Use default docker-compose.yml
docker compose up -dConfiguration Not Applied ​
Restart the containers after changing config:
bashdocker compose restartRecreate containers if restart doesn't work:
bashdocker compose up -d --force-recreate
Next Steps ​
- đź“– Learn about Features
- 🏗️ Understand Architecture
- âť“ Common Issues (FAQ)
