Serwer Minecraft na VPS: Paper, Java, systemd i kopie świata
Własny serwer Minecraft Java Edition na Paperze: ile pamięci zaleca dokumentacja, Java 25, usługa systemd, zapora, biała lista, kopie świata i aktualizacje.
Redakcja serwisu Dealownia · ceny i fakty ze stron dostawców, jak sprawdzamy
Serwer Minecraft Java Edition na silniku Paper, który działa jako osobny użytkownik systemowy, startuje sam po restarcie VPS, przyjmuje tylko graczy z białej listy i co noc zapisuje kopię świata. Konsolę serwera obsłużysz bez screen i tmux, a aktualizację do nowej wersji zrobisz w kilka minut, z kopią na wypadek problemów. Komendy są dla Ubuntu 24.04 LTS oraz Debiana 12 i 13.
Czego potrzebujesz
- VPS z Ubuntu 24.04 LTS albo Debianem 12 lub 13, przygotowany jak w poradniku od zera: użytkownik z sudo, logowanie kluczem, ufw.
- Pamięć: strona Paper o parametrach startowych zaleca co najmniej 6–10 GB dla samego serwera, niezależnie od liczby graczy. Do tego system i Java potrzebują miejsca poza stertą, dlatego dokumentacja każe odjąć od pamięci maszyny około 1000–1500 MB; dla 8 GB podaje 6500 MB. Liczby graczy na dany rozmiar Paper nie podaje i my też jej nie zgadujemy – zależy od zasięgu widzenia, pluginów i farm.
- Procesor: Minecraft liczy główną pętlę gry w jednym wątku, więc liczy się szybkość pojedynczego rdzenia bardziej niż ich liczba. Jak to czytać w ofertach, opisujemy w poradniku o specyfikacji VPS.
- Konto Minecraft Java Edition dla każdego gracza (serwer domyślnie sprawdza konta w usługach Mojang).
Część ofert to plany z 1–4 GB RAM, za małe na serwer Minecraft – przy każdej sprawdź, czy ma co najmniej 8 GB RAM.
Plany z dużą ilością pamięci porównasz w rankingu VPS.
Krok 1. Java 25
Według instrukcji Paper aktualne wydania wymagają co najmniej Javy 25 (Minecraft 26.1 i nowsze). Paper w swojej instrukcji instalacji Javy opisuje dystrybucję Amazon Corretto z repozytorium apt:
Wynik ma zaczynać się od openjdk 25. Paper odradza pakiety z dopiskiem -headless, bo brakuje w nich zależności, których używa. jq przyda się w następnym kroku.
Krok 2. Użytkownik i pobranie Paper
Serwer gry nie powinien działać jako root ani jako Twoje konto z sudo. Załóż konto systemowe bez powłoki:
Paper udostępnia kompilacje przez API Fill. Każde zapytanie musi mieć nagłówek User-Agent, który identyfikuje Twój projekt i zawiera adres kontaktowy – domyślny curl/... zostanie odrzucony.
Plik zapisujesz pełną ścieżką jako użytkownik minecraft: katalog domowy /opt/minecraft należy do niego i na Ubuntu 24.04 ma prawa 750, więc deploy nie może do niego wejść ani w nim pisać. Jeśli dla najnowszej wersji nie ma jeszcze kompilacji STABLE, URL będzie null i nic się nie pobierze. Wtedy ustaw VER ręcznie na poprzednią wersję – zwykle i tak warto poczekać, aż pluginy, których używasz, ją obsłużą.
Krok 3. EULA i pierwsze uruchomienie
Pierwszy start tworzy pliki konfiguracyjne i eula.txt, po czym serwer się zatrzymuje:
W eula.txt jest link do umowy licencyjnej Minecrafta (EULA). Przeczytaj ją i dopiero wtedy ją zaakceptuj:
Jeśli chcesz kiedyś pobierać od graczy opłaty albo sprzedawać cokolwiek w grze, przeczytaj też wytyczne Mojang dotyczące serwerów (Minecraft Usage Guidelines na minecraft.net). Określają, za co i na jakich warunkach wolno brać pieniądze; nie streszczamy ich tutaj, bo Mojang je zmienia.
W server.properties ustaw przynajmniej:
25565 to domyślny port Java Edition. online-mode=true sprawdza konta graczy u Mojang – nie wyłączaj tego na serwerze dostępnym z internetu, bo wtedy każdy może wejść pod dowolnym nickiem, także administratora.
Krok 4. Usługa systemd z konsolą
Zamiast trzymać serwer w screen uruchomisz go jako usługę. Konsola trafi do dziennika systemd, a komendy będziesz wysyłać przez nazwany potok (FIFO), który systemd podłączy do wejścia serwera. Plik /etc/systemd/system/minecraft.socket:
Plik /etc/systemd/system/minecraft.service (przy VPS z 8 GB, zgodnie z wyliczeniem Paper, ustaw -Xms6500M -Xmx6500M):
Xms i Xmx mają tę samą wartość, tak jak w przykładach Paper. Pełny zestaw zalecanych flag JVM wygenerujesz w generatorze skryptów podlinkowanym na stronie o flagach. Przy systemctl stop systemd wysyła sygnał SIGTERM; serwer zapisuje wtedy świat i kończy pracę z kodem 143, który SuccessExitStatus traktuje jako poprawne zakończenie.
Komendy konsoli wysyłasz tak:
Krok 5. Zapora
ufw ma już regułę dla SSH. Dodaj port gry:
Nie otwieraj portu RCON (domyślnie 25575) – i tak jest wyłączony, dopóki nie ustawisz enable-rcon=true. Jeśli dostawca ma osobną zaporę w panelu, tam też zezwól na 25565/tcp.
Krok 6. Kopie świata
Kopia kopiowana w trakcie zapisu chunków może być uszkodzona. Dlatego skrypt na chwilę wyłącza automatyczny zapis, wymusza zapis na dysk, pakuje cały katalog serwera i włącza zapis z powrotem. Plik /opt/minecraft/backup.sh:
sleep 15 daje serwerowi czas na dokończenie zapisu – na dużym świecie wydłuż go i sprawdź w journalctl -u minecraft, ile trwa „save-all flush”. Kopia na tym samym dysku nie chroni przed awarią VPS – wysyłaj archiwa na zewnątrz, np. jak w poradniku o restic i rclone.
Krok 7. Aktualizacje
Nowa wersja Minecrafta zapisuje świat w nowym formacie, a starsza może go już nie otworzyć. Zawsze więc najpierw kopia:
Przed skokiem na nową wersję gry sprawdź, czy Twoje pluginy już ją obsługują. Aktualizacje kompilacji w obrębie tej samej wersji (poprawki Paper) są zwykle bezpieczne, ale kopia i tak nic nie kosztuje.
Najczęstsze problemy
- Serwer kończy się od razu z komunikatem o EULA.
eula.txtnadal maeula=falsealbo należy do roota. Sprawdźsudo ls -l /opt/minecraft/server– wszystko ma należeć dominecraft. UnsupportedClassVersionErrorprzy starcie. Za stara Java.java -versionmusi pokazać 25; jeśli masz kilka wersji, wExecStartpodaj pełną ścieżkę do Javy 25.- Proces znika bez błędu w logu, a w
dmesgjest „Out of memory: Killed process”.Xmxjest za blisko całej pamięci VPS. Zostaw systemowi zapas 1000–1500 MB, jak zaleca Paper, albo weź większy plan. - Gracze nie mogą się połączyć, choć serwer działa. Port 25565 zamknięty w zaporze dostawcy albo gracz nie jest na białej liście (
whitelist listw konsoli). Sprawdź z zewnątrz:nc -vz example.pl 25565. - Lagi przy większej liczbie graczy. Zmniejsz
view-distanceisimulation-distancewserver.properties(domyślnie 10). Przyczynę pokaże wbudowany w Paper profiler spark (spark profiler start --timeout 600– po 10 minutach dostaniesz adres raportu).
Co dalej
Zanim podasz adres znajomym, przejdź listę kontrolną zabezpieczenia VPS. Zamiast adresu IP możesz dać im subdomenę – rekord A mc.example.pl wskazujący serwer; podstawy rekordów DNS opisuje poradnik o DNS. Jeśli wybierasz serwer pod konkretny budżet, zajrzyj do zestawienia Jaki VPS wybrać do 20, 50 i 100 zł.