こんにちは
三度の飯よりPCゲーム好き。
minecraftはどうせ溶岩で死ぬんだからダイヤピッケルだけ持っていけば十分だろと思ってる武田です。
やりたい事
今ホットなdockerを使ってminecraftサーバを作れるようにしよう!
前提条件
- Linuxサーバを想定
- sudoが使用可能
- minecraftサーバはModでも遊びたいのでforgeを導入する
動作テストしたOS
- CentOS-7.1
— https://github.com/holms/vagrant-centos7-box/releases/download/7.1.1503.001/CentOS-7.1.1503-x86_64-netboot.box - Ubuntu Trusty 14.04
— https://oss-binaries.phusionpassenger.com/vagrant/boxes/latest/ubuntu-14.04-amd64-vbox.box - Debian Jessie 8.0
— https://github.com/holms/vagrant-jessie-box/releases/download/Jessie-v0.1/Debian-jessie-amd64-netboot.box
サーバ構築
まずminecraftサーバにするための環境構築を進めていきます。
すでに導入済みや不要と思われる箇所があったら読み飛ばしてください。
yum/apt更新
[CentOS 7]
sudo yum update
[Ubuntu Trusty]
不要
[Debian]
# リポジトリを追加
sudo vi /etc/apt/sources.list
deb http://ftp.jp.debian.org/debian/ sid main
deb-src http://ftp.jp.debian.org/debian/ sid main
deb http://ppa.launchpad.net/webupd8team/java/ubuntu precise main
deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu precise main
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886
sudo apt-get update
古い環境だとDockerが動かないこと多いようです。update推奨
JDKインストール
[CentOS 7]
sudo yum install -y java-1.7.0-openjdk.x86_64
sudo yum install -y java-1.7.0-openjdk-devel.x86_64
[Ubuntu Trusty]
不要
[Debian]
apt-get install oracle-java7-installer
firewallの設定
firewallの調整は十分にご注意ください。
[CentOS7]
# ポートの追加
sudo firewall-cmd --zone=public --permanent --add-port=25565/tcp
[Ubuntu]
sudo ufw enable
sudo ufw allow ssh
sudo ufw allow 25565/tcp
[Debian]
sudo apt-get -y install ufw
sudo ufw enable
sudo ufw allow ssh
sudo ufw allow 25565/tcp
minecraftサーバ標準ポートの25565と22 TCPを許可
※ポートは環境によって読み替えてください。
※不正アクセスを避けるためsshなどはアクセス元IPの絞込などをお勧めします。
dockerインストール
[CentOS7]
curl -O -sSL https://get.docker.com/rpm/1.7.0/centos-7/RPMS/x86_64/docker-engine-1.7.0-1.el7.centos.x86_64.rpm
sudo yum localinstall --nogpgcheck docker-engine-1.7.0-1.el7.centos.x86_64.rpm
[Ubuntu]
wget -qO- https://get.docker.com/ | sh
[Debian]
sudo apt-get install docker.io
64bit用のものを導入
以下URLから環境にあわせてパッケージは選んでください。
https://docs.docker.com/installation/
一般ユーザにてdockerを動かすためグループを調整
[CentOS7]
sudo groupadd docker
sudo usermod -g docker vagrant
sudo service docker restart
[Ubuntu, Debian]
sudo usermod -aG docker vagrant
※ユーザ vagrant にてdockerを動かせるように調整。ユーザー名は適宜読み替えてください。
※ログインしなおしてください。
dockerの起動
# dockerの起動
sudo service docker start
Starting docker (via systemctl): [ OK ]
# dockerデーモンの自動起動設定
[CentOS7]
sudo systemctl enable docker
[Ubuntu, Debian]
不要
試しに hello-worldしてみる
[vagrant@localhost ~]$ sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from hello-world
a8219747be10: Pull complete
91c95931e552: Already exists
hello-world:latest: The image you are pulling has been verified. Important: image verification is a tech preview feature and should not be relied on to provide security.
Digest: sha256:aa03e5d0d5553b4c3473e89c8619cf79df368babd18681cf5daeb82aab55838d
Status: Downloaded newer image for hello-world:latest
Hello from Docker.
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(Assuming it was not already locally available.)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
For more examples and ideas, visit:
http://docs.docker.com/userguide/
minecraft
いよいよminecraftの入っていきます。
minecraftのインストール
dockerでminecraftサーバーの構築をした方がすでにいるようなのでありがたく使わせていただきましょう。
http://qiita.com/koki_cheese/items/873431fac1520e2a912f
# 任意のディレクトリ作成、移動
mkdir minecraft_forge
cd minecraft_forge
# Dockerfile作成
echo "FROM k2wanko/minecraft:forge-1.7.10" > Dockerfile
# ビルド
docker build -t k2wanko/minecraft .
※5分くらい待たされるかも。。。
# 初回起動
docker run --name minecraft -i -p 25565:25565 -e "EULA=true" k2wanko/minecraft
※ポートは環境によって読み替えてください
以下のようにminecraftのコンソールが表示されたら成功!
[09:27:38] [Server thread/INFO]: Preparing spawn area: 96%
[09:27:39] [Server thread/INFO]: Done (10.041s)! For help, type "help" or "?"
[09:27:39] [Server thread/INFO]: Unknown command. Try /help for a list of commands
動作確認
実際にminecraftのクライアントからアクセスしてみましょう。
※クライアントにもMinecraft Forgeを導入する必要あり。私はちょっとハマりました。。。
profileをforgeにしてplay
title -> マルチプレイ -> ダイレクト接続 -> サーバアドレスを今回のサーバを指定してアクセス
いかがでしょうか?
問題なければクライアントからログインできると思います!
隣のプログラマがmodを導入して食物、資源の生産を自動化、寝ていても生活が潤っていくという極楽浄土を築いたらしいので真似をするべくmod導入やdocker経由でminecraftサーバの操作、設定変更などをまとめていく予定です。
コメントを残す