# Deinen ersten FiveM-Server aufsetzen

Von null zu einem Server, dem deine Freunde beitreten können: Artifacts, Licence Key, server.cfg, der Port über den alle stolpern, und wie du absperrst bevor du jemanden einlädst.

- Plattform: FiveM
- Kanonische Seite: https://devtoolsgg.com/de/guides/fivem/first-server

Das hier ist der kürzeste Weg von nichts zu einem Server, dem deine Freunde
beitreten können, mit der Begründung hinter jedem Schritt statt einer Liste von
Befehlen zum Einfügen.

Rechne mit rund vierzig Minuten. Das meiste davon ist Herunterladen.

> [!NOTE]
> Alles hier gilt für **FiveM Legacy**. FiveM for GTAV Enhanced unterscheidet
> sich an ein paar Stellen, die jeweils angemerkt werden.

## Was du vorher brauchst

| Ding | Wofür |
|---|---|
| Eine Kopie von GTA V | Nur zum Spielen. Der Server selbst braucht keine. |
| Ein Cfx.re-Konto | Um den Licence Key zu erstellen, kostenlos. |
| Windows oder Linux | 2 Kerne und 4 GB RAM reichen für den Anfang. |
| Ein offener Port | Standardmäßig 30120, TCP **und** UDP. |

An dieser letzten Zeile scheitern die meisten ersten Versuche, sie bekommt
deshalb weiter unten ihren eigenen Abschnitt.

## 1. Die Serverdateien holen

Der Server heißt **FXServer**. Lade den neuesten empfohlenen Build von der
[Cfx.re-Artifacts-Seite](https://runtime.fivem.net/artifacts/fivem/) herunter
und leg ihn in einen eigenen Ordner, zum Beispiel `C:\FXServer\server`.

Halte die Serverdateien und deine eigenen Daten in **getrennten Ordnern**:

```text
C:\FXServer\
    server\          die Artifacts, bei jedem Update ersetzt
    server-data\     deine Resources und deine server.cfg
```

Der Grund sind Updates. Wenn ein neues Artifact erscheint, löschst du `server`
und packst das neue aus. Wenn dein `resources`-Ordner darin liegt, hast du
gerade deinen Server gelöscht.

## 2. Deinen Licence Key holen

Geh auf [portal.cfx.re](https://portal.cfx.re), melde dich an und erstelle einen
Key. Er fragt nach einer IP-Adresse: nimm die Maschine, auf der der Server
laufen wird, und wähle den richtigen Typ, denn ein Key für die falsche IP
verweigert schlicht den Start.

> [!CAUTION]
> Der Key ist ein Secret. Wer ihn hat, kann einen Server in deinem Namen
> betreiben und ihn sperren lassen. Er gehört in die `server.cfg`, und die
> `server.cfg` kommt nie in ein öffentliches Git-Repository.

## 3. server.cfg schreiben

Das ist die Datei, an der alles andere hängt. Statt die von jemand anderem zu
kopieren und dich zu fragen, was die Hälfte davon tut, bau dir eine mit dem
[server.cfg-Generator](/de/fivem/server-cfg): er schreibt die Abschnitte in der
richtigen Reihenfolge, nutzt Convar-Namen, die gegen die Cfx.re-Befehlsreferenz
geprüft sind, und erklärt jede Option beim Setzen.

Die Teile, die auf einem ersten Server zählen:

```cfg
# Eine Zeile pro Protokoll, beide auf denselben Port.
endpoint_add_tcp "0.0.0.0:30120"
endpoint_add_udp "0.0.0.0:30120"

# Ab 32 Slots braucht es onesync on oder legacy; über 64 braucht es on.
set onesync on

sv_hostname "Mein erster Server"
sv_maxClients 48

# Diesen von portal.cfx.re holen
sv_licenseKey changeme
```

### Die Ladereihenfolge ist keine Deko

Resources starten in der Reihenfolge, in der sie gelistet sind. Eine Resource,
die von einer anderen abhängt, muss **danach** kommen:

```cfg
ensure oxmysql
ensure ox_lib
ensure es_extended
ensure my_own_script
```

Fast jedes "attempted to index a nil value" auf einem frischen Server ist ein
Problem der Ladereihenfolge, kein kaputtes Script.

## 4. Den Port richtig öffnen

FiveM braucht **TCP und UDP auf demselben Port**. Nur TCP zu öffnen erzeugt das
verwirrendste Symptom im ganzen Hobby: der Server taucht in deiner eigenen Liste
auf, nimmt deine Verbindung an und hängt dann bei "Connecting".

Drei verschiedene Stellen können ihn blockieren, und meistens müssen alle drei
gemacht werden:

1. **Windows-Firewall** oder `ufw` unter Linux: 30120 TCP und UDP eingehend
   erlauben.
2. **Dein Router**, wenn die Maschine zu Hause steht: 30120 TCP und UDP auf die
   lokale IP der Maschine weiterleiten.
3. **Die Firewall deines Hosters**, wenn du einen VPS mietest. Das ist ein
   Webpanel, nicht die Maschine, und genau das vergessen die Leute.

> [!TIP]
> Um zu prüfen, ob es wirklich am Port liegt, lass jemanden verbinden, während
> du die Serverkonsole beobachtest. Wenn dort überhaupt nichts auftaucht,
> kommt der Traffic nicht bei dir an und das Problem ist das Netzwerk, nicht die
> Config.

## 5. Starten

Aus dem Ordner `server-data`:

```batch
C:\FXServer\server\FXServer.exe +exec server.cfg
```

Unter Linux:

```bash
bash /home/fivem/server/run.sh +exec server.cfg
```

Auf **Enhanced** heißt die Executable stattdessen `cfx-server.exe`.

Ein gesunder erster Start gibt eine Zeile aus, dass der Server lauscht, dann
eine Resource-Liste. Zwei Fehler sind häufig genug, um sie zu nennen:

- *"Could not find licence key"* heißt, `sv_licenseKey` fehlt, ist falsch oder
  hängt an einer anderen IP.
- *"onesync is not enabled"* bei mehr als 32 Slots heißt, `set onesync on`
  fehlt.

## 6. Ein Framework dazu, oder auch nicht

Du brauchst keins. Ein Framework gibt dir Jobs, Geld, Inventar und ein
Charaktersystem; ohne eins hast du Free Roam, was ein völlig guter Startpunkt
ist.

Wenn du eins willst, such dir ein einziges Ökosystem aus und bleib dabei:

| Framework | Charakter |
|---|---|
| **Qbox** | Aktiv gepflegt, modernes Lua, auf ox_lib und ox_inventory gebaut. |
| **QBCore** | Sehr großer Script-Katalog, ältere Codebasis. |
| **ESX Legacy** | Das älteste, immer noch weit verbreitet, die meisten Drittanbieter-Scripts zielen darauf. |

Sie zu mischen ist der mit Abstand häufigste Weg zu einem Server, den niemand
debuggen kann. Was du auch wählst, der [Job-Generator](/de/fivem/job) und der
[Item-Generator](/de/fivem/item) schreiben für alle drei das richtige Format.

## 7. Absperren, bevor du jemanden einlädst

Eine Standardkonfiguration ist keine sichere.

```cfg
# Blockiert veränderte Spieldateien. 2 blockiert auch unbekannte Dateien.
sv_pureLevel 1

# Steuert, was Clients erzeugen dürfen.
sv_entityLockdown relaxed

# Trainer und Menüs. Lass das aus.
sv_scriptHookAllowed false
```

Richte danach die Adminrechte sauber mit dem
[ACE-Permissions-Builder](/de/fivem/permissions) ein, statt `group.admin` von
Hand zu vergeben. Und bevor du eine einzige heruntergeladene Resource
installierst, lies
[wie man ein Script mit Backdoor erkennt](/de/guides/fivem/spot-a-backdoor). Auf
einem öffentlichen Server ist das eine Frage des Wann, nicht des Ob.

> [!IMPORTANT]
> Setz `rcon_password` nicht, wenn du RCON nicht wirklich benutzt. Ein nicht
> gesetztes Passwort ist eine Sache weniger, die leaken kann.

## Wie es weitergeht

- [fxmanifest.lua-Builder](/de/fivem/fxmanifest), wenn du deine erste Resource
  schreibst
- [Resource-Scaffolder](/de/fivem/resource) für ein funktionierendes Gerüst mit
  bereits eingebauten serverseitigen Prüfungen
- [Blip-Sprites](/de/fivem/list/blips) und
  [Fahrzeugmodelle](/de/fivem/list/vehicles), die beiden Listen, für die du
  einen Tab offen lassen wirst


## So zitierst du

Deinen ersten FiveM-Server aufsetzen, devtoolsgg.com. https://devtoolsgg.com/de/guides/fivem/first-server
