# VM-01

minecraft-server

Public game server managed with Crafty Controller, Docker, Cloudflare Tunnel, and Tailscale.

Overview

Provide a self-hosted multiplayer Minecraft server accessible from anywhere.

Runtime Architecture

Players

Cloudflare DNS (Custom Domain)

Tailscale Exit Point (Oracle VPS)

Tailscale Network

Minecraft VM

Crafty Container

Minecraft Server

Infrastructure Architecture

Proxmox VM:
└── VM-01 Minecraft Server
    ├── Crafty Controller
    ├── Minecraft Fabric Server
    ├── Node Exporter
    └── cAdvisor

Challenges

  • Lost Access to Crafty DashboardAfter restarting the container, I could no longer log into Crafty Controller. The existing credentials were not recognized, making the dashboard inaccessible.
  • Understanding Crafty's New Data StructureWhile troubleshooting the login issue, I discovered that Crafty v4 stores account information in JSON files instead of the SQLite database, which is now mainly used for statistics and logging.
  • Finding the Correct Runtime EnvironmentAccessing Crafty's internal files was more complicated than expected because parts of the application run inside a hidden Python virtual environment and packaged executables.
  • Import Server Did Not Work as ExpectedThe built-in Import Server feature opened my local Windows file browser instead of scanning directories inside the Linux server, preventing automatic server discovery.
  • Minecraft Session Validation ErrorsPlayers were unable to join because the server was configured with online-mode enabled, causing authentication failures in my current setup.

Solutions

  • Recovering Dashboard AccessI inspected the container directly using Docker CLI tools and searched the file system for stored credentials. This led me to the original login information stored in a hidden configuration file.
  • Rebuilding the Crafty EnvironmentAfter isolating the Minecraft world files, I removed the corrupted Crafty state and performed a clean initialization to restore the management panel.
  • Reconnecting Existing Minecraft WorldsI mounted the preserved server files back into Crafty's expected directory structure, allowing the application to detect and register the existing server automatically.
  • Fixing Player Authentication IssuesI modified the server configuration and disabled online-mode, allowing players to connect successfully in my current homelab environment.

What I Learned

  • How Crafty Controller manages users, configuration files, and server data internally.
  • Using Docker CLI and Linux command-line tools for troubleshooting when web interfaces are not sufficient.
  • Understanding the difference between application data, configuration data, and runtime containers.
  • Managing multiple services and ports inside a self-hosted environment.
  • Recovering services safely without losing important world data.