はじめに
前回の記事
で作成したEC2インスタンスは x86
アーキテクチャのCPUのインスタンスとなっている。
今回はARM
インスタンスで同様のことが可能かどうかを調査するために試してみる。
最終的には、Raspberry Pi 4
での運用を考えているため、その想定で作成する。
環境
Windows 10 Professional
AWS
Docker Version: 20.10.17
Docker Compose version v2.4.1
サーバの構築
EC2インスタンスの作成
※構築手順はほぼ同じ、AMI, インスタンスタイプのみ変更する。
- AWS -> EC2からダッシュボードを開く。
- 左メニューバーの「インスタンス」を選択しインスタンス一覧を開く。
- 右上の「インスタンスを起動」をクリックする。
- インスタンスの設定を行う。 インスタンスの設定は下記の通り。
AMI: Debian 11
アーキテクチャ: 64ビット(Arm)
インスタンスタイプ: t4g.medium (2vCPU, 4GBメモリ)
セキュリティグループ:
SSH 自分のIP
2456/UDP, 2457/UDP を 0.0.0.0/0 からアクセス可能にする。
ディスク: 8GB (移行するデータによっては変更したほうが良い。)
- 「インスタンスを起動」を押し、インスタンスを起動させる。
ElasticIPの付与
前回の記事#ElasticIPの付与を参照する
ここまででサーバの構築は終了
この後は、サーバ内にSSHで入り、必要なパッケージを入れていく。
※SSHでの接続時のエラー対処
これは、SSHで接続するプロトコルのバージョンが低いため、SSH2-256 / SSH2-512のいずれかのプロトコルで接続するように言われている。
RLoginでは、下記を修正して設定すると接続ができる。
また、 ユーザ名はAMIごとに異なるため下記を参照すること。
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html#TroubleshootingInstancesConnectingMindTerm
パッケージのインストール
Dockerのインストール
$ curl -fsSL https://get.docker.com -o get-docker.sh
# インストールステップの確認
$ DRY_RUN=1 sh ./get-docker.sh
$ sudo sh get-docker.sh
$ docker version
Docker compose のインストール
上記で入っているため不要 インストールできたかの確認
$ docker compose version
サービスの起動/自動起動設定
# Dockerサービスの起動
sudo systemctl start docker
# システム起動時にDockerサービスが起動するように設定
$ sudo systemctl enable docker
dockerグループの作成
$ sudo groupadd docker (ある場合は groupadd: group 'docker' already existsと出る。)
$ sudo usermod -a -G docker admin
$ sudo chgrp docker /var/run/docker.sock
設定を反映する。
$ sudo systemctl restart docker
一回 admin
はログアウトし、再接続する。
$ docker version
Client: Docker Engine - Community
Version: 23.0.1
API version: 1.42
Go version: go1.19.5
Git commit: a5ee5b1
Built: Thu Feb 9 19:46:41 2023
OS/Arch: linux/arm64
Context: default
Server: Docker Engine - Community
Engine:
Version: 23.0.1
API version: 1.42 (minimum version 1.12)
Go version: go1.19.5
Git commit: bc3805a
Built: Thu Feb 9 19:46:41 2023
OS/Arch: linux/arm64
Experimental: false
containerd:
Version: 1.6.19
GitCommit: 1e1ea6e986c6c86565bc33d52e34b81b3e2bc71f
runc:
Version: 1.1.4
GitCommit: v1.1.4-0-g5fd4c4d
docker-init:
Version: 0.19.0
GitCommit: de40ad0
Permission denied
が出なければOK!
UTC->JSTへの変更
$ sudo timedatectl set-timezone Asia/Tokyo
$ date
Sun Mar 26 01:20:44 UTC 2023
$ sudo timedatectl set-timezone Asia/Tokyo
$ date
Sun Mar 26 10:20:51 JST 2023
valheimサーバの構築
valheim
のサーバは、x86_64
用のビルドしかないため、x86_64
のアプリケーションを起動できるように Box64
を入れる。
のだが、Docker
の方に入っているので不要っぽい。
いくつかリポジトリを見つけて試してみた。
最終的に下記リポジトリを使用することにした。
※使用しなかったもの
下記でもいけた、おそらく中身はほぼ一緒なのでお好みになりそう
イメージのビルド+コンテナのスタート後に結構待たないと接続できないみたいだった。
待たずに接続できねぇ!ってやってたけど、それは良くなかったみたい。
コンテナの構築
valheim
のデータ用のディレクトリを作成する。
mkdir -p /home/admin/valheim/data
mkdir -p /home/admin/valheim/server
$ cd ~/valheim
$ vim compose.yml
compose.yml
を作成する。
services:
raspiheim:
image: arokan/raspiheim:latest
container_name: raspiheim
environment:
- SERVER_NAME=Raspiheim
- WORLD_NAME=Raspiworld
- SERVER_PASS=Raspipass
- PUBLIC=0
- UPDATE=false
- PAUSE=false
ports:
- "2456:2456/udp"
- "2457:2457/udp"
volumes:
- "/home/admin/valheim/data:/data"
- "/home/admin/valheim/server:/valheim"
restart: unless-stopped
変数名 | 説明 | 設定値 |
---|---|---|
SERVER_NAME | サーバ名 | Raspiheim |
WORLD_NAME | ワールド名 | Raspiworld |
SERVER_PASS | サーバパスワード | Raspipass |
PUBLIC | 公開するかどうか | 0 |
UPDATE | - | false |
PAUSE | - | false |
ビルド+コンテナ起動
$ docker compose up -d
docker compose logs -f
で確認
ビルドが終わったら起動するが、 すぐには接続できないみたい。
valheim_box64-valheim_box64-1 | Update state (0x61) downloading, progress: 82.65 (1185245207 / 1434074687)
valheim_box64-valheim_box64-1 | Update state (0x61) downloading, progress: 83.16 (1192585239 / 1434074687)
valheim_box64-valheim_box64-1 | Update state (0x61) downloading, progress: 83.62 (1199103255 / 1434074687)
valheim_box64-valheim_box64-1 | Update state (0x61) downloading, progress: 84.20 (1207531731 / 1434074687)
valheim_box64-valheim_box64-1 | Update state (0x61) downloading, progress: 84.71 (1214871763 / 1434074687)
valheim_box64-valheim_box64-1 | Update state (0x61) downloading, progress: 85.22 (1222161203 / 1434074687)
valheim_box64-valheim_box64-1 | Update state (0x61) downloading, progress: 86.65 (1242656707 / 1434074687)
こんな感じでアップデートが始まっていた。
とりあえず待ってみる。
valheim_box64-valheim_box64-1 | 03/26/2023 07:30:47: Failed to place all SwampHut3, placed 40 out of 50
valheim_box64-valheim_box64-1 | 03/26/2023 07:31:27: Failed to place all TarPit1, placed 75 out of 100
valheim_box64-valheim_box64-1 | 03/26/2023 07:31:33: Failed to place all TarPit2, placed 16 out of 100
valheim_box64-valheim_box64-1 | 03/26/2023 07:31:56: Failed to place all MountainCave02, placed 159 out of 160
valheim_box64-valheim_box64-1 | 03/26/2023 07:32:05: Done generating locations, duration:182804.222 ms
valheim_box64-valheim_box64-1 | The shader Hidden/Dof/DepthOfFieldHdr (UnityEngine.Shader) on effect Main Camera (UnityStandardAssets.ImageEffects.DepthOfField) is not supported on this platform!
valheim_box64-valheim_box64-1 | The image effect Main Camera (UnityStandardAssets.ImageEffects.DepthOfField) has been disabled as it's not supported on the current platform.
valheim_box64-valheim_box64-1 | The shader Hidden/SunShaftsComposite (UnityEngine.Shader) on effect Main Camera (UnityStandardAssets.ImageEffects.SunShafts) is not supported on this platform!
valheim_box64-valheim_box64-1 | The shader Hidden/SimpleClear (UnityEngine.Shader) on effect Main Camera (UnityStandardAssets.ImageEffects.SunShafts) is not supported on this platform!
valheim_box64-valheim_box64-1 | The image effect Main Camera (UnityStandardAssets.ImageEffects.SunShafts) has been disabled as it's not supported on the current platform.
valheim_box64-valheim_box64-1 | 03/26/2023 07:33:32: Got status changed msg k_ESteamNetworkingConnectionState_Connecting
valheim_box64-valheim_box64-1 | 03/26/2023 07:33:32: New connection
止まったので接続してみると…
いけた・・・!
参考
- Setting up a Valheim Server on the Raspberry Pi
https://pimylifeup.com/raspberry-pi-valheim-server/ - Valheim Server on Raspberry Pi
https://linustechtips.com/topic/1397550-valheim-server-on-raspberry-pi/ - box64
https://github.com/ptitSeb/box64/blob/main/docs/USAGE.md - pi4valheim
https://github.com/thorkseng/pi4valheim - Raspberry Pi 400/arm64 Linux/Box86/Box64/WineでWindowsアプリ起動
https://webzoit.net/hp/it/internet/homepage/env/hardware/single_board_computer/raspberry_pi/wine_i386_amd64_box86_box64_on_arm64_raspberry_pi_400.html - How to set up a Valheim dedicated server on the Raspberry Pi
https://singleboardbytes.com/2058/set-up-a-valheim-dedicated-server-on-the-raspberry-pi.htm
おわりに
本当は、ローカルでQEMUでエミュレートしようと思ったのだけど、(記事も書いた)
できなかったです・・・。
なので、手軽にAWSのARMインスタンスでやってみました。
RaspberryPiのビルドで試したのでこれでいけそうだ・・・!
教訓としては、 x86
の方とは違って、起動が結構かかるので待つ忍耐力が必要でしたね。
どこかに書いてあったけど忘れていた↑
追記 How to set up a Valheim dedicated server on the Raspberry Pi
の下記に書いてありました。
The startup process might take a few minutes since the game needs to generate the game world, locations, etc.