Storia Worker
手伝う側のマシンに Storia Worker を用意して、メインサーバーの地形を生成してもらう。
Storia Worker は、Storia サーバーを特別なモード(-Dstoria.worker=true)で起動したもので、ほかの Storia サーバーのために地形を計算するだけです。
プレイヤー用ポート・query・RCON は開かず、ワールドも変更しません。同じ地形を作るのに必要なワールドの設定を読むだけです。
必要なもの#
- Java 25
- CPU コアは多いほど良い(初期設定ではすべて使います:
offload.threads: -1) - メモリ:たいていのワールドならヒープ 2〜4 GB で十分です。
WORKER_MEMORYで指定します。 - ワーカーとメインサーバー(またはリレー)が TCP で通信できること。ポートは初期設定で 25590 ですが、好きな番号に変えられます(ポート を参照)
インストール#
-
ダウンロードページ から
storia-worker-26.2.zipを入手して展開します。text storia-worker-26.2/ storia.jar storia.yml start-worker.sh start-worker.bat README.md -
ワールドの設定をコピーします。 メインサーバーのワールドフォルダを、チャンクのフォルダ(
region・entities・poi)を 除いて、storia.jarの隣のworld/フォルダにコピーします。残るのは小さなファイルだけです:level.dat、datapacks/、 そして Minecraft 26.2 でシードやワールド生成の設定が入っているdata/フォルダです。bash rsync -a --exclude region --exclude entities --exclude poi \ main-server:/srv/storia/world/ world/Windows では、ワールドフォルダを丸ごとコピーしてから、
world/dimensions/*/*/の中のregion・entities・poiフォルダを削除してください。data フォルダも必要です
Minecraft 26.2 では
level.datだけでは足りません。シードはdimensions/minecraft/overworld/data/minecraft/world_gen_settings.datにあり、これがないとワーカーは起動できません。 -
EULA に同意します。 Minecraft EULA を読み、同意する場合は:
bash echo "eula=true" > eula.txt -
storia.ymlに、メインサーバーと同じ 合言葉を設定 します。yaml offload: mode: worker secret: "長くてランダムな合言葉" bind: 0.0.0.0 port: 25590 relay: "" threads: -1 compress: true -
起動します。
bash ./start-worker.sh # Linux / macOS WORKER_MEMORY=6G ./start-worker.sh # ヒープを 6 GB にする場合Windows では
start-worker.batを実行します。 -
メインサーバー の
offload.workersにワーカーを追加し(地形生成の分担 を参照)、再起動します。
メインサーバーが接続すると、どのディメンションを受け付けたかがワーカーのログに出ます。ワーカーのコンソールで /storia offload を実行すると状態を見られます。
待ち受けるか、自分から接続するか#
ワーカーの動き方は 2 通りあります。
| 設定 | 誰が接続するか | ポートを開ける場所 | |
|---|---|---|---|
| 待ち受け(初期設定) | relay: "" |
メインサーバーがワーカーに接続 | ワーカー |
| リレー | relay: "relay-host:25590" |
ワーカーがリレーに接続 | リレー |
ワーカーが NAT の内側にある、よく入れ替わる、複数のサーバーでワーカーを共有する、といった場合はリレーを使います。Storia Relay を参照してください。
ワーカーを同じ状態に保つ#
ワーカーは、メインサーバーと まったく同じ 地形を作る必要があります。次のことをしたら、
- シードやワールド生成の設定を変えた
- ワールド生成に関わるデータパックを追加・削除・更新した
- メインサーバーの Storia を更新した
ワールドの設定(手順 2)をもう一度コピーし、ワーカーの storia.jar も 同じバージョン にしてください。違っていると、ワーカーは該当する
ディメンションを断り(ログに terrain differs: check seed, datapacks and Storia build と出ます)、メインサーバーが自分で生成します。
何も壊れませんが、分担されなくなります。
サービスとして動かす(Linux)#
# /etc/systemd/system/storia-worker.service
[Unit]
Description=Storia Worker
After=network-online.target
[Service]
User=minecraft
WorkingDirectory=/srv/storia-worker
Environment=WORKER_MEMORY=4G
ExecStart=/srv/storia-worker/start-worker.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
sudo systemctl enable --now storia-worker
journalctl -u storia-worker -f
止める#
コンソールで stop と入力するか、サービスを止めます。処理中の依頼は返却され、そのチャンクはメインサーバーが自分で生成します。