Docker で ARK Survival Evolved サーバを構築する
概要
友人のいらなくなったデスクトップパソコンを借りてきたので、ここに ARK Survival Evolved のサーバをホストすることになった。サーバには Ubuntu Server 24.04 をインストール。OS および Docker がインストールされていることが前提。
Gemini Pro プロンプト
Docker で ARK Survival Evolved のゲームサーバをホストしたいです。Docker イメージは ubuntu:24.04 を使用します。Docker Compose ファイルおよび Dockerfile を作成してください。これらは、ホストマシンの /home/me/server-ark ディレクトリの配下に置かれます。server-ark ディレクトリは、コンテナの /home/ubuntu にボリュームマウントします。つまり、volumes: - .:/home/ubuntu ということです。基本的には /home/me/server-ark:/home/ubuntu ディレクトリを使用します。ただし、ゲームリソース(SteamCMD でダウンロードしたデータ)は /home/me/server-ark/resource:/home/ubuntu/resource に置きます。また、シェルスクリプトを 1 つ作ります。ひとつめは launch.sh です。ここでは、ゲームリソースのダウンロードおよび更新およびゲームサーバの起動を行います。steamcmd ディレクトリは、コンテナの /steamcmd にインストールしてください。なお、セキュリティ対策を実施してください。ただし、ユーザの追加は行わず、ubuntu ユーザを使用してください。UID=1000、GID=1000 を使用します。ゲームの実行は一般ユーザで行い、Root 権限を使用してはいけません。コンテナのビルド時にゲームリソースをダウンロードして、ゲームサーバを自動起動します。次回からは、アップデートのチェックのみ行われます。コンテナを起動すると同時に、ゲームサーバが起動するようにします。
環境
- OS: Ubuntu 24.04.4 LTS
- Docker: v29.2.1
最終構成
server-ark/
├ Steam/
├ ...
└ steamapps/(Steam 関連のファイル)
├ resource/
├ ...
└ ShooterGame/(ARK ゲームデータ)
├ launch.sh
├ Dockerfile
└ docker-compose.yml
構築手順
1. Dockerfile を作成
FROM ubuntu:24.04
RUN apt-get update && apt-get install -y \
lib32gcc-s1 \
lib32stdc++6 \
libstdc++6 \
curl \
ca-certificates \
libsdl2-2.0-0 \
&& rm -rf /var/lib/apt/lists/*
RUN mkdir -p /steamcmd && chown ubuntu:ubuntu /steamcmd
USER ubuntu
WORKDIR /home/ubuntu
RUN cd /steamcmd && \
curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -
ENTRYPOINT ["/bin/bash", "/home/ubuntu/launch.sh"]
2. Docker Compose を作成
services:
server-ark:
build: .
image: ark-server-on-ubuntu-2404:1.0
container_name: server-ark
user: "1000:1000"
volumes:
- .:/home/ubuntu
- ./resource:/home/ubuntu/resource
ports:
- "7777:7777/udp"
- "7778:7778/udp"
- "27015:27015/udp"
ulimits:
nofile:
soft: 1000000
hard: 1000000
restart: unless-stopped
tty: true
stdin_open: true
3. ゲームサーバ起動スクリプトを作成
#!/bin/bash
STEAMCMD="/steamcmd/steamcmd.sh"
INSTALL_DIR="/home/ubuntu/resource"
ARK_BIN="$INSTALL_DIR/ShooterGame/Binaries/Linux/ShooterGameServer"
echo "--- Checking for updates ---"
$STEAMCMD +force_install_dir "$INSTALL_DIR" +login anonymous +app_update 376030 validate +quit
echo "--- Starting ARK Server ---"
exec "$ARK_BIN" "TheIsland?listen?SessionName=ServerXYZ" -server -log
4. ディレクトリを作成して起動
cd /home/me/server-ark
mkdir -p resource
chmod +x launch.sh
sudo chown -R 1000:1000 /home/me/server-ark
docker compose up -d --build
Discussion