Minecraftサーバを作る

#はじめに
本稿ではMinecraftサーバを作って遊べる状態に持って行く手法を書く。またの名を筆者のメモという。一応、何もわからない人が盲目的に作業しても大丈夫な書き方を心がけたつもりである。また、筆者のノリでところどころ散文的になっているが、直すつもりはない。
誤謬などあれば、ご連絡くださいませ。参考になさる場合、包括的に免責させていただきますとともに、バックアップの作成をなさいますこと、時間と精神に余裕をお持ちになること、などをお勧めいたします。
#前提
まず、筆者の手元の環境を述べる。

* macOS Sierra 10.12.6
* MacbookPro mid-2012

上記のようなパソコンを筆者は利用した。とはいえ、これに該当しなくても、ほとんどの部分で問題はないと思われる。

次に、サーバの環境を述べる。

* __CentOS 7__.3.1611 x86_64
* Memory 1GB
* SSD 50GB

上記に限られるわけではない。筆者の環境を述べたてたのみである。ただし、CentOS 7は前提となる。Memoryについては小さく感ぜられるかもしれないが、ログイン数が3人までの運用では特段問題を感じなかった。
__実は、この記事を書き始めてしばらく放置している間に、便利そうなのができていた。__
https://www.conoha.jp/function/minecraft/
こんなに簡単なこともない。
まあ、当記事は勉強も兼ねているので、まあ。うん。
それを言い出すと、Realmを使え、という話が出てきてしまう気もするので、色々気にしない方向で。

#サーバ作成
まず、サーバを作る。ご自宅にサーバのためのパソコンを設置しても構わないと思うが、普通は借りるのではないだろうか。
##サーバを借りる
[ConoHa](https://www.conoha.jp/conoha/"ConoHa")を利用した。なぜって可愛いから。当然お金がかかる。自分の財布などに相談し、ここから先に進むかどうか決めるべきであろう。

サーバー追加からサーバを追加できる。その先の設定画面では次のように入力すれば良い。パスワードとネームタグについては自分で好きなものを捻り出してほしい。

1. プラン
タイプ: VPS
リージョン: Tokyo
メモリ: 1GB

2. イメージ
イメージタイプ: OS
OS: CentOS
バージョン: 7.3
rootパスワード: 9-70字でアルファベットと数値記号を含む（忘れないもので、かつ、単純でないもの）

3. オプション
ここの項目については、筆者が一部忘却してしまった。SSDに関する項目があれば、上記の通り、SSDは50GBあれば十分であるので、それを選択する。
接続許可ポート IPv4: 全て許可
接続許可ポート IPv6: 全て許可
SSH Key: 使用しない
ネームタグ: 好きな名前（いじらなくても良い）

以上のようである。SSH Keyは使うから、ここで入れておいてもいい。いつ入れたって、結局は同じことである。今回はとりあえず、使用しないを指定した前提で話を進める。
##サーバの設定をする
やることは次のようである。
1. 一般ユーザの作成
2. rootへのsshログインを禁止する
3. sshのポート変更
4. ファイアウォールの設定変更
5. 公開鍵認証によるsshログインに変更する

ひとまず、やることの多さに絶望していただいたところで、上記の操作はいわゆる「黒い画面」を用いる必要がある。上記のリストをこなす前に次の操作をする。
ConoHaにログインし、サーバリストから、ネームタグをクリック。
起動、再起動……と続くリストから、__コンソール__をクリック。
黒い画面が表示されると思うので、上の方からコンソールをクリック。
シリアルを選択。
![スクリーンショット 2017-07-30 19.20.32.png](https://qiita-image-store.s3.amazonaws.com/0/193287/2e3ed7ad-307e-06b9-ba84-88b29e4b5a8f.png)
こんな雰囲気の画面が表示されると思われる。
この黒い画面のどこでもいいが、例えば、蝶々の上をクリック。
Enterキーを押下。
すると、何たらかんたらlogin: と表示される。
rootと入力、Enter。
rootパスワードを入力、Enter。上で決めたパスワードである。また、ここでパスワードを打ち込んでいる時、一見入力されていないように見えるが、正常に入力されている。後ろから覗き込まれた時に、パスワードの文字数バレたら嫌でしょ？

ここまでで、
__[root@なんか色々 ~]#__
が表示されていたら、とりあえず大丈夫。違ったら、ここまでの内容を確認。違っていても平気そうなら、そのまま進めばいいと思う。

じゃあ、リストをこなしていきましょう。念のため注意しておくが、rootの文字が画面にあるうちは、下手なことはすべきでない（つまり、悪友に煽られたとしても、「rm -rf /」とかそういう入力はするべきではない）。ただ、一方で、この始めの方の段階であれば、下手なことをしてもまた始めっからやり直せばいいだけ、という場合が多い。

ここで、リストに入る前に、OSをアップデートしても良い。次のようである。

```bash:黒い画面
yum -y update
yum -y upgrade
```

上を入力する時は、行ごとにEnterを押下すべきであろう。これ以降も基本的に同じである。なお、上はどちらを入力しても良い、と言う意図である。ことyumにおいてはupdateとupgradeは特に設定しない限り全く同じ意味である。
yumがわからなくて、気になるなら、調べるべきである。Googleに「yum CentOS」とかそんな感じに聞けば良い。以降も同様である。

###一般ユーザ作成
一般ユーザの名前をNemoとする。Nemoである必要性はない。hogeだろうがHadrianusだろうが構わない。本稿では、Nemoを作成したとして書いていく。

```bash:黒い画面
useradd Nemo -G wheel
```
これでNemoというユーザを追加して、そのユーザに対してsudoができる権限を付与する（ことがしやすいようにする）。

```bash:黒い画面
passwd Nemo
```
これによりパスワードを設定する。2回ほど同じ入力を求められる（設定と確認）はずである。可能な限り英数字記号全てを用いた長いパスワードが望ましいと思われる。__また、当然、rootとか、ConoHaとかと同じパスワードはとても望ましくない。__

これ以降もそうだが、おかしいと感じたとき、英語がわからないならGoogle翻訳にでもかければいいので頑張って読んでほしい。それでわからなかったら、エラーっぽい部分を全部Googleに入力して検索すると、解決策っぽいものが（大概は）ポロポロ出てくる。英語で書いてあって、それがわからないなら、Google翻訳を併用しつつ読めばいいと思う。電子辞書でも紙の辞書でもいい。好きにしたまえ。


<details><summary>次の項目に進む前にこの作業を行っても良い。</summary>
vi /etc/login.defs
を入力。vimで、
SU_WHEEL_ONLY yes
を追記。保存して、bashで、
vi /etc/pam.d/su
を入力。vimで、
\#auth        required        pam_wheel.so use_uid
のコメントアウトを解除（#を消す）。
これらを行うことで、wheelに登録されているアカウント以外からrootに這い上がれなくなる。vimの利用については後述。
</details>

ここまでの作業によって、あなたのサーバにはNemoという名前のアカウントが作成された。
###rootへのsshログイン禁止

```bash:黒い画面
cd /etc/ssh/
cp -p sshd_config sshd_config_original
vi sshd_config
```

ここまで入力すると、黒い画面は、vimと呼ばれるものによってテキストが編集できる状態になっているはずである。カーソルの移動は基本的にhjklで行われ、それぞれ、←↓↑→に対応する。他にもっと効率の良い方法もあるし、環境によっては方向キーが使えることもあるような気がする。細かいことは「vim 入門」とかで調べればよい。筆者も詳しくない。
<details><summary>cd, cp, viとは</summary>cdはchange directryのこと。現在位置をcdの後ろに続く場所に変更する。cpはcopy。-pはオプションで、正直なところ、今回に関してはつけなくても支障はないものと思われる。その後ろに続くファイルをさらにその次に続くファイルとしてコピーする。viはvimを起動する。詳しいことは(ry</details>
ひとまず、次のようにする。

```vim:vim
/PermitRootLogin
```

と入力。すると、
\#PermitRootLogin yes
と書かれた行に飛ぶはずである。この行の先頭にある#を削除し、yesをnoに変更する。
まず、カーソルを#の上に合わせ、xを一度だけ押す。
次にカーソルをyesのyに合わせ、cwnoと押す。cwのところがchange wordでnoが入力したい文句である。
そして、ESCキーを押下する。このキーはキーボードの左上にある場合が多い。
最後に、:wqと入力する。保存して終了、程度の意味である。気になるなら、:wを打ってから:qをしてみても良いかもしれない。[^1]
画面には再び、
__[root@なんか色々 ~]#__
のようなものが表示されているはずである。

エラーが出ているなら適宜。
もし、編集において、致命的なミスをしたように感じたなら、ESCを2, 3回とか押して（基本1回で構わないはずだが、別に何回押してもパソコンが爆発したりはしない）、:q!と入力すれば、変更を保存することなくvimの画面から抜け出すことができるはずである。もっとも、今回はバックアップを取ってあるので、もし、変に編集し保存しても、気づけば致命的にならないかもしれない。

__これ以降、リストを最後までこなし、そのあとに指定する手法でログインを完了するまでは、あなたが今作業している画面をできれば閉じてはならない。__
閉じたからといって、死ぬわけではないので、パニックになる必要はないが、何らかのミスを犯していた場合に、「振り出しに戻る」ことを避けたいのなら、閉じるべきではない、というのが基本的な方針になるとおもわれる。ただし、ConoHaで作業しているなら、ConoHaのコンソールからならどうも割とどうにかなるようなので、そんなに気にしなくていいようではある。

ここまでの作業によって、あなたのサーバにはsshによって、rootという何でもできるアカウントに、直接ログインすることができなくなった。

####sudoersの編集
ここまでの作業を達成したことによって、将来的にあなたがサーバにsshで入るとき、そのアカウントはNemoに限られる。そのため、あなたはサーバが強い権限を要求するような変更を行うときには、Nemoというアカウントにsshで入った上で、次のようにしなければならなくなっている。

```bash:黒い画面
su - 
```

これにより、Nemoからrootにログインして、作業する形になる。このように、いちいちログインして扱っても良いのだが、面倒極まりないし、危ないので、sudoという手段を用いる。sudoを用いれば、ある特定のコマンドを実行するときだけ強い権限を使うことができる。
以下で、そのための設定を行う。
これには、`/etc/sudoers`というファイルをいじるのだが、例え、頭の上に隕石が降ってきたとしても、__絶対に__直接いじってはいけない（いじれないが）。
次のようにする。

```bash:黒い画面
visudo
```

下の赤の部分（-で始まっている行）を探し、緑のよう（+で始まっている行）に書き換える。ただし、先頭には-も+もスペースも不要なので注意。以降、この書き方をした時は全て同様。

```diff:visudo
## Allows people in group wheel to run all commands
- # %wheel ALL=(ALL) ALL
+ %wheel ALL=(ALL) ALL
```

保存して終了（(ESC), :wq）。



###ファイアウォール設定変更
続いて、外との通信を管理する系統をいじる。まず、

```bash:黒い画面
firewall-cmd --list-all
```

を打ち込む。これをすると、例えば、

```bash:
public (default, active)
  interfaces: eth0
  sources:
  services: dhcpv6-client ssh
  ports:
  masquerade: no
  forward-ports:
  icmp-blocks:
  rich rules:
```

のような文字列が表示される。「CentOS7でSSHのポート番号を変更する」よりそのまま引用した。このポートというのは、サーバという家に開ける窓であり扉だ。空いている場所を知っていなければ出入りできない。
一般に、ポートを開けると、上記のportsのところに空いているポート番号が表示される。
今回は、そこではなく、servicesのところにsshがあることに注目してほしい。これをこれから変更していく。
####sshポート番号変更
まず、

```bash:黒い画面
vi /etc/ssh/sshd_config
```

とする。そして、

```diff:vim
- Port 22
+ Port 2222
```

のようにする。仮にこのファイルにすでにPort 22などが存在する場合は、上記のようにそれを削除（その行にカーソルを合わせてdd）あるいはコメントアウト（先頭に#を追加）する。
2222はよく説明に使われるが、本質的ではなく、一般に使われるポート番号以外であれば、それで構わない。[Wikipediaのリスト](https://ja.wikipedia.org/wiki/TCP%E3%82%84UDP%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E3%83%9D%E3%83%BC%E3%83%88%E7%95%AA%E5%8F%B7%E3%81%AE%E4%B8%80%E8%A6%A7"WikipediaList")などを参考に（公式で）使われていなさそうなものを選択すれば良い。ただし、Minecraftのサーバを作る上では、__少なくとも25565は避けるべき__である。使うから。

上記の通りファイルを変更。保存し、vimから抜ける（:wq）。
そして、

```bash:黒い画面
systemctl restart sshd
```

と入力し、sshdをrestartさせて変更した設定を適用する。

```bash:黒い画面
cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/ssh-neo.xml
```

設定ファイルをコピーする。コピー先のファイルの名前は任意である。ただし、自分にわかるように。また、場所は任意ではない。

```bash:黒い画面
vi /etc/firewalld/services/ssh-neo.xml
```

として、

```diff:vim
- <port protocol="tcp" port="22"/>
+ <port protocol="tcp" port="2222"/>
```

続いて、

```bash:黒い画面
firewall-cmd --permanent --add-service=ssh-neo
firewall-cmd --permanent --remove-service=ssh
firewall-cmd --reload
```

とする。

ここまでの作業によって、あなたは悪意ある人間・ボットに狙われやすい玄関口である22番ポートを閉じ、別の玄関口を開くことができた。

```bash:黒い画面
firewall-cmd --list-all
```

を実行し、結果を見ると、先ほどとは異なり、servicesのところにssh-neoがあり、sshがないはずである。

###公開鍵sshログイン設定
ここまでで、あなたは一旦あなたのブラウザ上に開いている「黒い画面」に別れを告げることになる。__ただし、その画面を閉じないことを推奨する。__

Macの場合は、ターミナルを起動する。
Windowsの場合は、TeraTerm[^2]などがよく推奨される。が、Windows 10なら、せっかくなので、Bash on Ubuntu on Windowsを使えば良いと思う。便利。[^3]

TeraTermについては筆者は知らないので、よろしくやってほしい。Nemoというアカウントに対するアクセスが可能になっているはずである。頑張っていただきたい。
Bash on Ubuntu on Windowsの場合はまあ、だいたいおんなじ感じでいけるはずである。初期設定などは（必要に応じて）やはり頑張っていただきたい。

さて、MacのターミナルにせよBash on Ubuntu on Windowsにせよ、実は「黒い画面」と同じものとやりとりすることになる。それを、bash[^4]という。MacとWin10でだいたい同じ感じで行けるのは、双方とも、とどのつまりbashだからである。

これ以降、あなたが今、あなたのパソコンにいるのか、サーバにいるのか、そして、それぞれのなかのどのディレクトリにいるのか、意識されたい。この区別は、一応、bashLをあなたのパソコン、bashSをサーバとして、今まで「黒い画面」と書いてきたところに記載しておく。
bashLからsshコマンドを打ち込んだ後に見えるのはbashSという理解でも（誤解の余地はあるが）構わない。
ちなみに、もちろん、今までの「黒い画面」はどっちらかっていうならbashSである。

さて、あなたは、あなたのパソコンでbashを起動したはずだ。sshによってサーバにアクセスするために、IPアドレスを調べる。サーバの住所といったところである。
ConoHaのコンソールを開いた時の画面を見てほしい。そこの、Network Informationの中にIP Addressという項目がある。その中身は、3つのピリオドに区切られた数列のはずである。Nemoは当然上記で作ったアカウントの名前である。

```bash:bashL
ssh Nemo@[IPアドレス] -p [ポート番号]
```

IPアドレスが仮に、999.99.999.99（絶対にない）で、あなたが、サーバに開けたsshのポートが2222だったとすると、上記は、次のようになる。

```bash:bashL
ssh Nemo@999.99.999.99 -p 2222
```

これ以降もこのような書き方をする。

これを実行すると、パスワードが要求されるので、上記で決めたNemoのパスワードを入力してほしい。すると例えば、

```bash:bashS
[Nemo]@[IPアドレス] ~$
```

のような表示が出てくるはずである。
場合によっては、これが出てくる前に、

```
The authenticity of host '[IPアドレス] ([IPアドレス])' can't be established.
ECDSA key fingerprint is SHA256:[文字列].
Are you sure you want to continue connecting (yes/no)?
```

のように聞かれる可能性がある。が、これは、一度も接続したことがないサーバに接続する時の確認のためのものなので、ここはyesと入れてEnter。これ以降にも同じ表示を見かけたら、あなたはひょっとすると面倒ごとに巻き込まれているかもしれない。

できたならば、ひとまず、おめでとう。あなたはここまででパスワード認証によるssh接続に成功した。できてないならば、各項目点検。このときには、開きっぱなしになっているはずのConoHaのコンソールを利用する。

```bash:bashS
exit
```

とすると、ssh接続から抜けて、あなたのパソコンのbashに戻ってくる。
その状態にした後（または、ssh接続しているターミナルとローカルを表示しているターミナルを用意する。こちらの方が楽）、パスワード認証を公開鍵認証に切り替える作業を行う。

```bash:bashL
ssh-keygen -t rsa -b 4096
```

すると、

```bash
Enter file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]
```

となり、Enterを押すと、[公開鍵認証](https://ja.wikipedia.org/wiki/%E5%85%AC%E9%96%8B%E9%8D%B5%E6%9A%97%E5%8F%B7"PubWikipedia")を利用する際のパスワードが要求される。次のようである。

```bash
Enter passphrase (empty for no passphrase): [Type a passphrase]
# Enter same passphrase again: [Type passphrase again]
```

適宜パスワードを入力せよ。これまでに入力した全てのパスワードと異なるのが望ましい。[^5]
なんか色々出てくると思うが、まあ、多分なんとかなっているはず。

```bash:bashL
scp -P [ポート番号] ~/.ssh/id_rsa.pub Nemo@[IPアドレス]:~/.ssh/authorized_keys
```

間違ってもid_rsaを送りつけてはならない。それは、秘密鍵である。パスワードなど求められたらよしなに。
また、ここでは、送り先にauthorized_keysが存在していないことを前提としている（つまり、もし心配なら、事前にbashSで`ls ~/.ssh`みたいなことをしても良いのではないか）。多分まだないはずだが、あるようなら`scp id_rsa.pub ~/.ssh/`的な感じにしてから、`cat id_rsa.pub >> authorized_keys`し、`rm id_rsa.pub`的なことをすれば良い。他にも数多方法がある。この段落のコードはコピーペーストで動く形式になっていないので、適当に調べてほしい。
そして、パーミッション変更のため、次を実行する。実行する場所に注意。

```bash:bashL
chmod 700 ~/.ssh
```

```bash:bashS
chmod 600 ~/.ssh/authorized_keys
```

しかるのちに、

```bash:bashL
ssh Nemo@999.99.999.99 -p 2222
```

と実行すると、今度は、公開鍵を作る際に設定したパスワードが要求されるはずである。入力し、接続できることを確認せよ。接続している状態では、あなたはbashSを見ている。

確認ができたなら、そのまま、sshのパスワード認証を禁止する。

```bash:bashS
sudo vi /etc/ssh/sshd_config
```

仮にここでsudoを付け忘れると、変更を加えた後保存できない。その場合、:q!として`sudo !!`などとすれば良い。!!はbashで直前のコマンド全体を表す。以降もsudoを忘れて怒られたらそんな感じでうまいことやれば良い。

```diff:vim
+ PasswordAuthentication no
+ ChallengeResponseAuthentication no
```

上記、双方とも競合する項目があれば、その項目は削除するかコメントアウトすること。通例ChallengeResponseAuthenticationは標準でnoとなっているらしい。上記編集ののち、保存し、次のようにsshを再起動する。

```bash:bashS
sudo systemctl restart sshd
```

ここで、念のため、__sshを再起動したターミナルを閉じずに__さらに別のターミナルを開いてssh接続ができることを確認しても良い。あまり意味はない（上でうまくいっているならうまくいくはず）。

ここまでの作業で、あなたは公開鍵暗号方式によるssh通信でのNemoへのログインが行えるようになった。全ての画面を閉じて（`exit`）、一休みしても問題ない。

#環境の整備
この項目は、次からなる。
1. Javaのインストールを行う
2. Screenのインストールを行う
3. Minecraft用のポート開放
4. Minecraft実行用のアカウント作成

##Javaのインストール
Java（厳密にはJDK）の導入には幾らかの方法があるし、そもそもJavaにはなんか知らんがOpenとOracleの2つの系列がある。例えば、筆者は次のように行った。OracleJavaのインストールである。

```bash:bashS
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u112-b15/jdk-8u112-linux-x64.rpm"
sudo rpm -ivh jdk-8u112-linux-x64.rpm
```

`wget`を使ってダウンロードし、`rpm`を使ってファイルを展開している。気をつけてほしいのはwgetの対象としているURLは変わる、ということだ。8u112というのが途中で見えているが、現状の最新版は8u144であり、今後も変化する。これは、そこだけ変えれば良い、というものでもないため、適宜調べることが必要と思われる。「java CentOS インストール」とかなんとかかんとか。あとは、[Javaのダウンロードページ](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html"javaDown")とかで、右クリックからリンクのURLをコピーするなどしてやっても良い。
ここで、`wget`がないですよ、と怒られるなら、上記を実行するよりも先に`sudo yum -y install wget`として`wget`をインストールすれば良い。
Oracleの場合でも、rpmを用いない次の方法が別にあり、こちらの方法の方が良いようにも思われる。

```bash:bashS
sudo yum localinstall jdk-8u112-linux-x64.rpm 
```

この方法の場合、もし共存するものがあっても、`sudo alternatives --config java`として切り替えができるよう。この切り替えにも他に環境変数を弄る方法があるようだが、割愛。
ファイルの名前やヴァージョンは適宜変更のこと。だって、wgetで落としてきたファイル名と違うファイル名を指定して、インストールできるわけないでしょ？

OracleでなくOpenがいいなら、wgetなどせず、次の方法が使えるはずだ。

```bash:bashS
sudo yum -y install java
```

まあ、Oracleでいいのでは、と思う。いずれにせよ、上記の作業が完了したのち、次を行う。

```bash:bashS
java -version
```

これでインストールしたJavaのバージョンが出てくれば大丈夫。
ここまでの作業で、あなたはサーバにJavaをインストールした。

##Screenインストール
次にscreenというのをインストールする。screenとは、
>ログインサーバ上に「死なないshell」のようなもの（実際にはscreenコマンドはターミナルエミュレーションソフト）を作り出し、このshellをサーバ上で動かし続けることでいったんログアウトした後で改めてscreenに再接続することができます。
>MADE IN NOTO, 「screenコマンドでリモートマシン操作」, http://www.i-sys.biz/Support/Linux/screen.html より

とかなんとか。兎にも角にもこれを使うのでインストールする。

```bash:bashS
sudo yum -y install screen
```

以上。ここまでの作業で、screenが使えるようになった。

##ポートの開放
次にポートの開放を行う。Minecraftは当然通信を行うので、そのためのポートが開いている必要がある。
Minecraftが通常利用するポートは25565であるので、このポートを開ければ良い。

```bash:bashS
sudo firewall-cmd --zone=public --add-port=25565/tcp --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
```
1行目でポート開放、2行目で設定を読み込み、3行目で確認をする。portsのところに25565が出てきているはずである。出ていなかったらどこか打ち間違えたりしていないか確認。

もし仮に、1つのサーバで2つ以上のMinecraftサーバを立ち上げたい（例えばバニラ（modの入っていないもの）とForgeなどを入れてmodを入れるものの2つを立ち上げたい）ような場合には、それぞれのサーバでポートが異なっている必要がある。このような場合には、他に適当なポートを開ける必要がある。選択の基準はsshの時と同様。手順は上記と同様。
（私はやらなかったが特定のソフトだけ受け付ける、みたいなこともできた気がする。が、筆者はどこをどう調べれば、そういうことができるかどうかがわかるかということを加齢によるボケで忘れてしまった）
<details><summary>SELinux設定無効化</summary>無効化しなくてもMinecraftの動作には影響がないようだが、無効化しても良い。次のようである。</details>

##Minecraft用アカウントの追加
管理者権限に移行できるアカウントを用いてMinecraftサーバを運用するのはよろしいとは言い難いため、管理者権限を持たないMinecraft用のアカウントを作る。仮に名前をMinerとする。

```bash:bashS
sudo useradd Miner
sudo passwd Miner
```

権限を与えないこと以外はNemoと同じ。聞き飽きたと思うが、パスワードは全てと異なり十分複雑であること。

ここまでの作業で、あなたはMinecraftの通信に用いるポートを解放し、その通信を待ち受ける高い権限を持たないユーザを作成した。
Minecraftインストール準備完了である。

#Minecraftダウンロードから起動まで
1. ディレクトリの作成
2. 所有者の変更
3. ダウンロード
4. サーバの起動・規約への同意
5. screen上での起動
6. 接続を確認

## 1, 2まで。

```bash:bashS
mkdir -p /usr/local/games/minecraft
chown Miner:Miner /usr/local/games/minecraft
su - Miner
cd /usr/local/games/minecraft
```

mkdirでディレクトリを作り、chownで所有者を変え、ユーザを適切にし、作業を行うディレクトリに移動する。

## ダウンロード
適切なバージョンを https://minecraft.net/ja-jp/download/server から選択し、ダウンロードする。上記URLをなんらかのブラウザで開く。最新版であれば、
![スクリーンショット 2017-12-26 23.34.50.png](https://qiita-image-store.s3.amazonaws.com/0/193287/e7d6b40a-10eb-3885-72d3-e8662c99bd61.png)
上記の黒くなっているところが、リンクになっているので、右クリックからリンク先のURLをコピーとかなんとか。それ以外のバージョンについては勘と勇気と検索力と（ことによったら）英語力を使ってなんとかしましょう。そして、次のようにする。

```bash:bashS
wget https://s3.amazonaws.com/Minecraft.Download/versions/1.9/minecraft_server.1.9.jar
mv minecraft_server.1.9.jar minecraft_server.jar
java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui
vi eula.txt
```

```vim:eula.txt
:3s/false/true/
```
一番上が筆者が使ったverである。このリンクはまだ生きているようなので、上記の「それ以外のバージョン」のヒントになる気がする。wgetでダウンロード、mvで適切な場所に移動、javaで一度実行する。-Xmとあるのはメモリ周りの設定らしい。この時、eula（規約の一種）が生成される。その後、生成されたeulaに同意すればよい。

よっしゃ起動じゃ！　の前に、自分の（マインクラフトでの）アカウント名を確認すること。起動後、強めの権限を自分に与えて置く場合に必要。

```bash:bashS
java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui
```

起動。

```bash:bashS
[00:24:29] [Server thread/INFO]: Done (10.143s)! For help, type "help" or "?"
op [アカウント名]
```
opを入力することによって、[アカウント名]に対して、マインクラフトの中で強めの権限が与えられる（Minecraft内部での大半のコマンドにはop権限が必要）。

[Ctrl]+cで一旦サーバーを終了する。

## screen上で起動
```bash:bashS
screen
java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui
```

[Ctrl]+aを押す。デタッチという作業である。詳しくはwebで。
本記事の通りに進めた場合、サーバの電源が落ちるたびに、このscreen上で起動からやり直す必要がある。

## 接続を確認
とにかく、これで繋がりはするはずである。
サーバ側を一旦おいておいて、自分の手元にあるパソコンでMinecraftを起動。
multiの中で、適当なサーバの名前とサーバアドレスを入力する。サーバアドレスは、例えば、

```
999.99.999.99:25565
```

のように入力する。特にMinecraftをいじっていなければ、:以降は不要だと思われる。

そこで、繋がったらひとまずおしまい。例のクリーパーと愉快な仲間たちのいる世界が広がっているはずなので、自由に遊べば良い、が、その前に、後片付けを。
全ての「黒い」画面に対して必要な回数だけ```exit```を繰り返し入力して終わらせる。

念のため（精神衛生のため）、その後もう一度Minecraftから入れるかを確認してみても良いだろう。

自動起動周りとかは参考文献の中に資料があるし、実は私のサーバではうまく行っていない感じがするので、今回は扱わない。

#おわりに
記事を書いているうちにConoHaがいつの間にかMinecraftレディなセットを用意していて記事が若干陳腐化してしまっていた。
ともあれ、サーバの基本的な設定は使いまわせる部分がそれなりにあると思われるので全く有効でなくなったわけではないと思う。
そして、実は、ここに書かれた設定を筆者が全てそのまま用いているというわけでもなかったりする（筆者は同一サーバで複数のバージョンをやりたかったりしたので、色々やっていたりする）。
まあ、いずれにせよ、何かの*参考*にはなるんじゃなかろうかと思う。
記事を閲覧された方におかれては、上手いこと使って欲しい。

#参考文献
syarihu, 「ConoHaを使ってCentOS 7.2でMinecraftサーバーを立てる」, http://qiita.com/syarihu/items/9d9522bb86c301ef57cb, 2017.07.30閲覧
server-memo.net, 「さくらのVPSでminecraftサーバを構築 minecraft_serverインストール編」, http://www.server-memo.net/minecraft/mc-install/minecraftserver-3.html, 2017.07.30閲覧
りぐん, 「サーバを構築したらまずやること」, http://blog.ligun.net/2014/05/server_init/
saitoxu, 「サーバ初心者に捧ぐ、サーバを立てたらまずすべきセキュリティの設定」, http://qiita.com/saitoxu/items/5ea998164c6225358567
katz+, 「wheel グループのみ root 化 と root でのログイン禁止」, http://katzplus.com/centos-6/%E3%83%A6%E3%83%BC%E3%82%B6%E8%A8%AD%E5%AE%9A/wheel-%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97%E3%81%AE%E3%81%BF-root-%E5%8C%96-%E3%81%A8-root-%E3%81%A7%E3%81%AE%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E7%A6%81%E6%AD%A2/
fk_2000, 「CentOS7でSSHのポート番号を変更する」, http://qiita.com/fk_2000/items/019b62818e34be973227
kakk_a, 「sudoersのお勉強」, http://qiita.com/kakk_a/items/dfd736d7ca284f5c6be6
takuya_1st, それマグで！, 「sudoersを変更する、よく使う設定例」, http://takuya-1st.hatenablog.jp/entry/20090806/1249554458
suthio, 「お前らのSSH Keysの作り方は間違っている」, http://qiita.com/suthio/items/2760e4cff0e185fe2db9
webkaru.net, Linux入門, 「公開鍵認証によるSSH接続 - Macターミナルの使い方」, https://webkaru.net/linux/mac-ssh-login-public-key/
ir-yk, 「ssh公開鍵認証設定まとめ」, http://qiita.com/ir-yk/items/af8550fea92b5c5f7fca
QUANON, 「bash で直前の履歴を有効活用したい」, http://qiita.com/QUANON/items/a39bbe0fba30f30ea587
Zero Configuration, 「[CentOS7]Oracle Java8をインストール」, http://zero-config.com/centos/install-java8.html
hnishi, 「Linux screenコマンド使い方」, http://qiita.com/hnishi/items/3190f2901f88e2594a5f
れねん, MINECRAFT RENEN CRAFT, 「【1.10.2】マインクラフトマルチサーバーの立て方！【Minecraft】」, http://renencraft.net/multiserver1-10-2-450.html
Minecraft Japan Wiki, 「コマンド」, https://www26.atwiki.jp/minecraft/pages/1314.html
[^1]: :wqでなく、ZZでもいける。細かい違いはあるらしいが、筆者にはよく分からない。c.f. clarinet758, 「ファイルを閉じるときの:wq :x ZZ 挙動を確認した。」, http://qiita.com/clarinet758/items/d778e13d9c24e6f62683
[^2]: TeraTerm Project, 「SSH 接続」, https://ttssh2.osdn.jp/manual/ja/usage/ssh.html
[^3]: Aruneko, 「Bash on Ubuntu on Windowsをインストールしてみよう！」, http://qiita.com/Aruneko/items/c79810b0b015bebf30bb
[^4]: もちろん、厳密には間違っていると思う（筆者は確信が持てない）。し、そうでなくとも、俺はzshだとかいう人もいるかもしれないが、zsh使っている人間がこの記事を見るはずはない。
[^5]: 本当は怖い情報科学, 「SSH秘密鍵のパスフレーズは（つけるなら）11文字以上にしましょうねという話」, http://freak-da.hatenablog.com/entry/20100901/p1 のような話もあるので、長い方が良いんじゃないだろうか。ただ、この話、少し時代が古いので、もっと長いほうがよかったりするかも。まあ、どのみち気休めだとかなんとか。ローカルのパソコンが盗まれたり、そこに侵入されたりしなければ良いだけの話か。また、Macならこののち、キーチェーンに登録するなどしても良い。`ssh-add -K ~/.ssh/id_rsa`のような具合。リスクは考えてから実行せよ。