Back to Blog
TechLife

Core Keeper専用サーバー構築ガイド:Dockerで自宅サーバー(Ubuntu)に建てる方法

Core Keeper専用サーバー構築ガイド:Dockerで自宅サーバー(Ubuntu)に建てる方法

Core Keeperのサーバーを自宅サーバー(Docker)で簡単に建てる方法

Core Keeper、面白いですよね。友達とマルチプレイをしたいけど、ホストがゲームを落とすと他の人も遊べなくなるのが難点。

そこで専用サーバー(Dedicated Server)を建てようと思ったのですが、ググってもAIに聞いてもなかなか正しい情報に辿り着けず、結構苦労しました。

結果として、自宅の Ubuntu ServerDocker を使うことで驚くほど簡単に構築できたので、その備忘録を残しておきます。

1. Dockerのインストール

まずはベースとなるDockerをインストールします。Ubuntu Serverであれば、以下のコマンドを実行するだけでOKです。

# Dockerのインストール
curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh && rm get-docker.sh

# 現在のユーザーをdockerグループに追加(sudoなしで実行できるようにする)
sudo gpasswd -a $USER docker

実行後、一度ログアウトして再ログインするか、newgrp docker を実行して設定を反映させてください。

2. サーバーファイルの準備

GitHubで公開されている便利なリポジトリを利用します。

# リポジトリをクローン
git clone https://github.com/escapingnetwork/core-keeper-dedicated.git

# サンプル設定をディレクトリごとコピー
mv core-keeper-dedicated/docker-compose-example corekeeper-server

# 不要になったリポジトリを削除
rm -rf core-keeper-dedicated

# 作業ディレクトリへ移動
cd corekeeper-server

3. 環境設定(core.env)の作成

環境変数を設定するためのファイルを作成します。

cp .env core.env

core.env を編集します。特に重要なのは DISCORD_WEBHOOK_URL です。これを設定しておくと、サーバー起動時に Game ID がDiscordに通知されるので非常に便利です。

以下に設定例を載せておきます(DiscordのURLは自分のものに置き換えてください)。

PUID=1000
PGID=1000
ARM64_DEVICE=generic
USE_DEPOT_DOWNLOADER=false
WORLD_INDEX=0
WORLD_NAME="Core Keeper Server"
WORLD_SEED=""
WORLD_MODE=0
GAME_ID=""
MAX_PLAYERS=2
SEASON=""
SERVER_IP=""
# Port and Password are only needed if using direct connect mode
#SERVER_PORT="27015"
#PASSWORD=""

# Discord連携の設定(おすすめ)
DISCORD_WEBHOOK_URL="https://discord.com/api/webhooks/..."

# プレイヤー参加通知
DISCORD_PLAYER_JOIN_ENABLED=true
DISCORD_PLAYER_JOIN_MESSAGE="${char_name} (${steamid}) has joined the server."
DISCORD_PLAYER_JOIN_TITLE="Player Joined"
DISCORD_PLAYER_JOIN_COLOR="47456"

# プレイヤー離脱通知
DISCORD_PLAYER_LEAVE_ENABLED=true
DISCORD_PLAYER_LEAVE_MESSAGE="${char_name} (${steamid}) has disconnected. Reason: ${reason}."
DISCORD_PLAYER_LEAVE_TITLE="Player Left"
DISCORD_PLAYER_LEAVE_COLOR="11477760"

# サーバー起動通知(ここにGameIDが表示される)
DISCORD_SERVER_START_ENABLED=true
DISCORD_SERVER_START_MESSAGE="**World:** ${world_name}
**GameID:** ${gameid}"
DISCORD_SERVER_START_TITLE="Server Started"
DISCORD_SERVER_START_COLOR="2013440"

# サーバー停止通知
DISCORD_SERVER_STOP_ENABLED=true
DISCORD_SERVER_STOP_MESSAGE=""
DISCORD_SERVER_STOP_TITLE="Server Stopped"
DISCORD_SERVER_STOP_COLOR="12779520"

# Mod設定
MODS_ENABLED=false
MODIO_API_KEY=""
MODIO_API_URL=""
MODS=""

4. ワールドデータの移行

普段プレイしているセーブデータをサーバーで使いたい場合は、以下の手順で移行できます。

  1. SteamでCore Keeperを起動し、メインメニューなどで Ctrl + Alt + B を押す。
  2. デスクトップに CoreKeeperSaves_*.zip というバックアップファイルが生成される。
  3. 生成されたzipファイルを解凍する。
  4. 解凍したフォルダの中身(worlds, maps などが含まれる階層)を、サーバー側の corekeeper-server/server-data フォルダにそのままコピーする。

scpコマンドでの転送例(Windows PowerShell)

解凍したフォルダがデスクトップにある場合、PowerShellで以下のように実行するのが簡単です。 (※ ubuntu はサーバーのユーザー名、192.168.1.100 はサーバーのIPアドレスに読み替えてください)

# サーバー側のディレクトリを準備
# 例: ssh ubuntu@192.168.1.100 ...
ssh ユーザー名@サーバーのIPアドレス "mkdir -p ~/corekeeper-server/server-data"

# 解凍した中身をフォルダごとすべてサーバーへ転送
# 例: scp -r $HOME\Desktop\CoreKeeperSaves_...\* ubuntu@192.168.1.100:~/corekeeper-server/server-data/
scp -r $HOME\Desktop\CoreKeeperSaves_...\* ユーザー名@サーバーのIPアドレス:~/corekeeper-server/server-data/

重要な設定:WORLD_INDEX

バックアップデータをそのままコピーした場合、どのワールドをサーバーで起動するかcore.envWORLD_INDEX で正しく指定する必要があります。

  • コピーした worlds フォルダ内にある 0.world を使いたい場合 → WORLD_INDEX=0
  • 1.world を使いたい場合 → WORLD_INDEX=1

普段遊んでいるワールドが複数ある場合は、この番号が一致していないと新しいワールドが生成されてしまうので注意してください。

5. docker-compose.ymlの修正

デフォルトの docker-compose.yml だとパスが絶対パスになっていることがあるので、カレントディレクトリを参照するように修正します。

# 修正前
# volumes:
#   - /host/path/to/server-files:/home/steam/core-keeper-dedicated
#   - /host/path/to/server-data:/home/steam/core-keeper-data

# 修正後
volumes:
  - ./server-files:/home/steam/core-keeper-dedicated
  - ./server-data:/home/steam/core-keeper-data

6. サーバー起動!

準備が整ったら、コンテナを立ち上げます。

docker compose up -d

しばらく待つとサーバーが起動します。

Game IDの確認方法

  • Discord連携を設定している場合: 指定したチャンネルにGame IDが飛んできます。
  • 設定していない場合: サーバー内の server-files/GameID.txt を確認してください。

7. ゲームへの参加

Core Keeperを起動し、「ゲームに参加」 から取得した Game ID を入力するだけです!

SteamのP2P通信を利用しているため、面倒な ポート開放などの設定は一切不要 でした。自宅サーバーのUbuntuでこれを動かすだけで、いつでも友達と地下探索が楽しめます。

ぜひ試してみてください!