Self-Hosting Crafty Controller with Docker

What Is Crafty Controller?

Crafty Controller is a self-hosted game server management panel that lets you create, monitor, and manage multiple Minecraft (Java and Bedrock) and Hytale servers from a single web interface. It replaces the need to SSH into your server and manage game instances manually — you get a dashboard with one-click server creation, file management, backups, and player administration. SteamCMD integration for games like Valheim, Rust, and ARK is in active development.

Official site: https://craftycontrol.com

Prerequisites

  • A Linux server (Ubuntu 22.04+ recommended) — do not use Docker Desktop on Windows/WSL2 (critical data corruption bug)
  • Docker and Docker Compose installed (guide)
  • 4 GB of RAM minimum (512 MB for Crafty + 1–4 GB per game server)
  • 20 GB of free disk space (grows with server count and world size)
  • Ports open for game traffic (25565 for Minecraft Java, 19132/udp for Bedrock)

Docker Compose Configuration

Create a docker-compose.yml file:

services:
  crafty:
    image: arcadiatechnology/crafty-4:4.10.1
    container_name: crafty-controller
    restart: unless-stopped
    environment:
      - TZ=Etc/UTC  # Set to your timezone
    ports:
      - "8443:8443"                    # HTTPS web UI
      - "8000:8000"                    # HTTP web UI
      - "19132:19132/udp"              # Minecraft Bedrock
      - "25565:25565"                  # Minecraft Java (default)
      - "25566:25566"                  # Additional Java server (add more as needed)
    volumes:
      - ./data/backups:/crafty/backups       # Server backups
      - ./data/logs:/crafty/logs             # Application logs
      - ./data/servers:/crafty/servers       # Game server files and worlds
      - ./data/config:/crafty/app/config     # Crafty config, database, users
      - ./data/import:/crafty/import         # Import existing servers

Start the stack:

docker compose up -d

First boot takes 30–60 seconds while Crafty initializes its database and default configuration. No external database is required — Crafty uses a built-in SQLite database.

Initial Setup

  1. Open https://your-server-ip:8443 in your browser (accept the self-signed certificate)
  2. Create your admin account — Crafty prompts for an email and password on first access
  3. From the dashboard, click Create Server
  4. Select the server type: Minecraft Java, Minecraft Bedrock, or Hytale
  5. For Java servers, choose the Java version (8, 11, 17, 21, or 25 — all bundled in the container)
  6. Set RAM allocation (1–4 GB per server is typical)
  7. Click Create — Crafty downloads the server JAR and starts it automatically

Default game server ports start at 25565 and increment. Map additional ports in your docker-compose.yml as you add servers.

Configuration

Adding more game server ports: Each Minecraft Java server needs its own port. Add port mappings to your Compose file as you create servers:

    ports:
      - "8443:8443"
      - "8000:8000"
      - "19132:19132/udp"
      - "25565:25565"
      - "25566:25566"
      - "25567:25567"
      # Add more as needed

Timezone: Set TZ to your local timezone (e.g., America/New_York, Europe/London) so log timestamps and scheduled tasks align with your clock.

Backups: Crafty has built-in backup functionality. Configure backup schedules per server from the web UI. Backups are stored in the /crafty/backups volume — point this to a drive with sufficient space.

Multi-user access: Create additional users from Settings → User Management. Assign per-server permissions so different people can manage different servers without full admin access.

API access: Crafty exposes a REST API for automation. Generate API keys from the web UI under Settings → API Keys.

Reverse Proxy

To access Crafty over HTTPS with a proper certificate, put it behind a reverse proxy. The web UI runs on port 8443 (HTTPS) or 8000 (HTTP).

Example Nginx Proxy Manager configuration:

  • Scheme: https
  • Forward Hostname: crafty-controller (or your server IP)
  • Forward Port: 8443
  • Block Common Exploits: enabled
  • Websockets Support: enabled (required for the live console)

Game server traffic (ports 25565, 19132, etc.) bypasses the reverse proxy — players connect directly to those ports. Only the web management UI benefits from a reverse proxy.

For detailed reverse proxy setup: Reverse Proxy Setup

Backup

What to back up:

VolumeContentsPriority
./data/serversGame server files, world data, pluginsCritical — this is your players’ data
./data/configCrafty database, user accounts, settingsHigh — losing this means reconfiguring Crafty
./data/backupsCrafty’s own backup archivesMedium — redundant if you back up servers/
./data/logsApplication logsLow — useful for debugging only

Crafty’s built-in backup system creates server snapshots on a schedule. For full protection, also back up the entire ./data/ directory to an external location.

For backup strategies: Backup Strategy

Troubleshooting

Server won’t start — “Java not found”

Symptom: Server creation fails with a Java-related error. Fix: Crafty Controller 4.10.1 bundles Java 8, 11, 17, 21, and 25. Make sure you selected the correct Java version for your Minecraft version. Minecraft 1.21+ requires Java 21. Older versions (1.16 and below) may need Java 8 or 11.

World corruption on Windows Docker Desktop

Symptom: Chunk data becomes corrupted after stopping or restarting a server. Fix: This is a known upstream Docker Desktop + WSL2 issue with a ~90% failure rate. Run Crafty on native Linux only — a Linux VPS, a bare-metal Linux machine, or a Linux VM. Do not use Docker Desktop on Windows for game servers.

Web UI unreachable on port 8443

Symptom: Browser shows connection refused on https://your-ip:8443. Fix: Check that port 8443 is mapped in your docker-compose.yml and not blocked by your firewall. Run docker logs crafty-controller to verify Crafty started successfully. First boot can take up to 60 seconds.

Players can’t connect to Minecraft server

Symptom: Minecraft client shows “Connection timed out.” Fix: Verify the game server port is mapped in docker-compose.yml (e.g., 25565:25565). Check your firewall allows inbound TCP on that port. For Bedrock servers, the port must be UDP (19132:19132/udp). Also confirm the server is running (green status) in the Crafty dashboard.

High memory usage

Symptom: Container uses more RAM than expected. Fix: Each game server allocates its own heap memory (typically 1–4 GB). Crafty itself uses 256–512 MB. With 3 servers at 2 GB each, expect 6.5–7 GB total. Reduce per-server RAM allocation in Server Settings → Performance, or run fewer concurrent servers.

Resource Requirements

ComponentRAMCPUDisk
Crafty Controller256–512 MBLow1–2 GB
Per Minecraft Java server1–4 GB2–4 cores (high activity)500 MB – 5 GB+ per world
Per Bedrock server1–2 GB1–2 cores200 MB – 2 GB per world

Minimum setup (Crafty + 1 small server): 2 GB RAM, 2 cores, 10 GB disk. Recommended (Crafty + 2–3 servers): 8 GB RAM, 4 cores, 50 GB disk.

Verdict

Crafty Controller is the best option for managing multiple Minecraft servers from a single interface. The web UI is polished, backup management is built-in, and the bundled Java runtimes mean zero dependency headaches. It’s lighter and more focused than Pterodactyl, which targets a broader range of games but requires a MySQL database, Redis, and a more complex setup. If you only run Minecraft (Java and/or Bedrock), Crafty is the simpler, more streamlined choice. If you need to manage Rust, ARK, Valheim, and other Steam-based games today, Pterodactyl is the more versatile option — though Crafty’s upcoming SteamCMD integration may change that.

Frequently Asked Questions

Can Crafty Controller manage Bedrock and Java servers simultaneously?

Yes. Crafty supports both Minecraft Java Edition and Bedrock Edition servers from the same dashboard. Each server type gets its own configuration — Java servers use .jar files and server.properties, while Bedrock servers use their own binary and server.properties. You can run both side by side, each on different ports.

Does Crafty Controller include automatic backups?

Yes. Crafty has built-in backup management — schedule automatic world backups at any interval, configure retention (keep last N backups), and restore from any backup through the web UI. Backups are compressed and stored locally. For off-site backup, sync the backup directory to cloud storage using Restic or rclone.

How many Minecraft servers can one Crafty instance manage?

As many as your hardware supports. Crafty itself is lightweight (~256-512 MB RAM), but each Minecraft server needs 1-4 GB RAM. A server with 16 GB RAM can comfortably run Crafty plus 3-4 Java servers. Monitor memory usage in Crafty’s dashboard and don’t over-provision — an OOM-killed Minecraft server means lost player data.

Can players connect from outside my network?

Yes, but you need to configure port forwarding on your router. Forward port 25565 (Java) or 19132 (Bedrock) to your server’s local IP. For a more secure approach, use a Tailscale or WireGuard VPN so players connect through an encrypted tunnel without exposing ports to the internet.

Does Crafty Controller support mods and plugins?

Yes. Upload mod .jar files (Forge/Fabric) or plugin .jar files (Spigot/Paper) through Crafty’s file manager in the web UI. You can also use the built-in terminal to run server commands. Crafty bundles multiple Java versions so you can run servers requiring different Java versions without manual JDK management.

How does Crafty compare to Pterodactyl?

Crafty is focused exclusively on Minecraft and is simpler to set up — single container, no database required, polished web UI. Pterodactyl supports a wider range of games (Rust, ARK, Valheim, CS2) but requires MySQL, Redis, and a more complex multi-container setup. Choose Crafty if you only run Minecraft. Choose Pterodactyl if you need multi-game support.

Comments