Ark Survival Ascended のサーバーを構築する
Published on 2024/03/16 , Last updated 2024/03/30Tags
概要
ark-survival-ascended-linux-container-image を使用して Ark Survival Ascended のサーバーを構築します。
前提条件
- Docker, Docker Compose が使用できる必要があります。
参考情報
サーバーの構築
Ark Survival Ascended のサーバーを構築します。
-
サーバーに必要なフォルダを作成します。
- steam-1
- steamcmd-1
- server-files-1
- cluster-shared
-
Docker Compose を参考に
docker-compose.yaml
を作成します。- asa-server-1 > environment > ASA_START_PARAMS でサーバーの設定を行います。
- TheIsland_WP: マップ The Islandを指定します。
- Port: ゲームポートを指定します。
- RCONPort: RCON ポートを指定します。
- RCONEnabled: RCON を有効にします。
- SessionName: セッション名を指定します。
- ServerPassword: サーバーのパスワードを指定します。
- -WinLiveMaxPlayers: サーバー上で同時にプレイできるプレーヤーの最大数を指定します。
- -culture: サーバーの出力言語を指定します。
- -ClusterDirOverride: Cross-ARK Data Transfer のクロスサーバーストレージの場所を指定します。
version: "3.3" services: asa-server-1: container_name: asa-server-1 hostname: asa-server-1 entrypoint: "/usr/bin/start_server" user: gameserver image: "mschnitzer/asa-linux-server:latest" environment: - ASA_START_PARAMS=TheIsland_WP?listen?Port=7777?RCONPort=27020?RCONEnabled=True?SessionName=MyPrivateArkServer?ServerPassword=mypassword -WinLiveMaxPlayers=16 -culture=ja -ClusterDirOverride="/home/gameserver/cluster-shared" #PUT clusterid=SECRET here to enable transfers - ENABLE_DEBUG=0 - TZ=Asia/Tokyo ports: # Game port for player connections through the server browser - 0.0.0.0:7777:7777/udp # RCON port for remote server administration - 0.0.0.0:27020:27020/tcp depends_on: - set-permissions-1 volumes: - ./steam-1:/home/gameserver/Steam:rw - ./steamcmd-1:/home/gameserver/steamcmd:rw - ./server-files-1:/home/gameserver/server-files:rw - ./cluster-shared:/home/gameserver/cluster-shared:rw networks: asa-network: set-permissions-1: entrypoint: "/bin/bash -c 'chown -R 25000:25000 /steam ; chown -R 25000:25000 /steamcmd ; chown -R 25000:25000 /server-files ; chown -R 25000:25000 /cluster-shared'" user: root image: "opensuse/leap" volumes: - ./steam-1:/steam:rw - ./steamcmd-1:/steamcmd:rw - ./server-files-1:/server-files:rw - ./cluster-shared:/cluster-shared:rw volumes: cluster-shared: steam-1: steamcmd-1: server-files-1: networks: asa-network: attachable: true driver: bridge driver_opts: com.docker.network.bridge.name: "asanet"
- asa-server-1 > environment > ASA_START_PARAMS でサーバーの設定を行います。
サーバーの起動/停止
-
コンテナを起動します。
docker compose up -d
-
コンテナを停止します。
docker compose down
-
コンテナを削除します。
docker compose rm
サーバへ接続
クライアントからサーバーに接続します。
サーバーブラウザから接続
-
ゲームを起動して
ゲームに参加
を選択します。 -
非公式
のタブを選択します。 -
プレイヤーサーバーを表示
にチェックを入れて、検索フィールドにセッション名を入力します。- サーバーにパスワードを設定した場合は
パスワードありのサーバーを表示
にチェックを入れます。
- サーバーにパスワードを設定した場合は
-
セッション名を選択し
開始
を選択します。
タイムアウトが発生してサーバーに接続できない場合は コンソールから接続
してみて下さい。
コンソールから接続
-
ゲームを起動して ` キーを入力しコンソールを開きます。
-
コンソールに次のコマンドを入力してサーバーに接続します。{ipaddress}、{port} は自分の環境に置き換えて下さい。
open {ipaddress}:{port}
パスワードありのサーバーに入れない場合
パスワードありのサーバーに接続する際に、正しいパスワードを入力してもサーバーに入れない不具合があるようです。(2024/3 時点)
そのため、次の手順でパスワードありのサーバーに入る必要があります。
-
サーバーブラウザから接続
を実施してサーバーに入ろうとするとパスワード入力ダイアログが表示されます。ここで正しいパスワードを入力します。 -
もしサーバーに入れなかった場合は次に
コンソールから接続
を実施すると問題なくサーバーに入れます。
サーバーの公開
Tunnel を構築して自宅サーバーを公開する方法 を参考にしてください。
次のように nginx を Ark Survival Ascended に読み替えてください。
Tunnel の構築
ファイアウォールの設定
Ark Survival Ascended 用のファイアウォールルールを作成します。
- 名前: asa
- プロトコルとポート
- 27020/TCP
- 7777/UDP
Tunnel の設定
-
インスタンスの
ネットワーク タグ
にasa
を設定します。 -
インスタンスのポートを解放します。
sudo ufw allow 27020 sudo ufw allow 7777/udp
-
rathole の設定ファイル server.toml を作成します。
# server.toml [server] bind_addr = "0.0.0.0:2333" [server.services.asa-tcp] token = "asa-token" type = "tcp" bind_addr = "0.0.0.0:27020" [server.services.asa-udp] token = "asa-token" type = "udp" bind_addr = "0.0.0.0:7777"
-
rathole の docker-compose.yaml を作成します。
version: "3.7" services: # https://github.com/rapiz1/rathole tunnel: image: rapiz1/rathole restart: unless-stopped command: ["--server", "/app/server.toml"] tty: true ports: # rathole - 2333:2333 # Ark Survival Ascended - 27020:27020 - 7777:7777/udp volumes: - ./server.toml:/app/server.toml
自宅サーバーの公開
-
rathole の設定ファイル client.toml を作成します。
# client.toml [client] remote_addr = "myserver:2333" [client.services.asa-tcp] token = "asa-token" type = "tcp" local_addr = "asa-server-1:27020" [client.services.asa-udp] token = "asa-token" type = "udp" local_addr = "asa-server-1:7777"
-
自宅サーバーと Tunnel の docker-compose.yaml を作成します。
# docker-compose.yaml > services > tunnel tunnel: depends_on: - asa-server-1 image: rapiz1/rathole restart: unless-stopped command: ["--client", "/app/client.toml"] tty: true volumes: - ./client.toml:/app/client.toml networks: asa-network: