Discord
Wiki - Serwery

Serwer Minecraft w Docker

Jak uruchomic serwer Minecraft w kontenerze Docker z Docker Compose - od instalacji, przez konfiguracje, po kopie zapasowe i zarzadzanie wieloma serwerami.

Czas czytania: ~12 min Poziom: Zaawansowany

Czym jest Docker?

Docker to platforma konteneryzacji, która pozwala uruchamiac aplikację w izolowanych, lekkich srodowiskach zwanych kontenerami. Kontener to cos między maszyna wirtualna a procesem systemowym - ma własny system plikow, siec i zasoby, ale wspoldziela jadro systemu operacyjnego z hostem, co czyni go znacznie lzejszym niz pełna maszyna wirtualna.

Dlaczego warto używać Dockera do serwera Minecraft?

  • Izolacja - serwer MC działa w odizolowanym środowisku, nie koliduje z innymi uslugami na maszynie
  • Powtarzalnosc - ten sam obraz Dockera działa identycznie na każdym serwerze, niezaleznie od systemu hosta
  • Łatwe aktualizacje - zmiana wersji MC to zmiana jednej linii w konfiguracji
  • Automatyczne restarty - Docker restartuje kontener automatycznie po crashu
  • Multi-serwer - uruchamianie wielu serwerow MC na jednej maszynie bez konfliktow portow
  • Kopie zapasowe - wolumeny Dockera ulatwiaja tworzenie kopii zapasowych

Docker jest szczególnie przydatny, gdy zarzadzasz kilkoma serwerami Minecraft lub chcesz miec pełna kontrole nad srodowiskiem uruchomieniowym. Jeśli stawiasz pierwszy serwer i nie znasz Dockera, możesz również zaczac od tradycyjnej metody.

Instalacja Dockera

Docker jest dostępny na wszystkie popularne systemy operacyjne. Poniżej znajdziesz instrukcję instalacji dla najpopularniejszych platform serwerowych.

Ubuntu / Debian

Na serwerach z Ubuntu lub Debian (najpopularniejsze systemy dla serwerow MC) instalacja wyglada nastepujaco:

sudo apt update
sudo apt install -y docker.io docker-compose-plugin
sudo systemctl enable docker
sudo systemctl start docker
sudo usermod -aG docker patrykraba

Ostatnia komenda dodaje Twojego użytkownika do grupy docker, dzięki czemu nie musisz używać sudo przy każdym poleceniu. Po wykonaniu tej komendy wyloguj się i zaloguj ponownie.

CentOS / RHEL / AlmaLinux

sudo dnf install -y docker docker-compose-plugin
sudo systemctl enable docker
sudo systemctl start docker
sudo usermod -aG docker patrykraba

Windows / macOS (do testow)

Na Windowsie i macOS zainstaluj Docker Desktop z oficjalnej strony docker.com. Docker Desktop zawiera zarowno silnik Dockera, jak i Docker Compose. Pamietaj, ze Docker Desktop na Windows wymaga WSL2 (Windows Subsystem for Linux).

Weryfikacja instalacji

docker --version
docker compose version

Obie komendy powinny wyswietlic numery wersji. Jeśli docker compose nie działa, sprobuj docker-compose (z myslnikiem) - to starsza wersja standalone.

Pierwszy kontener Minecraft

Najprostszy sposob uruchomienia serwera Minecraft w Dockerze to uzycie obrazu itzg/minecraft-server - najpopularniejszego i najlepiej utrzymywanego obrazu Docker dla serwera MC. Obraz obsługuje Vanilla, Paper, Spigot, Purpur, Forge, Fabric i wiele innych platform.

docker run -d   --name minecraft   -p 25565:25565   -e EULA=TRUE   -e TYPE=PAPER   -e VERSION=1.21.4   -e MEMORY=4G   -v mc-data:/data   itzg/minecraft-server

Wyjasnienie parametrow:

Parametr Znaczenie
-d Uruchomienie w tle (detached mode)
--name minecraft Nazwa kontenera (do zarzadzania)
-p 25565:25565 Mapowanie portu hosta na port kontenera
-e EULA=TRUE Akceptacja EULA Mojang (wymagane)
-e TYPE=PAPER Typ serwera (PAPER, SPIGOT, PURPUR, FABRIC, VANILLA)
-e VERSION=1.21.4 Wersja Minecraft
-e MEMORY=4G Pamiec RAM przydzielona serwerowi
-v mc-data:/data Wolumen do przechowywania danych serwera

Po uruchomieniu sprawdź logi serwera:

docker logs -f minecraft

Poczekaj, az zobaczysz komunikat Done! For help, type "help" - serwer jest gotowy do gry. Polacz się z adresem localhost:25565 (lub IP serwera, jeśli uruchamiasz zdalnie).

Docker Compose

Docker Compose to narzędzie do definiowania i uruchamiania wielokontenerowych aplikacji Docker za pomoca pliku YAML. Zamiast dlugich komend docker run, cała konfiguracja serwera znajduje się w jednym pliku docker-compose.yml.

Utwórz plik docker-compose.yml w wybranym katalogu:

services:
  minecraft:
    image: itzg/minecraft-server
    container_name: minecraft-survival
    ports:
      - "25565:25565"
    environment:
      EULA: "TRUE"
      TYPE: PAPER
      VERSION: "1.21.4"
      MEMORY: 4G
      VIEW_DISTANCE: 8
      SIMULATION_DISTANCE: 5
      MAX_PLAYERS: 50
      MOTD: "Moj serwer Minecraft"
      DIFFICULTY: hard
      SPAWN_PROTECTION: 0
      ENABLE_COMMAND_BLOCK: "true"
      SPIGET_RESOURCES: "28140,81534"
    volumes:
      - ./data:/data
    restart: unless-stopped
    tty: true
    stdin_open: true

Uruchomienie serwera z Docker Compose:

docker compose up -d

Najważniejsze komendy Docker Compose:

Komenda Opis
docker compose up -d Uruchomienie serwera w tle
docker compose down Zatrzymanie i usuniecie kontenera
docker compose logs -f Podglad logow na zywo
docker compose restart Restart kontenera
docker compose exec minecraft rcon-cli Otwarcie konsoli serwera (RCON)
docker compose pull Pobranie najnowszej wersji obrazu

Parametr SPIGET_RESOURCES pozwala automatycznie pobierac pluginy ze SpigotMC po ID zasobu. W przykladzie powyżej 28140 to LuckPerms, a 81534 to Chunky. Pełna lista obslugiwanych zmiennych znajduje się w dokumentacji obrazu itzg/minecraft-server.

Wolumeny i dane

Wolumeny (volumes) to mechanizm Dockera do trwalego przechowywania danych. Bez wolumenu wszystkie dane serwera (świat, pluginy, konfiguracja) zostana utracone po usunieciu kontenera. Istnieja dwa typy wolumenow:

Bind mount (katalog na hoscie)

Mapuje katalog z systemu hosta do kontenera. Dane sa bezpośrednio dostępne na dysku hosta - możesz je przegladac, edytować i backupować standardowymi narzędziami.

volumes:
  - ./data:/data          # katalog ./data na hoscie = /data w kontenerze
  - ./plugins:/plugins    # osobny katalog na pluginy

Struktura katalogu ./data po uruchomieniu serwera:

data/
  world/                  # świat Overworld
  world_nether/           # Nether
  world_the_end/          # End
  plugins/                # pluginy i ich konfiguracja
  server.properties       # konfiguracja serwera
  paper.yml               # konfiguracja Paper
  bukkit.yml              # konfiguracja Bukkit
  logs/                   # logi serwera

Named volume (wolumen Dockera)

Zarzadzany przez Dockera, przechowywany w wewnetrznym katalogu Dockera. Wygodniejszy w zarzadzaniu, ale mniej dostępny bezpośrednio:

volumes:
  - mc-data:/data

volumes:
  mc-data:

Rekomendacja: używaj bind mount dla serwerow Minecraft. Daje to pełny dostep do plikow serwera, co ulatwia edycje konfiguracji, instalacje pluginow i tworzenie kopii zapasowych.

Zmienne środowiskowe

Obraz itzg/minecraft-server obsługuje setki zmiennych środowiskowych, które pozwalaja skonfigurowac serwer bez recznej edycji plikow. Oto najważniejsze:

Zmienna Domyslna Opis
TYPE VANILLA Typ serwera: VANILLA, PAPER, SPIGOT, PURPUR, FABRIC, FORGE
VERSION LATEST Wersja Minecraft (np. 1.21.4, 1.20.6)
MEMORY 1G Pamiec RAM (np. 2G, 4G, 8G)
DIFFICULTY easy Poziom trudności: peaceful, easy, normal, hard
MAX_PLAYERS 20 Maksymalna liczba graczy
VIEW_DISTANCE 10 Zasięg renderowania chunkow
ONLINE_MODE true Weryfikacja kont Mojang (wyłącz tylko za proxy typu Velocity)
OPS - Lista operatorow (np. "TwojNick,DrugaNick")
WHITELIST - Lista graczy na whitelist
SEED - Seed świata
ICON - URL do ikony serwera (64x64 PNG)
SPIGET_RESOURCES - ID pluginow ze SpigotMC do automatycznego pobrania
MODRINTH_PROJECTS - Slug pluginow z Modrinth do automatycznego pobrania

Pełna lista zmiennych środowiskowych jest dostępna w dokumentacji itzg/minecraft-server. Obraz obsługuje również automatyczne pobieranie modow z CurseForge i Modrinth, co czyni go idealnym do serwerow moddowanych (Fabric, Forge).

Multi-serwer w Docker Compose

Jednym z najwiekszych atutow Dockera jest możliwość uruchomienia wielu serwerow Minecraft na jednej maszynie. Każdy serwer działa w osobnym kontenerze z własnym portem, danymi i konfiguracja.

services:
  survival:
    image: itzg/minecraft-server
    container_name: mc-survival
    ports:
      - "25565:25565"
    environment:
      EULA: "TRUE"
      TYPE: PAPER
      VERSION: "1.21.4"
      MEMORY: 4G
      MOTD: "Survival - minecraft.pl"
      DIFFICULTY: hard
    volumes:
      - ./survival-data:/data
    restart: unless-stopped

  creative:
    image: itzg/minecraft-server
    container_name: mc-creative
    ports:
      - "25566:25565"
    environment:
      EULA: "TRUE"
      TYPE: PAPER
      VERSION: "1.21.4"
      MEMORY: 2G
      MOTD: "Creative - minecraft.pl"
      GAMEMODE: creative
      FORCE_GAMEMODE: "true"
    volumes:
      - ./creative-data:/data
    restart: unless-stopped

  minigames:
    image: itzg/minecraft-server
    container_name: mc-minigames
    ports:
      - "25567:25565"
    environment:
      EULA: "TRUE"
      TYPE: PAPER
      VERSION: "1.21.4"
      MEMORY: 3G
      MOTD: "Minigry - minecraft.pl"
    volumes:
      - ./minigames-data:/data
    restart: unless-stopped

Każdy serwer ma przypisany inny port na hoscie (25565, 25566, 25567), ale wewnątrz kontenera wszystkie usluguja na standardowym porcie 25565. Gracze lacza się podając adres z odpowiednim portem, np. minecraft.pl:25566 dla serwera Creative.

Jeśli chcesz użyć jednego adresu (bez podawania portow), skonfiguruj proxy typu Velocity lub BungeeCord. Możesz je również uruchomic jako kontener Docker - więcej o tym w poradniku Reverse Proxy dla Minecraft.

Kopie zapasowe

Regularne kopie zapasowe sa kluczowe dla każdego serwera. Docker ulatwia ten proces dzięki wolumenom i możliwości dostepu do danych serwera z poziomu hosta.

Prosty skrypt backupu

#!/bin/bash
# backup-mc.sh
DATE=2026-03-18_12-00
BACKUP_DIR=/home/minecraft/backups
DATA_DIR=/home/minecraft/mc-server/data

# Wyslij komende save-off do serwera
docker compose exec minecraft rcon-cli save-off
docker compose exec minecraft rcon-cli save-all

# Poczekaj na zapisanie
sleep 5

# Utworz archiwum
tar -czf /mc-backup-.tar.gz -C  .

# Włącz zapis
docker compose exec minecraft rcon-cli save-on

# Usun backupy starsze niz 7 dni
find  -name "mc-backup-*.tar.gz" -mtime +7 -delete

echo "Backup ukoczony: mc-backup-.tar.gz"

Dodaj skrypt do crontaba, aby tworzyl kopie automatycznie co 6 godzin:

crontab -e
# Dodaj linie:
0 */6 * * * /home/minecraft/backup-mc.sh

Obraz itzg/mc-backup

Autorzy obrazu itzg/minecraft-server udostepniaja również dedykowany obraz do kopii zapasowych, który można dodać do Docker Compose:

services:
  minecraft:
    image: itzg/minecraft-server
    # ... konfiguracja jak wyżej ...
    volumes:
      - ./data:/data

  backup:
    image: itzg/mc-backup
    environment:
      BACKUP_INTERVAL: "6h"
      RCON_HOST: minecraft
      RCON_PASSWORD: ""
      PRUNE_BACKUPS_DAYS: 7
    volumes:
      - ./data:/data:ro
      - ./backups:/backups
    depends_on:
      - minecraft

Ten kontener automatycznie tworzy kopie zapasowe co 6 godzin i usuwa stare backupy po 7 dniach. Więcej o strategiach backupu znajdziesz w poradniku Kopie zapasowe serwera.

Podsumowanie

Docker to potężne narzędzie do uruchamiania serwerow Minecraft, szczególnie gdy potrzebujesz izolacji, latowych aktualizacji lub zarzadzasz wieloma serwerami. Obraz itzg/minecraft-server upraszcza konfiguracje do jednego pliku YAML, a Docker Compose pozwala zarzadzac całym ekosystemem jednym poleceniem.

Powiązane poradniki: