Repository navigation
Expand file tree
/
Copy pathsetup.sh
More file actions
76 lines (65 loc) · 2.25 KB
/
Copy pathsetup.sh
File metadata and controls
76 lines (65 loc) · 2.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#!/usr/bin/env bash
set -euo pipefail
echo ""
echo "============================================"
echo " TF2 Classified Docker Server Setup"
echo "============================================"
echo ""
# --- Prerequisites ---
if ! command -v docker &>/dev/null; then
echo "ERROR: Docker is not installed."
echo " https://docs.docker.com/get-docker/"
exit 1
fi
if ! docker compose version &>/dev/null; then
echo "ERROR: Docker Compose v2 not available."
echo " https://docs.docker.com/compose/install/"
exit 1
fi
echo "[OK] Docker and Docker Compose found"
# --- Data directories ---
echo "[..] Creating data directories..."
mkdir -p data/{cfg,addons,maps,logs,demos}
mkdir -p data/addons/sourcemod/{plugins,configs}
mkdir -p data/fastdl/tf2classified/{maps,materials,models,sound}
# --- .env ---
if [[ ! -f .env ]]; then
cp .env.example .env
# Generate a random alphanumeric RCON password
RCON_PASS=$(tr -dc 'A-Za-z0-9' < /dev/urandom | head -c 20)
sed -i "s/^RCON_PASSWORD=changeme$/RCON_PASSWORD=${RCON_PASS}/" .env
echo "[OK] Created .env"
echo " RCON password: ${RCON_PASS}"
echo " Write this down. You need it for remote admin."
else
echo "[--] .env already exists, not overwriting"
fi
# --- Default custom config ---
if [[ ! -f data/cfg/server_custom.cfg ]]; then
cat > data/cfg/server_custom.cfg << 'EOF'
// Custom server settings — loaded after server.cfg
// This file survives container restarts. Put your overrides here.
// mp_timelimit 20
// mp_winlimit 3
// sv_alltalk 1
EOF
echo "[OK] Created data/cfg/server_custom.cfg"
fi
echo ""
echo "============================================"
echo " Done."
echo "============================================"
echo ""
echo "Next:"
echo ""
echo " 1. Edit your config: nano .env"
echo " 2. Build and start: docker compose up -d"
echo " 3. Watch first-run install: docker compose logs -f"
echo " (downloads ~20GB of game files on first boot)"
echo ""
echo "Optional — FastDL (custom map downloads):"
echo " Drop .bsp files in data/maps/, then: make compress-maps"
echo " Set FASTDL_URL in .env"
echo " Self-hosted: docker compose --profile fastdl up -d"
echo " External (R2, S3, etc.): upload data/fastdl/ contents"
echo ""