Der Aufräum-Lauf löscht Lobbys, deren Veto nie gestartet wurde, nach LOBBY_MAX_HOURS (Standard 3, 0 = nie) seit dem Erstellen und stoppt ihren Server. Matches im Veto, im Spiel oder abgeschlossen bleiben unberührt.
88 lines
3.7 KiB
Bash
88 lines
3.7 KiB
Bash
# Kopieren nach .env und anpassen. Alle Werte sind optional, außer beim jeweiligen Serveradapter angegeben.
|
||
|
||
# --- Webanwendung ---
|
||
PORT=3000
|
||
# Öffentliche Adresse der Webseite, wird für Einladungslinks verwendet.
|
||
# Entwicklung mit Vite: http://localhost:5173, Produktion: z. B. https://veto.example.de
|
||
PUBLIC_URL=http://localhost:5173
|
||
DATABASE_FILE=data/cs2-mapveto.db
|
||
MAP_POOL_FILE=server/config/map-pools.json
|
||
# Wenn gesetzt, ist dieses Passwort zum Erstellen von Matches nötig.
|
||
CREATE_MATCH_PASSWORD=
|
||
# false (Standard): ein bereiter Spieler pro Team reicht. true: Teams müssen vollständig sein (2 bzw. 5 Spieler).
|
||
REQUIRE_FULL_TEAMS=false
|
||
# true, wenn die App hinter einem Reverse-Proxy läuft (für korrekte Client-IP beim Rate-Limit).
|
||
TRUST_PROXY=false
|
||
|
||
# --- Serververwaltung ---
|
||
# demo = simuliert, startet KEINE echten Server (Standard)
|
||
# docker = startet pro Match einen CS2-Container
|
||
# static = nutzt vorhandene, selbst betriebene CS2-Server per RCON
|
||
SERVER_ADAPTER=demo
|
||
SERVER_IDLE_TIMEOUT_MINUTES=30
|
||
SERVER_MAX_LIFETIME_HOURS=8
|
||
# Offene Lobbys nach so vielen Stunden samt Server löschen (0 = nie)
|
||
LOBBY_MAX_HOURS=3
|
||
SERVER_STATUS_POLL_SECONDS=5
|
||
SERVER_REAPER_INTERVAL_SECONDS=60
|
||
|
||
# --- Match-Einstellungen auf dem CS2-Server ---
|
||
CS2_TV_ENABLE=true
|
||
CS2_TV_DELAY=90
|
||
CS2_MAXROUNDS_COMPETITIVE=24
|
||
CS2_MAXROUNDS_WINGMAN=16
|
||
CS2_OVERTIME=true
|
||
# Zusätzliche Konsolenbefehle nach dem Mapwechsel, durch ; getrennt
|
||
CS2_EXTRA_COMMANDS=
|
||
|
||
# --- Demo-Adapter ---
|
||
DEMO_START_SECONDS=20
|
||
# true: erste Konfiguration schlägt absichtlich fehl (zum Testen von "Erneut versuchen")
|
||
DEMO_FAIL_FIRST_CONFIGURE=false
|
||
|
||
# --- Docker-Adapter (SERVER_ADAPTER=docker) ---
|
||
# Game Server Login Token für App-ID 730 (https://steamcommunity.com/dev/managegameservers); leer = LAN-Modus (sv_lan 1)
|
||
CS2_GSLT=
|
||
# Pflicht: Adresse, unter der Spieler den Docker-Host erreichen (IP oder DNS-Name)
|
||
CS2_PUBLIC_HOST=
|
||
# Adresse, unter der das Backend die RCON-Ports der Container erreicht
|
||
CS2_RCON_HOST=127.0.0.1
|
||
CS2_DOCKER_IMAGE=joedwards32/cs2:latest
|
||
# Pro Match werden zwei Ports belegt (Spiel TCP+UDP, CSTV UDP)
|
||
CS2_PORT_RANGE_START=27015
|
||
CS2_PORT_RANGE_END=27115
|
||
# Gemeinsames Volume für die Spieldateien (~60 GB), damit nicht jedes Match neu herunterlädt
|
||
CS2_DOCKER_VOLUME=cs2-mapveto-gamefiles
|
||
CS2_DOCKER_EXTRA_ARGS=
|
||
# Optional: mehrere Docker-Hosts als JSON-Liste (eine Zeile). Leer = nur CS2_PUBLIC_HOST/DOCKER_HOST.
|
||
# Einrichtung pro Host: bash deploy/docker-host-einrichten.sh <ssh-ziel>
|
||
# CS2_DOCKER_HOSTS=[{"name":"host1","dockerHost":"ssh://cs2@192.168.178.111","publicHost":"192.168.178.111","portStart":27100,"portEnd":27139}]
|
||
CS2_START_TIMEOUT_MINUTES=20
|
||
# Spielports für den LAN-Reiter des Steam-Serverbrowsers (Steam sucht nur 27015–27020). Leer = aus.
|
||
CS2_LAN_PORTS=27015-27020
|
||
# CSTV-Port = Spielport + dieser Abstand (z. B. 27015 -> 27115)
|
||
CS2_TV_PORT_OFFSET=100
|
||
# Messer-Server für die Seitenwahl (im Admin-Bereich startbar)
|
||
KNIFE_MAP=de_mirage
|
||
KNIFE_WARMUP_SECONDS=90
|
||
KNIFE_MAX_SERVERS=4
|
||
# Anfang des Servernamens im Serverbrowser, danach folgen die Teamnamen
|
||
CS2_SERVERNAME_PREFIX=Maxlan
|
||
DOCKER_BIN=docker
|
||
|
||
# --- Static-Pool-Adapter (SERVER_ADAPTER=static) ---
|
||
# host:port:rconPasswort[:tvPort], mehrere durch Komma getrennt
|
||
CS2_STATIC_SERVERS=
|
||
|
||
# --- Live-Ergebnisse ---
|
||
# Adresse, unter der der CS2-Server dieses Backend erreicht (Standard: PUBLIC_URL), z. B. http://192.168.178.31:3000
|
||
LOG_RECEIVER_URL=
|
||
# true: empfangene Logzeilen im Terminal ausgeben (Fehlersuche)
|
||
LOG_DEBUG=false
|
||
# Sekunden nach Map-Ende bis zur nächsten Map bzw. zum Abschluss der Serie; -1 = nur manuell
|
||
SERIES_AUTO_ADVANCE_SECONDS=30
|
||
# Schlüssel für die Stream-Übersicht aller Matches (/stream?key=...); leer = offen
|
||
STREAM_KEY=
|
||
# Discord-Webhook für Meldungen (Veto, Match-Start, Map- und Serienende, Fehler). Leer = aus
|
||
DISCORD_WEBHOOK_URL=
|