Files
MSCO-Dedicated-Server/README.md
T
2026-09-26 19:45:02 +02:00

5.5 KiB
Raw Blame History

MSCO Dedicated Server

Dedizierter Server für MSCO – My Summer Car Online. Er hält einen gemeinsamen Spielstand, speichert alles, was die Spieler verändern, und gibt es an später Beitretende weiter. .NET 10, läuft unter Linux (Docker oder systemd) und Windows.

Voraussetzungen

  • Ein Lizenzschlüssel von https://msco.mbm.wtf/keys (Login mit Steam, wie der FiveM-Keymaster). Der Server prüft ihn beim Start und meldet sich danach regelmäßig beim Master für die Serverliste.
  • Ein My-Summer-Car-Spielstand als Startwelt.
  • Port 7777/TCP im Router/Firewall freigegeben (sonst wird der Server nicht gelistet).
  • Server und Mod müssen dieselbe Version haben (sonst bekommen Spieler eine Warnung).

Mit Docker (empfohlen)

git clone https://git.mbm.wtf/MrMaho/MSCO-Dedicated-Server.git
cd MSCO-Dedicated-Server
docker compose up -d --build     # erster Start legt data/server.json an und beendet sich
  1. In data/server.json mindestens LicenseKey eintragen.
  2. Die Spielstand-Dateien nach data/save/ kopieren (siehe unten).
  3. docker compose up -d
Aktion Befehl
Konsole docker attach msco-server – verlassen mit Strg+P, dann Strg+Q (Strg+C beendet den Server)
Einzelner Befehl docker exec msco-server msco <befehl>, z.B. msco players
Logs docker logs -f msco-server
Stoppen docker compose stop – speichert vorher den Weltzustand und meldet den Server ab
Update git pull && docker compose up -d --build

Anderer Port: in data/server.json und in docker-compose.yml ändern.

Ohne Docker

Linux (systemd): .NET 10 Runtime installieren (sudo apt install dotnet-runtime-10.0), dann dotnet publish -c Release -o /opt/msco-server und deploy/msco-server.service einrichten (Anleitung oben in der Datei). Daten liegen in /var/lib/msco-server. Für eine Konsole den Server stattdessen in screen/tmux starten.

Windows: dotnet publish -c Release -o publish, dann publish\MSCO.Server.exe starten.

Startparameter:

  • --data <ordner> – Datenordner (Standard: Programmordner; Docker: /data)
  • --import-save [pfad] – Spielstand übernehmen (ohne Pfad: der eigene Spielstand dieses PCs, auch Proton)
  • --cmd <befehl> – Befehl an einen laufenden Server im selben Datenordner schicken

Spielstand

In data/save/ gehören diese Dateien aus dem My-Summer-Car-Spielstand: defaultES2File.txt, items.txt, meshsave.txt, graveyard.txt (und notepad.txt, falls vorhanden).

  • Windows: %USERPROFILE%\AppData\LocalLow\Amistech\My Summer Car
  • Linux (Proton): ~/.steam/steam/steamapps/compatdata/516750/pfx/drive_c/users/steamuser/AppData/LocalLow/Amistech/My Summer Car

Neuen Spielstand übernehmen: Dateien ersetzen, data/world.json löschen, Server neu starten.

Einstellungen (data/server.json)

Einstellung Bedeutung
LicenseKey Schlüssel von der Keymaster-Seite (Pflicht)
Name, Description Anzeige im Server-Browser
MaxPlayers, Port Spieler-Limit (max. 3 sinnvoll), Port
Public false = nicht in der Liste, nur Direct Connect
RequireSteam true = nur Spieler mit Steam; false = Non-Steam-Server (Spieler werden über den Namen erkannt)
PublicAddress öffentliche IP/Domain für die Liste (nur hinter NAT/Proxy nötig)
AutosaveSeconds wie oft der Weltzustand gespeichert wird
SteamWebApiKey optional: Steam-Anmeldetickets der Spieler bei Steam prüfen
BannedSteamIds gesperrte Spieler
Admins SteamID64s, die im Spiel mit /admin kicken/bannen dürfen

Fehlende Einstellungen ergänzt der Server beim Start automatisch. Umgebungsvariablen (MSCO_LICENSE_KEY, MSCO_NAME, MSCO_PORT, MSCO_MAX_PLAYERS, MSCO_PUBLIC, MSCO_REQUIRE_STEAM, MSCO_PUBLIC_ADDRESS, MSCO_STEAM_WEB_API_KEY) überschreiben server.json.

Konsolenbefehle

Befehl Beschreibung
status, players Übersicht, Spielerliste mit IDs
kick <id> [grund], ban <id> [grund] Spieler entfernen / sperren
say <text> Chatnachricht an alle
admins, op <id oder SteamID64>, deop <...> Admins anzeigen / geben / nehmen
save Weltzustand jetzt speichern
reset-world alle Änderungen seit dem Spielstand verwerfen
reload-save Spielstand-Dateien neu einlesen
stop speichern und beenden

Im Spiel öffnen Admins mit /admin (Chat, Taste T) oder admin (F8-Konsole) ein Kick/Ban-Menü. Der Chat landet auch im Server-Log.

Was der Server speichert

  • save/ – der Ausgangs-Spielstand, den jeder neue Spieler bekommt.
  • world.json – alles, was seitdem passiert ist: Positionen bewegter Objekte, Schraub-/Montage-Aktionen, Geld, Türen/Tore, Fahrzeugzustand (Tank, Öl, Schrauben, Verschleiß …) und die letzte Position jedes Spielers.

Beim Beitreten: Spielstand laden → Objekte erfassen → Weltzustand anwenden → an der letzten eigenen Position weiterspielen.

Sicherheit

  • Die Adresse des Masters (https://msco.mbm.wtf) ist fest eingebaut, damit niemand die Schlüsselprüfung mit einem eigenen Master umgehen kann. Nur Debug-Builds akzeptieren MSCO_MASTER_URL.
  • data/ enthält Lizenzschlüssel und API-Keys – nicht veröffentlichen (steht in .gitignore).

Lizenz

GNU AGPL-3.0 – siehe LICENSE.

Made by MBM – mbm.wtf