BungeeCord,Velocityとは
複数のMinecraftの鯖を繋ぐことができるプロキシサーバー
dockerで起動した
構成
version: '3'
services:
bungeecord:
container_name: test_bungee
image: itzg/bungeecord
ports:
- "10000:25577"
tty: true
stdin_open: true
restart: always
volumes:
- ./server:/server
environment:
TYPE: "BUNGEECORD"
MEMORY: "512M"
paper:
container_name: test_server
image: itzg/minecraft-server
ports:
- "10001:25565"
tty: true
stdin_open: true
restart: always
volumes:
- ./data:/data
environment:
EULA: "TRUE"
TYPE: "PAPER"
MEMORY: "2G"
ONLINE_MODE: "FALSE"
settings:
bungeecord: true
ip_forward: true
servers:
lobby:
motd: '&1Just another BungeeCord - Forced Host'
address: 127.0.0.1:10001
restricted: false
結果
どうやらdockerで起動する場合、何か変える必要があるようだ
localhost/127.0.0.1では駄目
コンテナ外へ通信するとき?はlocalhostまたは127.0.0.1では駄目らしい
接続先のアドレスを変更する
コンテナに接続
$ docker exec -i test_server /bin/bash
コンテナに割り振られたipアドレスを確認
$ hostname -i
192.168.32.2
ホストに戻る
Ctrl+C
BungeeCordのconfig.ymlを修正
servers:
lobby:
motd: '&1Just another BungeeCord - Forced Host'
address: 192.168.32.2:10001
restricted: false
結果
ポートの設定が駄目っぽい
数時間後...
GithubのIssueなど色々な記事を見る中であることに気がつきました。
接続先がコンテナのポートだと...?
こうすれば動く
servers:
lobby:
motd: '&1Just another BungeeCord - Forced Host'
address: 192.168.32.2:25565
restricted: false
addressのポートをホストのポート(10001)ではなく、コンテナのポート(25565)にしました。
きた!!!!
結論
ポートフォワーディング
ports:
- "10001:25565"
docker-composeでいうこの部分です。ポートフォワーディングは、ホストipの10001に接続が来た時、コンテナipの25565に接続を流すという感じなので、直接コンテナのipアドレス(192.168.32.2)に直接接続する場合は、コンテナのポート(25565)を指定しなければならなかったのです。
おまけ
docker-composeを使っていれば、dockerのnetworkを勝手に設定してくれるので、今回でいうpaper:25565
で接続できます。paper
はdocker-composeのservicesの名前です。
コンテナを作り直したときにipアドレスが変わるそうですが、その対策にもなります。
ちなみに
今回はBungeeCordを起動しましたが、VelocityやWaterfallなどの他のプロキシ鯖でも同様です。
反省
完全に知識不足でした
精進します