はじめに
前回のつづきです。前回はdockerで特に何も編集せずに実行していました。今回はバージョン変更やModの読み込みまでやります。
Windows10の環境でdockerからMinecraft forge 1.7.10 を起動する記事が見つからなかったので、いろんな記事の一部を集めながら試行錯誤しました。結構大変でしたw
実行環境
- Windows10 Pro 1803 (Build 17134.950)
- docker for Windows Desktop 19.03.1, build 74b1e89
- Minecraft ランチャ― 2.1.5964
- Minecraft 1.7.10
- Forge 10.13.4.1614 + LiteLoader 1.7.10
その他、MOD等の導入方法は各自で調べてください。
お品書き
- docker-compose.yml の編集
- Minecraft環境のセットアップ
- Modの動作確認
1. docker-compose.yml の編集
前回ダウンロード(pull)したディレクトリ内での作業になります。 dockerを起動させるとき、docker-compose コマンドを用いて起動したほうが楽だったので、こちらのほうを編集します。デフォルトでは次のような設定になっています。
version: '3' # Other docker-compose examples in /examples services: minecraft: image: itzg/minecraft-server ports: - "25565:25565" volumes: - "mc:/data" environment: EULA: "TRUE" CONSOLE: "false" ENABLE_RCON: "true" RCON_PASSWORD: "testing" RCON_PORT: 28016 restart: always rcon: image: itzg/rcon ports: - "4326:4326" - "4327:4327" volumes: - "rcon:/opt/rcon-web-admin/db" volumes: mc: rcon:
このまま実行すると、最新バージョンがセットアップされるので対応していないMODが不具合を起こします。なので、バージョンを下げる必要があります。私はこのように変更しました。
version: '2' services: minecraft-server: container_name: Takunology_Industrial image: itzg/minecraft-server ports: - "25565:25565" tty: true stdin_open: true restart: always volumes: - ./Version1.7.10/data:/data/ - ./Version1.7.10/mods:/data/mods environment: EULA: "TRUE" VERSION: "1.7.10" TYPE: "FORGE" FORGEVERSION: "10.13.4.1614"
コンテナ名は私の名前と工業MODの組み合わせです。ここはお好きにどうぞ。imageはdockerの大元のディレクトリです。要は docker hub から pull するリポジトリ名です。ここからが大切で、volumesの部分がゲームディレクトリになります。私のファイル構成はこのようになっています。LiteLoaderが含まれていても、Forgeのバージョンのみで無事読み取るので大丈夫です。(結構苦戦しました。)
ゲームディレクトリはVersion1.7.10という名前にしました。ちなみにこの中にはdataとmodが入っています。ゲームディレクトリのコア部分はdataなので、このディレクトリを後に設定することになります。
さて、ディレクトリの作成などの準備ができたらコマンドを実行します。
docker-compose up -d
しかし、エラーが表示されました。
Creating network "minecraftserver_default" with the default driver Creating Takunology_Industrial ... error ERROR: for Takunology_Industrial Cannot start service minecraft-server: b'driver failed programming external connectivity on endpoint Takunology_Industrial (47b5544221eec761ed75797bc9a67bbcaaa8b127f045707059292c2e31c97a9d): Error starting userland proxy: listen tcp 0.0.0.0:25565: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.' ERROR: for minecraft-server Cannot start service minecraft-server: b'driver failed programming external connectivity on endpoint Takunology_Industrial (47b5544221eec761ed75797bc9a67bbcaaa8b127f045707059292c2e31c97a9d): Error starting userland proxy: listen tcp 0.0.0.0:25565: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.' ERROR: Encountered errors while bringing up the project.
こんな時は docker を再起動すれば解決すると、たくさんのサイトで書いてあったのでそうしてみましたが、ダメでした。仕方なくOSごと再起動してみました。
PS E:\Minecraft\docker\MinecraftServer> docker-compose up -d Creating network "minecraftserver_default" with the default driver Creating Takunology_Industrial ... done PS E:\Minecraft\docker\MinecraftServer> docker-compose ps The system cannot find the path specified. Name Command State Ports ------------------------------------------------------------------------------------ Takunology_Industrial /start Up (healthy) 0.0.0.0:25565->25565/tcp, 25575/tcp
成功です。ps オプションを付けると起動中のコンテナが表示されます。しばらく待つとゲームディレクトリにサーバ設定ファイル等のデータが生成されます。私はこのようになりました。
これでForge を含む Minecraft 1.7.10 のサーバを構築することができました。
2. Minecraft環境のセットアップ
昔に比べてだいぶUIがきれいになり、逆に混乱してしまいますね。バージョンごとの作成には "起動構成"のタブをクリックし、左上の"新規作成"をクリックします。起動構成はこのようにしました。
バージョンは合わせてください。ゲームディレクトリは先ほど、dockerで生成されたサーバファイル等のあるディレクトリを選択してください。今回の例では ~/Version1.7.10/data となります。
設定できたら起動してみましょう。
あ、ちなみにサーバログが見たいときは次のようなコマンドを投げるとリアルタイムで見ることができます。
docker-compose logs -f
起動後の画面です。しっかりとforgeが読み込まれています。
3. Modの動作確認
あとは自分の好きなMODを入れるだけです。MODはゲームディレクトリの中のmodsというディレクトリに入れます。つまりは ~/Version1.7.10/data/mods の中に入れるわけです。
MODを入れる前にサーバを一度停止します。
> docker-compose down Stopping Takunology_Industrial ... done Removing Takunology_Industrial ... done Removing network minecraftserver_default
MODを入れたらもう一度サーバを起動し、Minecraftも起動します。
良い感じです。46個のmodを読み込んでくれました。
ではサーバを追加してみます。サーバは前回と同様にローカルホストで設定します。
無事にサーバ接続されていますね。実際にログインしてみます。
夜ですね(笑) ちなみにログはこんな感じです。
journeyMAPを読み込んでいるあたり、MOD等は問題なく動作してそうです。アイテムも確認したいところですが、クリエイティブにするためのコマンドを実行する権限がないので、付与します。
権限を付与するためには ~/Version1.7.10/data に入っている ops.json ファイルの中を編集します。デフォルトではこのようになっています。
[]
これを次のように変更します。
[ { "uuid": "自-主-規-制-d6f510532f8b", "name": "プレイヤー名", "level": 4 } ]
と設定します。uuid は固有IDなので各自で調べるなどしてください。権限は "level" で変更できます。4が最大です。できたら保存してサーバとMinecraftを再度起動します。
一通り動かしてみた動画です。確認してみてください。MODとコマンドが扱えれば問題ないです。
おわりに
ここまで来るのに結構時間がかかりましたが、Win10 & Forge1.7.10 & docker という組み合わせでやっている人はなかなかいないのではと思います。サーバ自体Linux系で構築したほうがコストも管理もしやすいです。
次回は外部からコマンドを実行できるかやってみたいと思います。イメージとしては "くらでべ" のマイクラ自動化です。そこではクラウド上でやっていますが、私はローカルで挑戦してみようと思います。C#でやりたいのですが、RCONを導入すればできるとの記事が...
クラウドデベロッパーちゃんねる(くらでべ)
Microsoftの社員の皆様が技術系の講座を行っているチャンネルです。
参考までにどうぞ
ビルドしていないので、各自の環境で docker-compose.yml を書きかえて再度ビルドしてください。記事に書いたようなファイルが生成されます。