minecraftのチャットをdiscordと連携できるツール「Minecord」をdockerで運用しています
まずは元ツール紹介
ModなしでMinecraftサーバーとDiscordを連携するツールを作った
今の時代、minecraftもdockerで動かしているのでツールもdockerで動かしたいなーと思った次第
Spigot?DiscordSRV?知らない子ですね?
まずminecraftのdokcer-compose紹介
volumesはいい感じの場所へどうぞ
RCON_PASSWORDとRCON_PORTはminecraftを動かすだけなら無くても良いです
再起動で最新にしてくれるしバニラ鯖の運用だったらitzg/minecraft-serverで良いですね
docker-compose.yml
version: '3.8' services: minecraft: image: itzg/minecraft-server ports: - "25565:25565" volumes: - "./data:/data" environment: EULA: "TRUE" CONSOLE: "false" ENABLE_RCON: "true" RCON_PASSWORD: ${RCON_PASSWORD} RCON_PORT: 25575 MEMORY: "8G" restart: always
本題
別にnpmでインストールするだけでいいじゃんなのでそれを作った
あと環境変数でRCON_PASSWORDやdiscordのtokenを渡せるようにしただけ
Dockerfile
FROM node:12 RUN npm install -g minecord ENV enable="chat,login,whitelist,server" \ minecraftLog="/var/log/minecraft/latest.log" \ minecraftRconHost="minecraft" \ minecraftRconPort="25575" \ minecraftRconPassword="rconpass" \ discordBotToken="dtoken" \ discordChannel="12345678" CMD ["sh", "-c", "/usr/local/bin/minecord --enable \"$enable\" --minecraft-log $minecraftLog --minecraft-rcon-host $minecraftRconHost --minecraft-rcon-port $minecraftRconPort --minecraft-rcon-password $minecraftRconPassword --discord-bot-token $discordBotToken --discord-channel $discordChannel"]
docker buildしてイメージを作る
今回は astail/minecord とした
そしてminecraftのdocker-composeと合わせてこうなる
docker-compose.yml
version: '3.8' services: minecraft: image: itzg/minecraft-server ports: - "25565:25565" volumes: - "./data:/data" environment: EULA: "TRUE" CONSOLE: "false" ENABLE_RCON: "true" RCON_PASSWORD: ${RCON_PASSWORD} RCON_PORT: 25575 MEMORY: "8G" restart: always minecord: image: astail/minecord volumes: - "./data/logs:/var/log/minecraft" depends_on: - minecraft environment: enable: "chat" minecraftRconHost: minecraft minecraftRconPort: 25575 minecraftRconPassword: ${RCON_PASSWORD} discordBotToken: ${discordBotToken} discordChannel: ${discordChannel} restart: always
.env
RCON_PASSWORD="aaaaaaa" discordBotToken="ABCDEFGHIJK1234657dsaldjslakdjlsak" discordChannel="123456123345123345"
これでチャットがdiscordで打ったものがminecraftに
minecraftに打ったものがdiscordにいくようになる