FiveM Szybka lista kontrolna konfiguracji Dockera
Przydatna konfiguracja Dockera zapewnia trwałość danych txAdmin, udostępnia odpowiednie porty i umożliwia odwracanie aktualizacji.
- Użyj Docker Compose v2 i zamontuj przez bind-mount txData lub katalog danych swojego serwera.
- Otwórz porty 30120 TCP/UDP dla FiveM oraz 40120 tylko tam, gdzie planowany jest dostęp do txAdmin.
- Wykonaj kopię zapasową server.cfg, zasobów, txData oraz danych bazy danych przed zmianą artefaktów lub obrazów.
Powiązane ścieżki sklepowe: Paczki serwerowe | Skrypty FiveM | Admin Tools
Run a FiveM server (FXServer) in Docker with this copy-paste guide: a minimal compose.yaml przy użyciu spritsail/fivem image, correct port mapping for 30120 (TCP+UDP) and 40120 (txAdmin), persistent bind mounts for server.cfg, resources, and txAdmin data, license-key handling, and safe update and rollback steps.
TL;DR
- Zainstaluj Docker Engine + Docker Compose v2 na Ubuntu. (Dokumentacja Dockera)
- Utwórz folder projektu, dodaj
.env(ustawLICENSE_KEY,SERVER_NAME, porty) i minimalnycompose.yaml. - Zacznij od
docker compose up -d; obserwuj logi za pomocądocker compose logs -f. - Edytuj
data/server.cfg(hostname, endpointy, zasoby); uruchom ponownie kontener. - Otwórz zaporę dla 30120/TCP+UDP I 40120/TCP (txAdmin). Domyślny port txAdmin to 40120. (Dokumentacja Cfx.re)
- Zawsze uruchamiaj kontener z stdin/tty włączone, aby uniknąć awarii. (GitHub)
Wymagania wstępne
- OS: Linux Ubuntu 22.04+ (uwagi dla macOS/Windows poniżej).
- Sprzęt: 2+ vCPU, 4–8 GB RAM (więcej dla dużych zasobów), SSD zalecane.
- Docker: Zainstaluj Docker Engine I Compose v2 z oficjalnej dokumentacji. (Dokumentacja Dockera)
- FiveM Klucz licencyjny: Wygeneruj w portalu Cfx.re (Keymaster). Zachowaj go w tajemnicy. (support.cfx.re)
- Zapora sieciowa/NAT: Możliwość otwarcia/przekierowania portów 30120 (TCP+UDP) i opcjonalnie 40120 (TCP). (Dokumentacja Cfx.re)
- (Opcjonalnie) Domena/subdomena dla txAdmin.
Omówienie architektury
Jeden kontener uruchamia Serwer FX przy użyciu spritsail/fivem image. Dane są bind-mounted do trwałego przechowywania server.cfg, zasobów i logów. Porty 30120/TCP+UDP są udostępniane graczom; 40120/TCP udostępnia txAdmin po włączeniu. A healthcheck może sondować http://127.0.0.1:30120/info.json. (GitHub)
+-------------------- Docker Host (Ubuntu) --------------------+ | /home/fivem/data --> /config (in container) | | /home/fivem/txData --> /txData (txAdmin data) | | | | Exposed: 30120/tcp+udp [FXServer] | 40120/tcp [txAdmin] | | Healthcheck: GET 127.0.0.1:30120/info.json | +-------------------------------------------------------------+
Szybki start (kopiuj-wklej)
1) Utwórz folder projektu
# Optional: dedicated system user and directories
sudo useradd -r -m -d /home/fivem -s /usr/sbin/nologin fivem || true
sudo mkdir -p /home/fivem/{data,txData}
sudo chown -R "$USER":"$USER" /home/fivem
cd /home/fivem
2) Utwórz .env
cat > .env <<'EOF' # === REQUIRED === LICENSE_KEY=REPLACE_WITH_YOUR_CFX_KEY # Convenience (used by ports mapping below) FXSERVER_PORT=30120 TXADMIN_PORT=40120 # Not read by the image directly; use it when editing server.cfg SERVER_NAME="My Docker FiveM" # Optional: if omitted, default config generation sets a random RCON password RCON_PASSWORD= EOF
3) Minimalny compose.yaml (przypnij tag)
Najmniejsze działające ustawienie przy użyciu obrazu źródłowego. Używa tty+stdin aby zapobiec awarii. (GitHub)
# compose.yaml
services:
fivem:
image: spritsail/fivem:stable
container_name: fivem
environment:
- LICENSE_KEY=${LICENSE_KEY}
# Optional toggles (see table below):
# - NO_DEFAULT_CONFIG=1 # required if you want to use txAdmin
# - NO_LICENSE_KEY=1 # if you put the key in server.cfg instead
# - NO_ONESYNC=1 # disable OneSync in default config
# - RCON_PASSWORD=${RCON_PASSWORD}
volumes:
- ./data:/config # server.cfg, resources, logs
ports:
- "${FXSERVER_PORT}:30120/tcp"
- "${FXSERVER_PORT}:30120/udp"
tty: true # prevent startup crash (equiv. to -t)
stdin_open: true # prevent startup crash (equiv. to -i)
restart: unless-stopped
Uruchom go:
docker compose up -d docker compose logs -f
4) Rozszerzona wersja (txAdmin, healthcheck, limity)
# compose.extended.yaml
services:
fivem:
image: spritsail/fivem:stable
container_name: fivem
environment:
- LICENSE_KEY=${LICENSE_KEY}
- NO_DEFAULT_CONFIG=1 # enable txAdmin (no default +exec)
# - NO_LICENSE_KEY=1 # if storing key in server.cfg
# - RCON_PASSWORD=${RCON_PASSWORD}
volumes:
- ./data:/config
- ./txData:/txData # persist txAdmin data
ports:
- "${FXSERVER_PORT}:30120/tcp"
- "${FXSERVER_PORT}:30120/udp"
- "${TXADMIN_PORT}:40120/tcp" # txAdmin Web UI (default 40120)
tty: true
stdin_open: true
healthcheck:
test: ["CMD-SHELL", "wget -qO- http://127.0.0.1:30120/info.json >/dev/null 2>&1"]
interval: 30s
timeout: 5s
retries: 5
start_period: 30s
# Basic resource knobs for standalone Compose (not Swarm 'deploy')
cpus: 2
mem_limit: "6g"
ulimits:
nofile:
soft: 1048576
hard: 1048576
restart: unless-stopped
Jeśli
wgetjest niedostępny w obrazie, usuń healthcheck lub zastąp go sondą TCP. txAdmin działa w/txData, port 40120 jest jego domyślnym. (GitHub)
Konfiguracja i trwałość danych
- Przy pierwszym uruchomieniu domyślne ustawienia są zapisywane do zamontowanego katalogu
./data(ścieżka w kontenerze/config). Edytuj./data/server.cfgi uruchom ponownie kontener. (GitHub)
Typowe server.cfg bity:
# data/server.cfg # Network endpoints (leave 0.0.0.0 to listen on all interfaces) endpoint_add_tcp "0.0.0.0:30120" endpoint_add_udp "0.0.0.0:30120" # Server name set sv_hostname "My Docker FiveM" # License key (use this only if NOT using LICENSE_KEY env) # sv_licenseKey "REPLACE_WITH_YOUR_CFX_KEY" # Example: ensure a basic resource # ensure chat
Struktura katalogów (host):
/home/fivem ├─ data/ -> /config (server.cfg, resources/, logs/) └─ txData/ -> /txData (txAdmin profiles & DB)
Kopie zapasowe
- Kopia zapasowa przez bind-mount:
tar -C /home/fivem -czf fivem-backup_$(date +%F).tgz data txData
- Jeśli przejdziesz na nazwane wolumeny, wykonaj kopię zapasową jak:
docker run --rm -v fivem_data:/data -v "$PWD":/backup busybox sh -c 'tar -czf /backup/fivem_data_$(date +%F).tgz -C / data'
Zmienne środowiskowe (z spritsail/fivem)
| Nazwa | Cel | Przykład |
|---|---|---|
LICENSE_KEY | Wymagane FiveM klucz licencyjny serwera do uruchomienia FXServer | LICENSE_KEY=xxxxx |
RCON_PASSWORD | Hasło RCON używane podczas tworzenia domyślnych konfiguracji; losowe 16 znaków jeśli nie ustawione | RCON_PASSWORD=strongpass |
NO_DEFAULT_CONFIG | Wyłącz domyślny +exec aby txAdmin mógł zarządzać serwerem | 1 |
NO_LICENSE_KEY | Nie czytaj klucza z env; przechowuj go w server.cfg | 1 |
NO_ONESYNC | Wyłącz OneSync w domyślnych konfiguracjach | 1 |
Te zmienne env i ścieżki /config, /txData, plus potrzeba -ti są zdefiniowane przez obraz źródłowy. (GitHub)
Sekret obsługa: Preferuj
NO_LICENSE_KEY=1i umieśćsv_licenseKeywserver.cfgz odpowiednimi uprawnieniami do pliku, jeśli nie chcesz klucza w środowisku kontenera. (GitHub)
Sieć i bezpieczeństwo
Wymagane porty
| Cel | Port | Protokół |
|---|---|---|
| Połączenia graczy / API | 30120 | TCP+UDP |
| txAdmin Web UI (opcjonalnie) | 40120 | TCP |
| Legacy master (rzadko potrzebny) | 30110 | UDP |
FiveM domyślnie ustawiony na 30120; domyślny port txAdmin to 40120. (GitHub)
Przykłady UFW (Ubuntu)
sudo ufw allow 30120/tcp sudo ufw allow 30120/udp sudo ufw allow 40120/tcp # only if you enable txAdmin sudo ufw reload
nftables (przykładowy fragment reguł)
sudo nft add table inet filter
sudo nft add chain inet filter input '{ type filter hook input priority 0; policy drop; }'
sudo nft add rule inet filter input ct state established,related accept
sudo nft add rule inet filter input iif lo accept
sudo nft add rule inet filter input tcp dport {30120,40120} accept
sudo nft add rule inet filter input udp dport 30120 accept
Najmniejsze uprawnienia i tajemnice
- Uruchamiaj na zabezpieczonym hoście; unikaj mapowania dodatkowych możliwości; nie uruchamiaj Dockera jako
rootużytkownik na hoście. - Trzymać RCON włączony tylko w razie potrzeby; zabezpiecz txAdmin silnymi poświadczeniami i ogranicz dostęp na zaporze sieciowej.
- Jeśli używasz dystrybucji opartych na SELinux (nie Ubuntu), dodaj
:Z/:zdo montowania powiązań, aby naprawić problemy z kontekstem.
Aktualizacje i wycofywanie
Zaktualizuj do najnowszego przypiętego tagu
docker compose pull docker compose up -d
Przypięte przez digest (niezmienne)
# Pull and discover the digest of the current tag
docker pull spritsail/fivem:stable
docker inspect --format='{{index .RepoDigests 0}}' spritsail/fivem:stable
# Use the printed value in compose, e.g.:
# image: spritsail/fivem@sha256:abcdef...
Cofnij
- Zmień odniesienie do obrazu z powrotem na poprzedni tag/digest i
docker compose up -d. - Zachowaj ostatnie skróty obrazów z
docker image ls --digests.
Obraz zapewnia stable I latest tagi; preferuj stable dla mniejszej liczby niespodzianek. (GitHub)
Monitorowanie i konserwacja
- Status:
docker ps,docker compose ps - Logi:
docker compose logs -f - Statystyki:
docker stats fivem - Kontrola stanu: Ankiety
info.json; usuń/dostosuj, jeśli brakuje narzędzi.Dokumentacja Cfx.re) - Dysk:
docker system df, przycinaj stare obrazy w razie potrzeby. - Kopie zapasowe: Zaplanuj polecenie tar w “Konfiguracja i trwałość”.
Rozwiązywanie problemów
- Nieprawidłowy klucz licencyjny: Zweryfikuj w portalu Cfx.re i upewnij się, że tylko jeden serwer używa klucza. (support.cfx.re)
- Porty już w użyciu:
sudo ss -lntup | grep 30120; zatrzymaj konfliktującą usługę lub zmieńFXSERVER_PORT. - Nie można połączyć się z txAdmin: Otwórz 40120/TCP lub zmień port; potwierdź
NO_DEFAULT_CONFIG=1. (Dokumentacja Cfx.re) - Kontener kończy działanie przy starcie: Upewnij się, że
tty: trueIstdin_open: truesą ustawione. (GitHub) - Problemy z czasem/DNS: Upewnij się, że czas hosta jest zsynchronizowany (systemd-timesyncd/chrony) i działa DNS (
/etc/resolv.conf). - Odmowy SELinux (nie-Ubuntu): Użyj
:Z/:zna montowaniach wiążących lub dostosuj konteksty. - info.json/players.json zablokowane: Niektóre convary lub proxy mogą wpływać na te punkty końcowe; potwierdź, że serwer odpowiada na
GET /info.json. (Dokumentacja Cfx.re)
Wskazówki dotyczące wydajności
- CPU/Pamięć: Przypnij procesory i ustaw limity pamięci (patrz rozszerzony compose).
- Pamięć masowa: Używaj SSD/NVMe; utrzymuj zoptymalizowane pakiety zasobów; unikaj ogromnych, nieskompresowanych zasobów.
- Sieć: Utrzymuj niskie opóźnienia; upewnij się, że host nie jest ograniczony przez CPU; priorytetyzuj UDP 30120.
- Host kernel: Domyślne ustawienia działają; zaawansowane sysctle (
net.core.*mem_max) można dostroić, jeśli znasz swoje obciążenie. - Logi: Użyj rotacji logów (jak w rozszerzonym przykładzie).
macOS / Windows uwagi
- macOS (Docker Desktop): Wejście/wyjście plików montowanych przez bind jest wolniejsze niż natywne Linux; rozważ Docker Desktop Zsynchronizowane udziały plików dla lepszej wydajności i upewnij się, że folder jest udostępniony w ustawieniach. (Dokumentacja Dockera)
- Windows (WSL2): Opublikowane porty są dostępne przez localhost na Windows; wystawienie na sieć LAN może wymagać dodatkowej konfiguracji w zależności od trybu. Preferuj hostowanie na Linux dla serwerów publicznych. (Dokumentacja Dockera)
Czysta deinstalacja
# Stop and remove the container (keep data) docker compose down # Remove container + anonymous networks + images (keeps bind-mounted data) docker compose down --rmi local --remove-orphans # If you used named volumes (not in this guide), list and remove explicitly: # docker volume ls # docker volume rm <volume_name>
Do usunięcia wszystko dane, usuń zamontowane katalogi:
sudo rm -rf /home/fivem/data /home/fivem/txData
Często zadawane pytania
Czy mogę hostować wiele serwerów na jednym hoście?
Tak. Użyj oddzielnych katalogów projektów, różnych FXSERVER_PORT/TXADMIN_PORT, a także odrębne montowania. txAdmin obsługuje dane na profil w /txData. (Dokumentacja Cfx.re)
Jak zmienić nazwę/IP serwera wyświetlaną na liście?
Edytuj sv_hostname w data/server.cfg. IP/port pochodzi z opublikowanych portów i konfiguracji NAT.
Czy mogę automatycznie restartować po awarii?
Tak. restart: unless-stopped w Compose; rozważ również timery systemd dla watchdogs.
Gdzie znajdują się kopie zapasowe?
Tam, gdzie je tworzysz — np., fivem-backup_YYYY-MM-DD.tgz w swoim katalogu roboczym. Zobacz powyższe polecenia tworzenia kopii zapasowej.
Jak włączyć txAdmin?
Ustaw NO_DEFAULT_CONFIG=1, bind-mount /txData, i otwórz 40120/TCP. (GitHub)
Czy muszę mieć otwarty port 30110?
Rzadko. Było używane do starszych list; nowoczesne konfiguracje zazwyczaj potrzebują tylko 30120 i txAdmin 40120, jeśli są używane. (Społeczność Cfx.re)
Jak przenieść serwer na inną maszynę?
Kopiuj data/ I txData/ na nowy host, odtwórz ten sam plik Compose i uruchom.
Linki i Podziękowania
- Obraz nadrzędny:
spritsail/fivem(zmienne środowiskowe, ścieżki, użycie, uwagi txAdmin,-tiwymaganie). (GitHub) - Docker:
- Zainstaluj Docker Engine na Ubuntu. (Dokumentacja Dockera)
- Zainstaluj Docker Compose v2 (wtyczka Linux). (Dokumentacja Dockera)
- Udostępnianie plików lokalnych za pomocą kontenerów (wolumeny vs. montowania wiążące). (Dokumentacja Dockera)
- Cfx.re / FiveM:
- Utwórz klucz rejestracyjny (licencyjny) serwera. (support.cfx.re)
- Dokumentacja txAdmin (domyślny port 40120; ścieżka danych). (Dokumentacja Cfx.re)
- Przepływ proxy/połączenia (
/info.json). (Dokumentacja Cfx.re)
Editorial review and source policy
The Docker guide distinguishes container restart policy from application recovery. Pin images, persist server data outside the writable container layer, protect secrets, and validate backup/restore on the exact compose definition.
