DiscordのMusicBot(リピート機能付き)を無料VPS+CentOS7で構築

##### …ほとんど他記事紹介です #####
でもリンク先の手順通りだと所々ハマってしまったので忘備録。初投稿。Linux初心者。

### 追記(2019/05/31)###
現在動作確認が取れていません。
素直に公式が推奨するDebian系で構築したほうが時間の浪費にならずいいかもしれません。

### 追記(2020/10/26)###
一部表現・コマンドを見直しました。
現在CentOS8が出ていますが、私は完全にUbuntuに乗り換えてしまったので動作確認は他の方にお任せします、、、

## GCPとGCEの登録・サーバ(インスタンス)の作成 ##

ほとんどこちらを参考にしました。

[【GCP-GCE】無料で永遠に信頼出来るVPSを使用できちゃう！]
(https://22musyoku.tokyo/gce-always-free/)

ただしこのマシン、永年無料だけが取り柄でPythonをインストールすると途中でブーストが切れるために結果15分以上かかったりとかなり使い勝手は悪いです。
GCPは新規に使い始めると1年間有効な300ドル分のクレジットが貰えるため、25ドル/月に収まるようなマシンを借りて試すことをお勧めします。
vCPU×1にメモリ1GBもあればこの用途では十分です。（ストレージはSSDにするとより快適）
同じ無料でも最大5倍程度のスペックアップが見込めます。

## MusicBotサーバの構築 ##
これが難しかった。何気に趣味とはいえ実運用するサーバの構築がこの時初でして、かなり手間取りました。
参考サイトはこちら。（この参考サイトを見ながら進めていきました）

[【CentOS7 VPS】 Discord Musicbotの導入と常時オンライン化]
(https://qiita.com/Trouble_SUM/items/9282160bc8e28b0034d1)


まずは既に入っているソフトのアップデート。それから色んなもののインストール。

```bash
$ sudo yum -y update
$ sudo yum -y install git gcc gcc-c++ kernel-devel libffi-devel
```

### ffmpegのインストール ###
これに手こずりました。。。
上記事さんの「さらに」の部分から「あとは適当な～」の直前まではカット。
代わりに以下URLの手順でやります。

[CentOS7にffmpegをyumインストール]
(https://qiita.com/snoguchi/items/d12f0407075d7978925c)

```bash
$ sudo yum -y install epel-release
$ sudo rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
$ sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm
$ sudo yum -y install ffmpeg ffmpeg-devel
```

既にインストールされているものは `Error: Nothing to do.` と出てきます。無視して大丈夫です。
導入確認。バージョンっぽいものが出てくればOKです。

```bash
$ ffmpeg -version
```

### リピート機能を含んだMusicBotのダウンロード ###

`cd github` まで進んだら一旦ストップ。
実はオリジナル版MusicBotにはリピート機能は実装されていません。無くてもいいのですがあったらかなり便利・・・
…ありました。こちらを参考にします。

[discordだけでTRPGボイスセッション環境を整える]
(https://qiita.com/C0ela/items/f2423f7cad7741152c57)

```bash
$ git clone https://github.com/Just-Some-Bots/MusicBot.git
$ cd MusicBot
$ git fetch origin pull/486/head:music-bot-id-486
$ git checkout music-bot-id-486
```

4行実行し終わったら `cd ../` で元のディレクトリに戻っておきましょう。

### Pythonのインストール ###
基本上記事さんの通りです。
しかしリピート機能を導入する場合、**3.5以前を導入してください。**
3.5.xまででしか動かせないとの情報。実際に3.7.2で確認しましたが動作しませんでした。
3.5.xの最新Verである3.5.7（2019/03/24現在）で話を進めます。

```bash
$ sudo yum -y install gcc zlib-devel bzip2 bzip2-devel readline readline-devel sqlite sqlite-devel openssl openssl-devel
$ cd ~/github
$ git clone https://github.com/yyuu/pyenv.git ~/.pyenv
$ vim ~/.bash_profile
```

Vimで以下を追記。先頭でも末尾でも良さそうです。Vimも最初は慣れませんでした。

```Python
# pyenv
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
```

続けて以下を実行。

```bash
$ source ~/.bash_profile
$ pyenv install 3.5.7
$ cd ~/github/MusicBot
$ pyenv local 3.5.7
$ pyenv rehash
```

導入確認です。3.5.7になっていれば大丈夫です。

```bash
$ python --version
```

### Discord側でのbot作成～構築完了 ###

ここからはほとんど上記事さんの通りで問題ないようです。
Discordに使い慣れていない限り迷うことは少なめに思えます。手順を間違えなければ…
初回起動時に実行されるPyNaCl＋αのインストールが意外と時間かかります。

## まとめ ##
海外サーバでも目立って音が切れることもなく快適です。

この使い方なら（**ターミナルの操作遅延以外は**）永年無料のサーバでも特に問題ないですが、応答時間が重要なWebサーバ用途等にはあまり向きませんね。ping値は地理的な限界で常に100ms以上です。

[GCP ping]
(http://www.gcping.com/)

<details><summary>最近はvCPU×1+メモリ1GB+SSD20GBで400円/月程度の国内VPSサービスがありますね。~~気になる・・・~~
記事執筆後に使ってみました。普通に使えるのでコスパ優先ならおすすめです。</summary>
https://web.arena.ne.jp/vps-cloud/</details>

## その他参考 ##

[Markdown記法 チートシート]
(https://qiita.com/Qiita/items/c686397e4a0f4f11683d)


**その他不備などありましたらお気軽にコメントお願いします。**