#!/bin/bash
set -e
echo "=== 🔧 Instalacja Arma 3 Dedicated Server na ARM64 z Docker + QEMU ==="
# ===== KONFIGURACJA UŻYTKOWNIKA =====
STEAM_USER="your_steam_username"
STEAM_PASS="your_steam_password"
STEAM_GUARD_CODE="" # ← wprowadź kod Steam Guard jeśli potrzebny (opcjonalne)
# ===== INSTALACJA ZALEŻNOŚCI =====
echo "==> Sprawdzanie wymaganych pakietów..."
sudo apt update
sudo apt install -y docker.io docker-compose qemu-user-static binfmt-support firewalld
echo "==> Konfiguracja emulacji x86_64..."
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
# ===== FIREWALL =====
echo "==> Konfiguracja firewalld (otwieranie portów Arma 3)..."
sudo systemctl enable --now firewalld
sudo firewall-cmd --permanent --add-port=2302/udp # Game port
sudo firewall-cmd --permanent --add-port=2303/udp # Steam query
sudo firewall-cmd --permanent --add-port=2304/udp # BattlEye
sudo firewall-cmd --reload
# ===== STRUKTURA KATALOGÓW =====
echo "==> Tworzenie katalogów..."
mkdir -p arma3-lgsm/arma3-data
cd arma3-lgsm
# ===== Dockerfile =====
echo "==> Tworzenie Dockerfile..."
cat > Dockerfile <<EOF
FROM --platform=linux/amd64 ubuntu:22.04
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y \\
curl wget tar unzip software-properties-common \\
lib32gcc-s1 lib32stdc++6 ca-certificates \\
tmux netcat cron libtinfo5 libcurl4-gnutls-dev \\
libssl-dev file bsdmainutils python3 \\
&& rm -rf /var/lib/apt/lists/*
RUN useradd -m arma3
USER arma3
WORKDIR /home/arma3
RUN curl -sSL https://linuxgsm.sh | bash -s arma3server
COPY entrypoint.sh /home/arma3/entrypoint.sh
RUN chmod +x /home/arma3/entrypoint.sh
CMD ["./entrypoint.sh"]
EOF
# ===== Entrypoint (instalacja + logowanie Steam) =====
echo "==> Tworzenie entrypoint.sh..."
cat > entrypoint.sh <<EOF
#!/bin/bash
echo "==> Instalacja serwera..."
./arma3server auto-install
echo "==> Logowanie do Steam (jeśli wymagane)..."
./arma3server force-update <<STEAMINPUT
$STEAM_USER
$STEAM_PASS
$STEAM_GUARD_CODE
STEAMINPUT
echo "==> Uruchamianie serwera..."
./arma3server start
# Utrzymywanie kontenera aktywnego
tail -f /dev/null
EOF
# ===== docker-compose.yml =====
echo "==> Tworzenie docker-compose.yml..."
cat > docker-compose.yml <<EOF
version: '3.8'
services:
arma3-lgsm:
build: .
platform: linux/amd64
container_name: arma3-lgsm
ports:
- "2302:2302/udp"
- "2303:2303/udp"
- "2304:2304/udp"
volumes:
- ./arma3-data:/home/arma3
stdin_open: true
tty: true
restart: unless-stopped
EOF
# ===== BUDOWANIE I URUCHAMIANIE =====
echo "==> Budowanie i uruchamianie kontenera..."
docker-compose up --build -d
echo "✅ Serwer Arma 3 został uruchomiony!"
echo "📂 Pliki serwera znajdują się w: $(pwd)/arma3-data"
echo "📡 Upewnij się, że porty UDP: 2302–2304 są przekierowane (jeśli to VPS)"