【valheim】友人達用にvalheimのサーバー運用した【手順書】

アザラシです
valheimを友人に今年の2月にオススメされて一緒にやっていました。
その後、他の友人も含めやり始めみんなが好きなタイミングで出来れば良いなと思い
今回自宅サーバーで運用し始めたので、そちらのやり方についての記事です。

今回は自宅にサーバーがある、もしくはVPS等でサーバーをレンタルしている人向けで、
OSインストールやSSHの設定などは事前にやってある物として書いてある記事なのである程度基礎知識を要求します。
初めてLinuxサーバーを立てる人や、ローカルで建てる場合の話ではないのでご了承ください。

0.準備

参考記事 : 【Valheim】のLinuxサーバー(CentOS)を建てる。
     Linux(Ubuntu)でSteamで買ったValheimの専用サーバーを立てる

環境 : ESXi, RockyLinux
必要な物 : 固定IP もしくは DDNS

今回DDNSの設定については触れません。
myDNS.jp等で取得したDDNSをDiCE等で更新するようにすれば動的IPでも
サーバー接続がスムーズに出来ます。

1.サーバーの設定

今回自分がvalheimのサーバーを用意する上で、ESXiで新規VMを立ち上げました。
新規VMはRockyLinuxをインストール。
事前にインストールとユーザー作成、SSH接続を終わらした状態から話を始めます。

1.1 firewallのポートを空ける

valheimでは2456~2458のTCPとUDPポートを利用しているようです。
なのでfirewallの設定で上記のポート番号が通るように設定しておきます。

# firewalld-cmd --add-port=2456-2458/tcp --zone=public --permanent
  success
# firewalld-cmd --add-port=2456-2458/udp --zone=public --permanent
  success
# firewall-cmd --reload
  success

上記コマンドで、tcpとudpの2456-2458番を解放出来ます。
–permanent とつける事で永続的に解放が出来ます。
その後、ポートが開放されているかの確認をします。

# firewall-cmd --list-all

上記のように ports : 2456-2458/tcp と 2456-2458/udp が追加されている事を確認出来れば
OKです。

1.2 必要なライブラリやソフトをインストールする

SteamCMD等で利用するライブラリやインストール時に必要なソフトウェアをインストールします。

# dnf -y install curl wget bzip2 gzip unzip python screen gcc glibc.i686 libstdc++.i686 ld-linux.so.2 zlib.i686 libstdc++.so.6 vsftpd

RockyLinux でインストールした際、幾つかのソフトウェアが入らなかったり、すでに入っていたりするので
そこは個別にインストールするなりしてください。ちなみに screen は epel-release を入れないとインストール出来ません。

ちなみにvsftpdは任意です。今回自分はvsftpdでやりましたが、テラタームを利用していれば
テラタームで接続したときに、コンソール画面にファイルをドラッグ&ドロップすれば
ファイルの転送が行えます。

1.3 SteamCMDをダウンロード&インストール

SteamCMDをダウンロードするにあたり、保存するディレクトリを用意しておきます。
今回はホームディレクトリに steamcmd というディレクトリを用意して
そちらにダウンロードします。

$ cd ~
$ mkdir steamcmd
$ cd ./steamcmd
$ curl -sqL "http://media.steampowered.com/installer/steamcmd_linux.tar.gz" | tar zxvf -

上記のコマンドで steamcmd のダウンロードが完了します。
valheim用のインストールディレクトリを用意します。

今回はホームディレクトリ内に用意しようと思ったのですが、容量切るのを忘れていたので
/game にディレクトリを用意しインストールする事にしました。
(容量に余裕がある場合はhomeディレクトリの方が良いかも)

$ mkdir /game
$ mkdir /game/valheim

ディレクトリの作成が終わったら、インストールスクリプトを実行します。

$ pwd
/home/username/steamcmd
$ ./steamcmd.sh

実行後インストールが走り、ログがいろいろ出ます。
落ち着くと、コマンドが打てる状態になるのでそこまで待ちます。

(STEAM) > login anonymous                     # Steamにログイン
...
(STEAM) > force_install_dir /game/valheim     # インストール先の指定
(STEAM) > app_update 896660 validate          # valheimのインストール
(STEAM) > exit

1.4 一旦サーバーを起動する

参考サイトなどではこの後の手順でゲームデータを特定ディレクトリにコピーする
と書いてあるのですが、一度サーバーを起動しないとディレクトリが作成されないので
一度起動します。

$ cd /game/valheim/
$ ./start_server.sh

起動ログがめっちゃ出る。

ある程度すると落ちつくので

ctrl + c で終了させる

起動後、ユーザーのホームディレクトリに
~/.config/unity3d/IronGate/Valheim
が出来ている事を確認する。

1.5 サーバーデータを転送する

今回新たにワールドを作成する場合は必要ありません。
既存のワールドデータを使いたい場合はこちらの項目を見てください。

Valheimのゲームデータはここのディレクトリにあります。
このファイルをまるっと、サーバー上の ~/.config/unity3d/IronGate/Valheim の中に入れます。
ファイルの転送はftpにて行いました。

1.6 サーバー起動スクリプトを変更する

valheimの起動スクリプトには先ほど転送したワールドデータのどのファイルを利用するか?
パスワードはどうするか?等が記載されていますので、そちらを編集します。

$ cd /game/valheim
$ vim ./start_server.sh

以下中身

export templdpath=$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=./linux64:$LD_LIBRARY_PATH
export SteamAppId=892970


echo "Starting server PRESS CTRL-C to exit"

# 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.
./valheim_server.x86_64 -name "サーバー表示名" -port 2456 -world "利用するワールド名" -password "6文字以上のパスワード"

export LD_LIBRARY_PATH=$templdpath

サーバー表示名はvalheimでコミュニティ参加をするときに表示される物の用ですが、
今回自分の場合は直でIPを打ってもらうやり方なので、適当つけました。

利用するワールド名は、今回サーバーに転送したワールド名を記載します。
例えば azarashiworld.fwl のようなファイルを転送したなら、
ワールド名は azarashiworld と記載すれば問題ありません。

パスワードは6文字以上の任意の文字列ですので、必要があればつけてください。
パスワードを利用しない場合は -password ”” 自体を削除すれば通るかと思います。

1.7 起動してみよう

設定が終わったら、server_start.sh を起動します。

$ cd /game/valheim
$ ./start_server.sh

起動が出来たら、Windowsでvalheimを起動してサーバーにアクセスしてみます。

ゲームを起動したら、ゲーム参加のIP参加を押すとこのような画面になります。
固定IPの場合は、IP名を入力。DDNSの場合はドメイン名でいけます。
無事、サーバーに接続出来ていればパスワードの要求画面に遷移します(設定していれば)

2. 永続起動出来るようにしよう

先ほどの起動の仕方だと、テラタームを閉じてしまうとサーバーもストップしてしまいます。
なので、以下のコマンドで起動する事でバックグラウンドで起動出来ますが、
出来ればscreenコマンドの方が良いです。(nohupの場合は killしないとサーバーが落ちない

$ cd /game/valheim
$ nohup ./start_server.sh &

起動ログは同じディレクトリ内に nohup.out というファイルが出力されますので
エラーなどが出ていればそこから確認が出来ます。

ちなみにScreenコマンドの場合は

$ screen -S valheim  # スクリーン valheim を作成
$ ./start_server.sh

ctrl + a // スクリーンコマンドを受け付けさせる
ctrl + d // 画面から抜ける

3. 終わりに

簡単なサーバー知識ありで今回話を進めましたが、valheimサーバーの起動は出来ましたでしょうか?
分からない点があれば、質問などを書いてもらっても大丈夫です。
よいヴァイキングライフを。