Bau deinen eigenen
Minecraft-Server 🟩
Hier lernst du, wie du einen Server baust, auf dem du mit deinen Freunden spielen kannst — auch wenn dein PC aus ist. Du machst das zusammen mit Papa. Ein Stück nach dem anderen. Du schaffst das!
👦 Dein Teil = grün · 🧑🔧 Papas Teil = gelbDie echten Daten von eurem Server
Diese Anleitung ist genau auf euren Server eingestellt — die Zahlen unten passen wirklich zu eurem Computer im Internet. Du brauchst sie immer wieder, also schau einfach hier nach:
- 🌐 Serveradresse
147.93.123.200(Minecraft-Tür25565) - 👑 Dein Chef-Name
CombocraftGHG(Operator + erster Whitelist-Eintrag) - 🛟 Notfall-Speicher (Swap)2 GB (haben wir in Level 2 angelegt)
- 📁 Server-Ordner (VPS)
/home/projekte/minecraft-crafty - 🔒 Fernbedienung (Panel)nur lokal
127.0.0.1:8443→ nur über Papas Geheimgang (SSH-Tunnel) - 🧠 RAM für Minecraft4096 MB (der Server hat 16 GB — da ist ordentlich Luft)
Was ist überhaupt ein Server?
Dein Computer zu Hause geht aus, wenn du ins Bett gehst. Dann ist auch deine Minecraft-Welt aus — und niemand kann rein.
Ein Server ist ein Computer, der nie ausgeht. Er steht in einem großen Rechenzentrum und läuft Tag und Nacht. Deshalb können deine Freunde jederzeit in deine Welt kommen — sogar, wenn du gar nicht da bist.
Papa hat schon so einen Computer gemietet — er heißt VPS (das ist nur ein schickes Wort für „mein eigener Server im Internet“). Ein kleines Stück davon nutzen wir jetzt für dein Minecraft.
Was ist Docker?
Docker ist wie eine magische Kiste 📦. Wir packen den Minecraft-Server in so eine Kiste. In der Kiste hat er alles, was er braucht — und er kann nichts anderes auf Papas Computer kaputt machen.
Falls mal etwas schiefgeht, ist nur die Kiste betroffen. Papas wichtige Internetseiten laufen trotzdem weiter. Praktisch, oder?
• Ein Image ist der Bauplan für die Kiste (wie ein LEGO-Bauplan).
• Ein Container ist die fertig gebaute Kiste, die gerade läuft.
Wir bauen zwei Kisten:
- 📦 Eine Kiste mit einer Fernbedienung (sie heißt Crafty Controller) — damit steuerst du alles bequem im Browser.
- 📦 Eine Kiste mit dem Minecraft-Server selbst.
Sicherheit zuerst: RAM-Bremse + Schwimmflügel
Dieser Schritt ist für Papa. Er sorgt dafür, dass der Minecraft-Server niemals die anderen Webseiten auf dem VPS lahmlegt.
147.93.123.200) hat zwar ordentlich 16 GB RAM und außer dem Minecraft-Projekt läuft nur diese Webseite darauf — trotzdem gilt: Ein Minecraft-Server ist hungrig. Ohne Bremse kann er sich mit der Zeit immer mehr Speicher nehmen → der Linux-Kernel killt dann irgendeinen Prozess (OOM) und reißt im schlimmsten Fall alles mit. Deshalb machen wir zwei Schutzmaßnahmen, bevor irgendetwas startet — das ist einfach gute Handwerksregel, egal wie viel RAM da ist.2a · Swap-Datei anlegen (der Notfall-Speicher / „Schwimmflügel“)
Swap ist Festplatte, die als Notfall-RAM einspringt. Lieber etwas langsam als ein Absturz. Wir legen 2 GB an (Platz ist genug da — fast 200 GB frei):
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# Kontrolle:
free -h
swapon --show
Damit der Swap auch nach einem Neustart automatisch wieder da ist, tragen wir ihn dauerhaft ein. Der grep -q … ||-Anfang ist ein Schutz: er schreibt die Zeile nur, wenn sie noch nicht drinsteht — so kann nie ein Doppel-Eintrag passieren:
grep -q '/swapfile' /etc/fstab || echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
# Kontrolle:
grep swapfile /etc/fstab
Optional, damit Swap erst spät benutzt wird (RAM bleibt bevorzugt — gerade hier wichtig):
sudo sysctl vm.swappiness=10
grep -q 'vm.swappiness' /etc/sysctl.conf || echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
# Kontrolle (muss 10 zeigen):
cat /proc/sys/vm/swappiness
2b · Die RAM-Bremse kommt gleich mit
Die eigentliche Begrenzung (mem_limit) setzen wir im nächsten Level direkt in der Docker-Datei. So bekommt die Minecraft-Kiste eine feste Portion RAM und kann nie mehr nehmen.
swapon --show die 2 GB Swap anzeigt und swappiness auf 10 steht.
Die Fernbedienung installieren (Crafty Controller)
Crafty Controller ist eine kinderfreundliche Weboberfläche. Damit startest und stoppst du den Server, siehst die Konsole, verwaltest Spieler und machst Backups — alles mit Klicks, ohne Tippen.
Kurzer Vorab-Check: docker compose version muss eine Version anzeigen (auf eurem Server läuft echtes Docker Engine 29 mit Compose — der Befehl ist docker compose mit Leerzeichen).
Papa legt den Ordner an (genau dort, wo auch die anderen Projekte liegen) und schreibt eine kleine Datei namens docker-compose.yml:
mkdir -p /home/projekte/minecraft-crafty && cd /home/projekte/minecraft-crafty
nano docker-compose.yml
Inhalt der Datei (die RAM-Bremse ist schon eingebaut, und das Panel ist von Anfang an sicher eingestellt!):
services:
crafty:
container_name: crafty
image: registry.gitlab.com/crafty-controller/crafty-4:latest
restart: unless-stopped
environment:
- TZ=Europe/Berlin
ports:
- "127.0.0.1:8443:8443" # Web-Panel NUR lokal -> nur per SSH-Tunnel (siehe Level 5)
- "25565:25565" # Minecraft-Server (oeffentlich, fuer deine Freunde)
volumes:
- ./crafty/backups:/crafty/backups
- ./crafty/logs:/crafty/logs
- ./crafty/servers:/crafty/servers
- ./crafty/config:/crafty/app/config
- ./crafty/import:/crafty/import
# ---- Schutz-Grenzen: feste Portion, nie mehr ----
mem_limit: 6g # mehr als 6 GB RAM darf die Kiste nie nehmen
memswap_limit: 7g # 6 GB RAM + 1 GB Swap als Notfallpuffer
pids_limit: 400
cpus: "3"
127.0.0.1:8443:8443 da — also nur am Server selbst erreichbar, nicht aus dem Internet. Warum so? Docker schreibt beim Öffnen von Ports seine eigenen Firewall-Regeln und umgeht damit ufw. Ein späteres ufw deny 8443 würde das Panel also gar nicht zusperren! Mit 127.0.0.1: davor ist die Tür von außen unsichtbar — nur Papas SSH-Tunnel (Level 5) kommt rein. Minecraft (25565) bleibt absichtlich öffentlich.Speichern (in nano: Strg+O, Enter, Strg+X) und starten:
docker compose up -d
docker compose logs -f # zuschauen, bis "Server started" kommt (Strg+C zum Beenden)
crafty muss 2GiB stehen. Das ist der Beweis, dass das Limit wirklich greift.
docker ps # läuft "crafty" als Up?
docker stats --no-stream # Spalte MEM USAGE / LIMIT -> "/ 2GiB" bei crafty
docker exec -it crafty cat /crafty/app/config/default-creds.txt
docker ps die Kiste crafty als „Up“ zeigt und docker stats bei ihr / 2GiB als Limit anzeigt.
Deinen Server bauen 🛠️
Jetzt darfst du! Öffnet im Browser das Panel (wie ihr da sicher drankommt, steht in Level 5):
https://localhost:8443 (über Papas sicheren Tunnel). Beim ersten Mal mit dem Start-Passwort einloggen.4a · Erster Login: deinen Admin sicher machen
Crafty hat am Anfang einen Standard-Benutzer namens admin mit dem Start-Passwort aus Level 3. Den machen wir sofort zu deinem Login:
- Oben auf das Zahnrad / Config → Users (Benutzer).
- Den Benutzer
adminanklicken (Bearbeiten). - User Name in deinen eigenen ändern (z. B.
combocraftGHG). - Ein neues, eigenes Passwort setzen (nur du und Papa kennen es).
- Super User muss angehakt bleiben ✅ — sonst verlierst du Rechte. Enabled ebenfalls an.
- Speichern.
combocraftGHG) ist nicht dasselbe wie dein Minecraft-Name CombocraftGHG (der kommt in Level 5 für Whitelist + Operator). Sie dürfen gleich heißen, haben aber nichts miteinander zu tun.4b · Den Server bauen
So baust du den Server, Klick für Klick:
- Oben auf „Create New Server“ klicken.
- Bei Server Type wählst du „Minecraft Java“.
- Bei Server-Software nimmst du am besten Paper — das ist wie normales Minecraft, aber schneller und braucht weniger RAM. 👍
- Eine Version aussuchen (am besten die, die du auch im Spiel hast).
- RAM einstellen: Minimum 4096 MB, Maximum 4096 MB (falls das Feld in GB ist: 4 GB). Min und Max beide auf 4096 — das reicht für euch und eure Freunde locker.
- Server Port:
25565stehen lassen — nicht ändern! Nur diese Tür ist nach draußen geöffnet. - Den Haken bei EULA akzeptieren setzen (das sind die Minecraft-Regeln — Papa liest kurz mit).
- Auf „Create“ klicken — Crafty lädt jetzt die Paper-Datei herunter (kann ~1 Minute dauern).
4c · Starten 🚀
Auf der Server-Seite den großen grünen Start-Knopf drücken und in der Konsole zuschauen, bis grün „Done!“ oder „Server started“ erscheint.
F5) → Start nochmal drücken. Das gilt nur für localhost — alle anderen Seiten bleiben in Brave geschützt. (Mit Chrome/Firefox tritt das meist nicht auf; dort ggf. ein aktives uBlock für die Seite pausieren.)docker stats --no-stream — bei crafty darf der Wert jetzt auf ~1,3–1,5 GiB steigen, muss aber unter 2GiB bleiben.Sicher machen — das Wichtigste! 🛡️
Ein Server im Internet ist wie eine offene Tür. Wir sorgen dafür, dass nur deine Freunde reinkommen und niemand Unfug macht.
5a · Nur Freunde dürfen rein (Whitelist)
Die Whitelist ist deine Gästeliste. Nur wer draufsteht, darf auf den Server. In der Crafty-Konsole tippst du:
whitelist on
whitelist add CombocraftGHG
whitelist add NameVonFreund1
whitelist add NameVonFreund2
op CombocraftGHG
Mit op CombocraftGHG wirst du der Chef (Operator) im Spiel — nur du darfst Spielregeln ändern, Wetter zaubern usw.
5b · Echte Accounts (online-mode)
In den Server-Einstellungen (oder in server.properties) prüft Papa, dass diese Sachen so stehen:
online-mode=true
white-list=true
enforce-whitelist=true
difficulty=easy
max-players=5
view-distance=8
simulation-distance=6
spawn-protection=16
online-mode=true heißt: nur echte, gekaufte Minecraft-Konten dürfen rein. Niemand kann sich als du ausgeben.
5c · Die Türen am VPS (Firewall — Papas Teil)
25565) darf offen sein. Die Fernbedienung-Tür (8443) ist dank der 127.0.0.1:-Einstellung aus Level 3 schon gar nicht nach außen offen — perfekt. Wir öffnen jetzt nur Minecraft und nutzen für das Panel den Geheimgang.Der sichere Weg zum Panel: ein SSH-Tunnel. Papa tippt auf seinem eigenen Computer (nicht auf dem VPS):
ssh -L 8443:localhost:8443 root@147.93.123.200
Solange dieses Fenster offen ist, erreicht ihr das Panel unter https://localhost:8443 — und sonst niemand auf der Welt.
Die Firewall am VPS so einstellen (öffnet Minecraft, der Rest bleibt geschützt):
sudo ufw allow 25565/tcp # Minecraft fuer deine Freunde
sudo ufw deny 8443/tcp # extra Riegel (8443 ist eh schon nur lokal)
sudo ufw enable
sudo ufw status
ufw enable kurz nachdenken: Stell sicher, dass auch SSH offen bleibt, sonst sperrst du dich selbst aus! Falls SSH auf dem Standard-Port läuft: vorher sudo ufw allow OpenSSH (oder sudo ufw allow 22/tcp) ausführen.Mitspielen 🎮
Starte Minecraft (Java Edition) auf deinem PC:
- Klick auf „Mehrspieler“.
- Dann auf „Server hinzufügen“.
- Servername: z. B. Mein CombocraftGHG-Server
- Serveradresse:
147.93.123.200(der Port25565ist der Standard und kann weg) - Auf Fertig und dann Beitreten — viel Spaß! 🟩
whitelist add Name auf die Gästeliste setzen (Level 5a).Hinter die Kulissen schauen 🔍
Die Fernbedienung (Crafty) drückt für dich eigentlich nur Knöpfe im Terminal. Willst du sehen, wie es darunter aussieht? Papa tippt mal mit dir zusammen:
docker ps # welche Kisten laufen gerade?
docker stats --no-stream # wie viel RAM/CPU braucht jede Kiste?
docker logs crafty --tail 30 # was sagt Crafty?
docker exec -it crafty bash # IN die Kiste hineingehen
ls /crafty/servers # hier liegen deine Welten!
exit # wieder rausgehen
docker ps deine laufenden Kisten gesehen hast.
Volle Kontrolle = deine Aufgaben 👑
Du hast jetzt die volle Kontrolle über deinen Server. Ein guter Chef kümmert sich um vier Dinge:
- 💾 Backups: Stelle in Crafty unter „Backups“ einen Zeitplan ein (z. B. jeden Tag). Lade ab und zu ein Backup herunter — falls mal was kaputtgeht, ist deine Welt sicher.
- 👫 Gästeliste: Du entscheidest, wer auf die Whitelist kommt. Nur Leute, die du wirklich kennst.
- ⚖️ Fair sein: Als Operator hast du viel Macht. Sei nett zu deinen Freunden — kein Ärgern, kein Rauswerfen aus Spaß.
- 🔄 Updates: Ab und zu in Crafty die Server-Version aktualisieren (zusammen mit Papa).
Alle Levels geschafft!
Du hast deinen eigenen, sicheren Minecraft-Server gebaut und hast die volle Kontrolle. Mega! Zeig Papa, was du gelernt hast — und lade deine Freunde ein.
📖 Wörterbuch
Schwierige Wörter, ganz einfach erklärt.
- Server
- Ein Computer, der nie ausgeht, damit Freunde immer reinkommen.
- VPS
- „Virtueller privater Server“ — Papas gemieteter Computer im Internet.
- Docker
- Eine magische Kiste, in der ein Programm sicher und getrennt läuft.
- Image
- Der Bauplan für eine Docker-Kiste.
- Container
- Die fertige, laufende Docker-Kiste.
- RAM
- Der Arbeitsspeicher — das Kurzzeitgedächtnis des Computers. Davon gibt es nicht unendlich viel.
- Swap
- Notfall-Speicher auf der Festplatte, wenn das RAM voll ist. Bei euch: 2 GB.
- Port
- Eine nummerierte Tür am Computer. Minecraft benutzt Tür
25565. - Whitelist
- Deine Gästeliste — nur wer draufsteht, darf rein.
- Operator (op)
- Der Chef im Spiel, der Regeln ändern darf.
- EULA
- Die Minecraft-Regeln, die man einmal akzeptieren muss.
- Backup
- Eine Sicherheitskopie deiner Welt.
- Firewall
- Ein Türsteher, der entscheidet, welche Türen offen sind.
- SSH-Tunnel
- Ein geheimer, sicherer Geheimgang zum Server.
🛟 Hilfe — wenn etwas klemmt
Keine Sorge, das passiert jedem. Hier die häufigsten Probleme.
Ich kann nicht auf den Server kommen („Connection refused“ / „Verbindung abgelehnt“)
2. Ist die Tür offen? Papa prüft
sudo ufw status → 25565/tcp muss „ALLOW“ sein.3. Richtige Adresse?
147.93.123.200 ohne Tippfehler.4. Stehst du auf der Whitelist? Sonst:
whitelist add DeinName.
Der Server ruckelt oder ist langsam
view-distance auf 6 senken, max-players klein halten, und keine schweren Mods. Mit docker stats kann Papa sehen, ob die Kiste an ihre 6-GB-Grenze stößt. Wenn es oft ruckelt, kann Papa das Minecraft-RAM (Level 4) vorsichtig erhöhen — immer unter der 6-GB-Bremse bleiben.
Andere Webseiten auf dem VPS sind plötzlich weg
swapon --show → 2 GB)? Steht mem_limit: 6g in der docker-compose.yml und zeigt docker stats bei crafty / 6GiB? Notfalls Minecraft-RAM (Level 4) auf 3072 MB senken oder den Server kurz stoppen. Im Zweifel: VPS einmal neu starten (Swap kommt dank fstab-Eintrag automatisch wieder).
Ich habe mein Crafty-Passwort vergessen
docker exec -it crafty python3 main.py --reset_password username (in der Crafty-Doku nachschauen) oder das Start-Passwort aus default-creds.txt erneut ansehen.
Ich komme nicht ins Panel (https://localhost:8443)
ssh -L 8443:localhost:8443 root@147.93.123.200. Solange dieses Fenster offen ist, geht https://localhost:8443. Schließt sich das Fenster, ist auch das Panel wieder „zu“ — das ist gewollt und sicher.