Docker-WebApp, die einen echten Minecraft Java-Client (Prism Launcher) in einem Container mit virtuellem Display betreibt und per noVNC im Browser anzeigt. Gedacht, um Accounts AFK an Farmen zu stellen. - Multi-Stage Dockerfile: Vite/Vue-Build + Ubuntu-Runtime (Xvfb, x11vnc, websockify, noVNC, openbox, nginx, Prism Launcher 11.0.3) - Vue 3 + Vite + TypeScript Dashboard (noVNC-iframe, Start/Stop, Status-Anzeige, Schnellstart-Anleitung) - Node-Status-API ohne externe Dependencies (/api/status, /api/mc/*) - docker-compose.yml mit PUID/PGID, konfigurierbarer Auflösung, shm_size - Persistente Accounts/Instanzen in /config (Volume) |
||
|---|---|---|
| docker | ||
| web | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| docker-compose.yml | ||
| Dockerfile | ||
| README.md | ||
⛏ CTmine-client · ContainerMine Client
Eine Docker-WebApp, die einen echten Minecraft Java-Client im Container laufen lässt und ihn per noVNC direkt im Browser anzeigt. Ideal, um einen Account AFK an eine Farm zu stellen — ohne lokalen Minecraft-Client oder Java-Installation.
Das Dashboard ist eine Vite + Vue 3-Anwendung, die im selben Container mit ausgeliefert wird.
Architektur
Browser ──HTTP/WS──▶ nginx (:8080)
├── / → Vue-Dashboard (statisch)
├── /api/* → Node-Status-API (127.0.0.1:3000)
└── /websockify → websockify (127.0.0.1:6080)
│
supervisord verwaltet ▼
Xvfb :0 → x11vnc → websockify → Browser
▲
Prism Launcher + echter Minecraft-Client
(rendert per Software-OpenGL/llvmpipe auf Xvfb)
Warum Prism Launcher statt offiziellem Mojang-Launcher? Der Mojang-Launcher
nutzt für den Microsoft-Login ein eingebettetes Webview, das in einem headlessen
Container regelmäßig Probleme macht. Prism startet denselben Vanilla-Client,
ist aber container-freundlich und nutzt den Device-Code-Flow für den Login:
Code notieren → microsoft.com/link auf irgendeinem Gerät öffnen → fertig.
Voraussetzungen
- Docker (mit BuildKit) und Docker Compose v2
- ~2 GB freier Speicher für das Image
- Einen gültigen Microsoft-Account mit Minecraft-Lizenz
- Chromium/Firefox (für WebGL & WebSocket in noVNC)
Lokales Bauen ohne Docker ist nicht vorgesehen. Wenn du nur das Dashboard entwickeln willst, siehe Entwicklung.
Schnellstart
# 1. Env-Datei erzeugen und anpassen
cp .env.example .env
# PUID/PGID mit `id -u` / `id -g` setzen, damit ./config dir gehört.
# 2. Image bauen und starten
docker compose up -d --build
# 3. Dashboard öffnen
# http://localhost:8080
Erster Login (einmalig)
- Dashboard öffnen → http://localhost:8080
- Auf „Instanz starten“ klicken. Prism Launcher öffnet sich im VNC-Fenster.
- In Prism oben rechts: Konto → Konto hinzufügen → Microsoft.
- Prism zeigt einen Code an. Auf irgendeinem Gerät
https://microsoft.com/linköffnen, Code eingeben, mit Microsoft einloggen. - Zurück in Prism: im Hauptfenster die gewünschte Instanz wählen und auf „Spielen“ klicken. Prism lädt die passende Minecraft-Version + Java automatisch herunter.
- Im Minecraft-Hauptmenü: Mehrspieler → Server hinzufügen → Adresse der Farm eingeben → Verbinden.
Ab jetzt ist der Account auf der Farm. Der Login liegt persistent in
./config/prism und bleibt auch nach docker compose down erhalten.
Tipp: Bevor du den Container Neustartest, kannst du in Minecraft über Optionen → Steuerelemente auch schon die korrekte Farm-Anbindung (z. B. eine Trade/Anti-AFK-Makro-Mod) konfigurieren — sie bleibt erhalten.
AFK-Farm-Setup
Die konkrete Einrichtung hängt von deiner Farm ab. Typische Schritte:
- Anti-AFK: periodisch springen/bewegen, damit der Server dich nicht kickt. Du kannst die Vanilla-Funktion (z. B. Wasserstrom, der dich ständig leicht bewegt) nutzen oder eine Client-Mod wie Mouse Tweaks / Inventory Profiles installieren. Mods legst du über Prism in die jeweilige Instanz.
- Auto-Reconnect: manche Server trennen nach Stunden. Nutze ggf. eine Reconnect-Mod.
- Fenster offen lassen: Solange das Dashboard geöffnet ist, siehst du den Client live. Du kannst den Tab schließen — Minecraft läuft im Container weiter. Nur der Container muss laufen.
Konfiguration (.env)
| Variable | Standard | Bedeutung |
|---|---|---|
PUID / PGID |
1000 |
UID/GID des Container-Benutzers. Mit id -u/id -g deines Host-Users setzen, damit ./config dir gehört. |
TZ |
Europe/Berlin |
Zeitzone des Containers. |
DISPLAY_WIDTH |
1280 |
Breite des virtuellen Displays (MC-Auflösung). |
DISPLAY_HEIGHT |
720 |
Höhe des virtuellen Displays. |
DISPLAY_DEPTH |
24 |
Farbtiefe (24 = 8-bit RGB). |
DISPLAY_REFRESH |
60 |
Bildwiederholrate des virtuellen Displays. |
WEB_PORT |
8080 |
Browser-Port. |
VNC_PASSWORD |
(leer) | Optional. Leer = ohne Auth (nur lokales Netz!). |
API
| Methode | Pfad | Beschreibung |
|---|---|---|
GET |
/api/status |
Status von Display, VNC und Minecraft. |
POST |
/api/mc/start |
Startet Prism Launcher. |
POST |
/api/mc/stop |
Beendet Prism + Minecraft. |
Beispiel:
curl -X POST http://localhost:8080/api/mc/start
Dashboard entwickeln
Für die Vue-Entwicklung ohne jedes Mal neu zu bauen:
cd web
npm install
npm run dev # → http://localhost:5173 (proxyt /api + /websockify nach :8080)
Damit das Dev-Dashboard funktioniert, muss der Container laufen
(docker compose up -d), damit der VNC-Stream und die API erreichbar sind.
Performance-Hinweise
- Minecraft rendert im Container per llvmpipe (CPU-Software-OpenGL). Für AFK-Farmen absolut ausreichend (~1–2 CPU-Kerne), aber kein flüssiges PVP.
shm_size: 1gbist gesetzt, damit OpenGL genug Shared Memory hat.- Bei verfübarer GPU kannst du
/dev/dridurchreichen (indocker-compose.ymlauskommentiert). MC nutzt dann Hardware-Rendering.
Projektstruktur
CTmine-client/
├── Dockerfile # Multi-Stage: Vue-Build + Runtime
├── docker-compose.yml
├── .env.example
├── docker/
│ ├── entrypoint.sh # PUID/PGID, /config, Xvfb/x11vnc-Conf generieren
│ ├── supervisor.conf # Prozess-Manager für alle Dienste
│ ├── nginx.conf # Dashboard + /api + /websockify Proxy
│ └── mc-api/ # Node-Status-API (ohne externe Dependencies)
│ ├── server.js
│ └── package.json
└── web/ # Vite + Vue 3 + TypeScript Dashboard
├── package.json · vite.config.ts · tsconfig.json
└── src/
├── App.vue · main.ts · api.ts · types.ts
├── styles/main.css
└── components/
├── VncViewer.vue # noVNC-Integration
├── ControlPanel.vue # MC Start/Stop, Schnellstart-Anleitung
└── StatusBar.vue # Status-Indikatoren
Bekannte Einschränkungen
- Sound ist im MVP nicht konfiguriert (für AFK-Farmen irrelevant).
- Erster Login interaktiv: der Microsoft-Login muss einmalig im VNC-Fenster per Device-Code durchgeführt werden. Danach persistent.
- EULA/Nutzungsbedingungen: Dieses Projekt stellt nur die Infrastruktur bereit. Du bist selbst für die Einhaltung der Mojang/Minecraft-Nutzungs- bedingungen und der Regeln deines Zielservers verantwortlich.
Lizenz
MIT — siehe LICENSE falls beigefügt. Minecraft ist Eigentum von Mojang/Microsoft;
dieses Projekt steht nicht in offizieller Verbindung.