terminal

LinuxScripts

menu

Skrypt Instalacji Arma 3 (ARM64 + Docker)

#!/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)"
chmod +x arma3-server-install.sh
./arma3-server-install.sh
docker logs -f arma3-lgsm