ARK のマルチプレイサーバーを立てる (Docker on CentOS 8 Stream)
ARK: Survival Evolved が無料 "だった" ので入手しました。 マルチプレイのためには自分でサーバーを起動する必要があったので、VPS 上に構築した時の作業手順メモします。
なお、VPS のスペックがショボすぎたために、動作確認まではできず... 手順メモとして残しておきます。
VPS 環境
さくらのVPS 1GBプラン
swapfile を有効にする
ARK サーバーは 6GB 以上メモリがないと起動失敗するようです (起動時チェックにひっかかる?)。
実際のメモリ消費量はもっと少ないためか (?) swapfile
を設定してメモリ容量が十分なように見せかければ動作するらしいです。
$ free -h total used free shared buff/cache available Mem: 964Mi 115Mi 321Mi 43Mi 527Mi 663Mi Swap: 4.0Gi 51Mi 3.9Gi $ sudo fallocate -l 6GiB /swapfile $ sudo chmod 600 /swapfile $ sudo swapon /swapfile $ free -h total used free shared buff/cache available Mem: 964Mi 118Mi 313Mi 43Mi 532Mi 660Mi Swap: 9Gi 51Mi 9.9Gi
元々4GiBのswapが設定されていましたが、念のための追い swap 6GiB です。
OS 起動時に自動的に swap 領域が設定されるよう、 /etc/fstab
に以下を追加します。
/swapfile swap swap defaults 0 0
Docker をインストールする
ARK サーバーを動かすためには公開されている Docker イメージを使うのが簡単です。 まずは Docker をインストールします。
$ sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo $ sudo dnf install docker-ce docker-ce-cli containerd.io docker-compose-plugin $ sudo usermod -aG docker $(id -un) $ sudo systemctl enable --now docker.service $ sudo systemctl enable --now docker.socket
ARK サーバーを構築する
/srv/docker/ark-server
に必要なファイル一式を置くこととします。
$ sudo mkdir /srv/docker $ sudo chown root:docker /srv/docker $ sudo chmod 774 /srv/docker $ cd /srv/docker $ mkdir ark-server $ cd ark-server
以下内容の /srv/docker/ark-server/docker-compose.yml
を作成します。
Dockerイメージ の README 記載の docker-compose.yml
とほとんど同じですが、
volume の作成先を ${HOME}
ではなくカレントディレクトリにしています。
version: '3' services: server: restart: always container_name: ark_server image: hermsi/ark-server:latest volumes: - ./ark-server:/app - ./ark-server-backups:/home/steam/ARK-Backups environment: - SESSION_NAME=${SESSION_NAME} - SERVER_MAP=${SERVER_MAP} - SERVER_PASSWORD=${SERVER_PASSWORD} - ADMIN_PASSWORD=${ADMIN_PASSWORD} - MAX_PLAYERS=${MAX_PLAYERS} - UPDATE_ON_START=${UPDATE_ON_START} - BACKUP_ON_STOP=${BACKUP_ON_STOP} - PRE_UPDATE_BACKUP=${PRE_UPDATE_BACKUP} - WARN_ON_STOP=${WARN_ON_STOP} ports: # Port for connections from ARK game client - "7777:7777/udp" # Raw UDP socket port (always Game client port +1) - "7778:7778/udp" # RCON management port - "27020:27020/tcp" # Steam's server-list port - "27015:27015/udp" networks: - default
設定値は /srv/docker/ark-server/.env
に記載します。
SESSION_NAME=... SERVER_MAP=TheIsland SERVER_PASSWORD=... ADMIN_PASSWORD=... MAX_PLAYERS=5 UPDATE_ON_START=false BACKUP_ON_STOP=false PRE_UPDATE_BACKUP=true WARN_ON_STOP=true
準備が出来たら起動します。
$ docker compose up -d $ docker compose logs -f ...
初回起動時は多数のファイルをダウンロードするために時間がかかるため、忍耐強く待ちます。
firewall を設定しポートを公開する
ARK サーバーのポートをインターネットに公開するため、 firewalld
を設定します。
まずは、 ARK サーバーをサービスとして定義してやります。
$ sudoedit /etc/firewalld/services/ark-server.xml
内容は以下です。
<?xml version="1.0" encoding="utf-8"?> <service> <short>ARK</short> <description>ARK Survival Evolved</description> <port protocol="udp" port="27015"/> <port protocol="udp" port="7777"/> <port protocol="udp" port="7778"/> </service>
上記で定義したサービスの利用するポートを開放します。
$ sudo firewall-cmd --reload $ sudo firewall-cmd --permanent --zone=public --add-service=ark-server $ sudo firewall-cmd --reload
Steam クライアントに登録する
Steam の表示→サーバーで、上記で立ち上げたサーバーのIP (or FQDN) を登録します。 構築がうまくいっていれば、ARKが起動できるはず。