Skip to content

Instantly share code, notes, and snippets.

@neguse
Last active March 9, 2021 13:40
Show Gist options
  • Save neguse/78bd7b49e52a0933aee39d7c69193ec3 to your computer and use it in GitHub Desktop.
Save neguse/78bd7b49e52a0933aee39d7c69193ec3 to your computer and use it in GitHub Desktop.
Valheim サーバを安く起動する

Valheim サーバを安く起動する

以下の手順で、1 人接続の小規模なサーバなら常時起動しても月$7 ぐらいで動かせそう。 …と思ったけどゲームプレイしてみると割と頻繁に重い状態になってだめそうだった。 サーバコストをケチるなら、低スペックのサーバで無理やり動かすのでなく、そこそこスペックのサーバをゲーム遊ぶときだけ起動するような方式のほうがよさそう。 以下の方法は参考までに、一応起動はして多少遊べるという程度であることを前提に読んでください。

EC2 でインスタンスを起動する

  • インスタンスタイプは t3a.nano
    • サーバ起動時に 1 コアしかないと処理が進まないため、2 コア以上のインスタンスが必要
    • そのままだとメモリが足りないが swapfile を使えば大丈夫
  • セットアップ中はクレジット無制限モード ON にして、終わったら OFF にする
    • 常時クレジット無制限にすると余計にコストかかることがあるので注意
  • OS は Ubuntu 20.04
  • セキュリティグループで 2456:2457/tcp, 2456:2457/udp を開けておく
  • ルートボリュームは 15GB (もろもろセットアップ済んで半分ぐらいの使用率。swapfile を小さくしたりして、もっとケチってもよい)

初期設定

  • swapfile を設定
  • steamcmd をインストール
  • Valheim Dedicated Server をインストール
  • サウンドの無効化
    • 2021/03/09 時点の Build ID: 6315977 のビルドだと、サーバでもサウンド処理が走っており CPU を無駄に消費している
    • 無効化するため、valheim_server_Data/globalgamemanagers ファイルの 0x1A30 を 01 に書き換える
    • https://docs.unity3d.com/ja/2018.4/Manual/class-AudioManager.html の、「Disable Unity Audio」にチェックを入れたときと同じ状態になる
    • steamcmd を用いたサーバのインストール手順を繰り返すとファイルは元の状態に戻る
    • 変更するファイルの場所はビルドごとに変わるような気がする
  • 自動起動設定
    • /etc/systemd/system/valheim.service ファイルを作成
      • CPUQuota の数値は EC2 インスタンスの Credit 量をみて調整する
    • sudo systemctl daemon-reload
    • sudo systemctl enable valheim
[Unit]
Description=Valheim
After=network-online.target
Wants=syslog.target network.target nss-lookup.target network-online.target
[Service]
Type=simple
User=steam
Group=steam
WorkingDirectory=/home/steam
ExecStart=/home/steam/valheim.sh
ExecStop=/bin/kill -s INT $MAINPID
Restart=always
CPUQuota=7%
[Install]
WantedBy=multi-user.target
#!/bin/sh
export SERVER_NAME=XXXX
export SERVER_PASS=XXXX
cd /home/steam/valheim
export LD_LIBRARY_PATH=./linux64:$LD_LIBRARY_PATH
export SteamAppId=892970
# Tip: Make a local copy of this script to avoid it being overwritten by steam.
# NOTE: Minimum password length is 5 characters & Password cant be in the server name.
# NOTE: You need to make sure the ports 2456-2458 is being forwarded to your server through your local router & firewall.
exec ./valheim_server.x86_64 -name "${SERVER_NAME}" -port 2456 -world "Dedicated" -password "${SERVER_PASS}" -savedir /home/steam/valheim_save -public 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment