46 lines
1.7 KiB
Bash
46 lines
1.7 KiB
Bash
#!/usr/bin/env bash
|
||
# Richtet einen Docker-Host für CS2 Mapveto ein. Läuft vom eigenen Rechner aus per SSH.
|
||
#
|
||
# Aufruf: bash deploy/docker-host-einrichten.sh <ssh-ziel> [volume]
|
||
# Beispiel: bash deploy/docker-host-einrichten.sh cs2@192.168.178.111
|
||
#
|
||
# Voraussetzungen: SSH-Schlüssel hinterlegt (ohne Passwortabfrage), Docker auf dem Host installiert.
|
||
set -euo pipefail
|
||
|
||
TARGET="${1:?Aufruf: $0 <ssh-ziel> [volume]}"
|
||
VOLUME="${2:-cs2-mapveto-gamefiles}"
|
||
IMAGE="joedwards32/cs2:latest"
|
||
HOST_PART="${TARGET#*@}"
|
||
|
||
echo "→ Verbindung zu $TARGET prüfen"
|
||
ssh -o BatchMode=yes -o ConnectTimeout=10 "$TARGET" true
|
||
|
||
echo "→ Docker prüfen"
|
||
if ! ssh "$TARGET" "command -v docker >/dev/null 2>&1"; then
|
||
echo "Docker fehlt auf $HOST_PART. Installation: https://docs.docker.com/engine/install/" >&2
|
||
exit 1
|
||
fi
|
||
ssh "$TARGET" "docker info >/dev/null"
|
||
|
||
echo "→ Freier Platz für Docker (CS2 braucht rund 90 GB)"
|
||
ssh "$TARGET" "df -BG /var/lib/docker 2>/dev/null | tail -1 || df -BG / | tail -1"
|
||
|
||
echo "→ Volume $VOLUME anlegen (falls nicht vorhanden)"
|
||
ssh "$TARGET" "docker volume inspect $VOLUME >/dev/null 2>&1 || docker volume create $VOLUME >/dev/null"
|
||
|
||
echo "→ Image $IMAGE laden"
|
||
ssh "$TARGET" "docker pull $IMAGE"
|
||
|
||
cat <<EOF
|
||
|
||
Fertig. Diesen Eintrag in CS2_DOCKER_HOSTS (JSON-Liste in der .env) aufnehmen:
|
||
|
||
{"name":"$HOST_PART","dockerHost":"ssh://$TARGET","publicHost":"$HOST_PART","portStart":27100,"portEnd":27139}
|
||
|
||
Hinweise:
|
||
- name muss pro Host eindeutig sein.
|
||
- Frei sein müssen: 27015–27020 (LAN-Reiter von Steam), 27100–27139 und jeweils 100 darüber für CSTV
|
||
(27115–27120, 27200–27239). Pro Host sind bis zu 40 Matches möglich, 6 davon im LAN-Reiter.
|
||
- Der erste Server-Start lädt die CS2-Spieldateien (rund 60 bis 90 GB). Das dauert lange.
|
||
EOF
|