# 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.