👏

クラフトピア(Craftopia)のサーバーをOCI FreeTier枠で動かしてみた

2024/02/07に公開

Oracle Cloud Infrastructure(以下OCI)のFree Tier枠で使えるA1 Flexインスタンスでクラフトピアのサーバーを建ててみたので躓いたところを含め共有します!

はじめに

OCIのコンソールでA1 Flexインスタンスを4OCPU, Ubuntu 22.04で建て、OCI側の仮想クラウドネットワーク 設定で6587 UDPポートを開放しておきます.
この部分は他に記事が大量にあるので割愛します.

準備

sshキーのパス、インスタンスのipは適時読み替えてください

$ ssh -i {pathto/your/sshkey} ubuntu@{instance.ip.address}

パッケージのアップグレードも済ましておきます

$ sudo apt update ; sudo apt upgrade -y

Box86,64, SteamCMDのインストール

Qiitaに投稿されていた記事で、参考になるものがありますので紹介します.
https://qiita.com/warai_bukur0/items/ab27e26b8064ddcde1fb
この記事に沿ってBox86,64, SteamCMDをインストールします。(先人の方に感謝です)

Craftopiaサーバのインストール

先程紹介したアプリをすべてインストールし終わったら、サーバ本体をインストールしていきます.

Craftopiaサーバをインストールするディレクトリを作成

$ mkdir ~/craftopia

steamCMDのインストールしてあるディレクトリに移動

$ cd ~/steamcmd

steamCMDを実行、Craftopiaサーバーをインストール

$ ./steamcmd.sh
Steam> force_install_dir /home/ubuntu/craftopia

Steam> login anonymous

Connecting anonymously to Steam Public...OK
Waiting for client config...OK
Waiting for user info...OK

Steam> app_update 1670340

 Update state (0x3) reconfiguring, progress: 0.00 (0 / 0)
 Update state (0x3) reconfiguring, progress: 0.00 (0 / 0)
 Update state (0x61) downloading, progress: 0.42 (38213424 / 9080315385)
 ...
 
Steam> quit

一旦Craftopiaサーバーを立ち上げてみる

$ cd ~/craftopia
$ box64 Craftopia.x86_64
WARNING: Shader Unsupported: 'Shader Graphs/StylizedSmoke01Lit' - All subshaders removed
WARNING: Shader Did you use #pragma only_renderers and omit this platform?
WARNING: Shader If subshaders removal was intentional, you may have forgotten turning Fallback off?

このようなログが出力されたらstopと入力してサーバーを落とします。
サーバ自体の起動は出来ているのですが、現状のままだと,SQLiteのライブラリが読み込めずワールドデータが保存されないという致命的な不具合があるので修正していきます。

SQLiteのビルド、配置

SQLiteの最新版をx86_64のLinuxマシン(Docker, 仮想環境含む)でビルドします。
ビルドし終わったらビルドしたフォルダの中にある

libsqlite3.a
libsqlite3.so.0.8.6
sqlite3.o

をCraftopiaサーバのホームディレクトリにscp等で移動します
libディレクトリにまとめてCraftopiaのサーバディレクトリに移動

$ mkdir lib
$ cp libsqlite3.a lib/
$ cp libsqlite3.so.0.8.6 lib/
$ cp sqlite3.o lib/
$ mv lib/ craftopia/

ライブラリのシンボリックリンクを貼る

$ cd ~/craftopia/lib
$ ln -s libsqlite3.so.0.8.6 libsqlite3.so.0

Craftopiaサーバの設定,起動

この作業をすることによってSQLiteのエラーが修正され正常にCraftopiaサーバが動作するようになるので起動する前に設定ファイルを変更します.

$ nano ~/craftopia/ServerSettings.ini

[GameWorld]
name=NoName #ワールド名を好きなものに変更

[Host]
maxPlayerNumber=8 #最大プレイ人数を変更
usePassword=1 #パスワードを設定するため1に変更
serverPassword=00000000 #パスワードを数字8ケタで設定

設定が終わったら起動します

$ cd ~/craftopia
$ box64 Craftopia.x86_64

頃合いを見てサーバを落とし、
~/craftopia/DedicatedServerSave/に

Craftopia.db
Settings.db

が存在していら起動成功です!

まとめ

少々複雑な手順を踏む必要はありますがOCI Free Tier Armインスタンスでx86_64アーキテクチャのCraftpiaサーバを実行することが出来ました。

余談なのですが、このSQLiteをビルドしてライブラリを配置して起動するという手順を発見するのには結構時間がかかりました。エラーメッセージを読んで調べるのは本当に大切です...

参考

岩田組

Discussion