【CentOS7】VPSを使ってDiscordにMusicBotを導入して自動起動させる方法【2020年版】

スポンサーリンク

※2020年2月更新

みなさんこんにちはTeXTeXです。

プロフィールにも載せていますように私はゲームが好きです。特にPCゲームを多くプレイしており、オンラインゲームのプレイが多いです。フレンドの方たちともDiscordでよくボイスチャットをしながら一緒にプレイするのですが、たまーにBGMが欲しくなったりします。

「じゃあ、勝手にiTunesで聴いとけや!!!」なーんて方もいるかも知れませんが、そう私はディジタルネイティブ世代。別名「なんでも共有したがり世代」なわけですよ。だから「BGMも共有したい」「一緒に聞きたい」と思っちゃうこともあるわけです。
そんな人間はどうやら日本だけではなく世界中にいるようで、MusicBotなんていうどえらい便利なものを作ってくださった方がいらっしゃいました。MusicBotというのはDiscordのVC上でYouTubeの動画の音声のみを流してくれるBotです。つまりYouTubeにアップロードされてさえいれば、VC上でBGMを共有することも可能なわけですよ。凄い!

そのMusicBotをWindowsの自分のPCに導入して通話してたりしたわけですが、なんていうか少し不便なんですよ。これはMusicBotの出来が良くないとかそういうことではなく、自分のPCに入れて運用するゆえの問題に不満を持ったというわけです。たとえば

  • 自分の回線状況に左右される
  • 常時オンラインにするには辛いものがある
  • 多少とはいえPCに負荷がかかる
  • 使用する際にいちいち起動しなくてはならない

といった感じに結構不満が出てきます。でも、この不満は全て解決可能なのです。そう「VPS」があればね。
というわけで前置きが長くなってしまいましたが、MusicBotをVPSにインストールして常時Discord上で可動させる方法を出来るだけ詳しく解説していきます。

 

VPSって何?

VPSと言う言葉、ネットワーク関係に興味のある人なら聞いたことがことがあるでしょう。これはVirtual Private Serverの略で、日本語に直訳してしまえば「仮想個人サーバ」ってところでしょうか。仮想と付いている通り、VPSはサーバの仮想化技術を表します。

サーバというのは、誤解を恐れず簡単に言ってしまえば、インターネットと繋がっていてユーザにサービスを提供する専用のコンピュータのことです。インターネットを通して提供されるサービスは、YouTubeやGoogle検索、Twitter、Facebook、メールシステム、ラインetcなんでもかんでもサーバを使ってサービスを提供しています(p2p技術を使っていてもどこかにサーバは関与します)。

そんな日々我々が使っているサーバはデータセンターというサーバを1箇所に集めた場所で稼働しているわけなんですが、個人がサーバを使ってなにかサービスを提供したいと言うときに、こういった大企業のように自分でサーバを買ってきて稼働させるというのはハードルが高いです。そこで、レンタルサーバというサービスが始まりました。これはサーバを丸々1台レンタルする「専用サーバ」のレンタルであったり、1つのサーバを複数人でシェアする「共用サーバ」のレンタルという形で始まりました。しかし、専用サーバは丸々1台サーバをレンタルする関係上費用はかさみますし、共用サーバは複数人で共用する以上制限が多かったり他者の影響を受けやすいのです。例えれば、専用サーバ=借家共用サーバ=シェアハウスってところです。家を借りるときに借家とシェアハウスしかないって不便ですよね。この中間の存在、そうマンションの貸し部屋が欲しくなりませんか?

そんな考えのもと作られたたのがVPSです。1台のサーバ上に仮想的に複数のサーバを構築します。そうすることで、共用サーバのように他者の影響を受けるようなことは少ない上に自由度も高く、専用サーバと比べて値段も安価になります。凄い!最強だな!弱点なしだな!なんてわけでもなく、あくまで専用サーバと共用サーバの中間の立ち位置。悪く言えば中途半端なわけです。でも中途半端が悪いということはなく、専用機器を出し抜いて普及しているスマホ同様、専門的なことをしないのならば色々な目的に幅広く使えて便利なサービスということになります。

今回はそんなVPSをレンタルして、そこにMusicBotを導入していくわけですが、VPSを貸し出している業者はいくつもあります。ここでは個人的なオススメを書いていこうかと思います。

1番オススメ

ConoHa

ConoHaはGMOの提供するVPSレンタルサービスです。最大の特徴は1度レンタルしてからでもサーバのスペックをスケーラブルに変更できます(512MBプラン除く)。それでいて月額はライバルとほぼ変わらず、初期費用も不要です(※サイトの価格表記は税別)。さらに、利用期間が1ヶ月に及ばない場合、サーバの費用は1時間毎や日付毎で計算されます。プリペイド払いに対応していたり、教員割・学割があるなど、そこそこ安くて便利で自由度の高いVPSになっています。追加サービスも多数ありますがてんこ盛りにすると使用料は膨れ上がりますので注意。ちなみにこのブログはConoHaのVPSをレンタルしています。
また、イメージキャラクターのこのはちゃんはYouTuberになったりCDをリリースしたりしてます。いったい何を目指しているのか…まあ可愛いからいいんですが。
こちらから登録してくださると被紹介者には1000円分のクーポンが入りお得ですし、もし追加課金して利用してくだされば私にもクーポンが来て嬉しいです。よろしければお使いください。(最初のアンカーには紹介リンクは埋め込まれていません。アフィブロガーふぁっきゅーという人はそちらをどうぞ)

 

これもオススメ

さくらのVPS

VPSといえばココ!ってぐらいに定番です。定番故に情報が多く、サーポートも充実しており、はじめてのVPSなら迷わずオススメ出来ます。しかも遂に初期費用が0円になりました!
一方でサーバのスペック変更がアップグレードのみしか出来ないなどマイナス点もちらほら。ですが信頼性は国内No.1といっても過言ではないでしょうから、あらかじめ必要スペックが分かっており、予算にも余裕がある方にはおすすめです。

 

安いのが良ければ

Vultr

米国生まれのVPS。海外サーバなら月額2.5ドル~でレンタルできます。安いですね。国内にも東京にサーバはありますが、そちらは月額5ドル~でレンタルできます。安いだけでなく、conohaと同様に費用は時間割で換算されるので使いたいときだけ建てるのも便利です。支払いにPaypalが使えるのも個人的には嬉しい。
5ドル以上のサーバはギークベンチのスコアが掲載してあるため、サーバーを検討する際の参考にできるのが良し。スペックが明確に分かりやすいのは良いですね。
ちなみに回線速度はというと、東京の5ドルサーバで土曜日中に下り3Gbps、上り1Gbpsほど、回線の混み合う平日21時にり700Mbps、上り900Mbpsでした。(個人使用ではこんなにいらないけど)こいつぁーすごい。
というわけでわたしはここでMusicBotを起動しつつ、個人用のVPN鯖も立ててます。
マイナス点は5ドルプランだと月間の使用可能帯域が1000GBなこと。とは言っても平均で一日33GBまでの帯域幅があるわけで、公衆にVPNを公開したりしなければモーマンタイ。
こちらから登録していただくと、30日間だけ使える100ドルクーポン貰えます。無料お試し期間はなく、最低でも10ドル入金しないと使えませんが、1ヶ月限定でハイスペ鯖を使えます。MusicBotにはハイスペなんぞいらんけどな。

 

割り切れるなら最高

CloudAtCost

V1が購入不可となり、新規様には微妙VPSとなりました。残念…

VPSには月額費用がかかるという常識を覆しやがったカナダのサービス。なんと初期費用+年間9$の管理費用(スペックによらず一定)さえ払えば、会社が潰れないかぎり半永久的に使えます。おまけによくセールをしており、2018/6/19日現在で80%OFFとなっています。安い。安すぎる。そのうえ、サーバはスペックを予め買うという形での購入になっており、自分が使えるスペック以内ならばいつでも何個でもサーバを建てられます。(毎回無事にサーバが経ってくれるとは限りません。Let’s サーバガチャ!)既に建っているサーバのスペック増強は出来ませんが、かなりの自由度です。
しかし安かろう悪かろうと言う言葉の通り、ここで提供されるVPSはスペックが低く(I/O速度が足を引っ張っている)、ちょくちょく落ちるなど信頼性は皆無です。データが吹っ飛ぶこともザラです。お遊びで使うなら問題ないですが本格的に何かをするのには向いてないかもしれませんね。でも今回のMusicBot程度ならありかもしれません。データが吹っ飛ぶたびに一々導入をやり直せるなら。(ちなみにわたしはここの4core 2GBでMusicBotを運用しています)
つまりあれだ。遊び用VPS。

 

準備をしよう

ツール導入

さて、VPSにMusicBotを導入するまでの過程ですが、ブラウザ1つでできないこともありません。ですがVPSをメンテナンスや構築・運用をブラウザ1つでやるのはひどく面倒です。そこでVPSをイジるにあたってあると便利な(というか必須な)ターミナルソフトウェアとクライアントソフトウェアを導入します。

今回使用していくツールは

の2つです。WinSCPはSCP接続してファイルのやり取りに使うクライアントソフトウェアです。サーバ向けのファイラとでも考えてくれればOKでしょうか。これがあるとファイルへの書き込みやファイルの管理が非常に楽になるので積極的に活用しましょう。PuTTYはssh/telnetターミナルソフトウェアです。CLI(テキストベースのインターフェイス)環境での操作に使います。WinSCPと連携が取れるのでPuTTYを使っていきますが、こだわりがある方は何を使ってもOKです。

それぞれ上のリンクからダウンロードしてきてインストールしてください。ただしPuTTYに関してはC:/Program File(x86)/PuTTY/PuTTY.exeとなるようにインストールしてください。(そうしないとWinSCPと連携を取れません。)

 

契約

ツールの準備はできたので、VPSを契約しましょう。必要事項を記入したらOSはCentOS7を選択してください。(CentOSはRed Hat Enterprise Linux(通称:RHEL)と呼ばれるサーバ向けのディストリビューションの無料版と言う位置づけです。国内でのサーバシェアはCentOSがトップだとか…ちなみに海外はUbuntuがトップだそうです。)

契約が完了しサーバが起動したらIPアドレスとパスワードを確認してください。(これは契約したサイトのダッシュボードかどこかで見つけられます)

 

とりあえず接続

確認できたら、インストールしたWinSCPを起動して、新しいサイトを選びます。次に右側のホスト名に確認したIPアドレス、ポート番号に22、ユーザ名にroot、パスワードに確認したパスワードをそれぞれ入力します。とりあえず保存(画像では編集となっているところ)を押して保存し、ログインしてみましょう。

出来たら下のような画面が表示されます。左側が自分のPCのフォルダ一覧、右がサーバのディレクトリ(=フォルダ)一覧です。

次にPuTTYが連携できているか確認します。上の画像で上から3段目、ディスプレイとディスプレイの間に電気が流れているようなアイコン、これがPuTTYの起動アイコンになります。クリックするとターミナルが起動し、パスワードを聞かれるので入力してください。ちなみに右クリックがペーストになります。

$ exit

で(そのユーザの)セッションを終了できます。($は入力しなくて構いません)

ここまで出来れば準備は完了です。

 

まずはセキュリティ設定をしよう

VPSというのは上で説明したようにサーバの一種です。サーバというのはコンピュータの一種ですから、PCがウィルスに感染したりクラックされたりする危険性があるのと同様に、VPSも悪意のある攻撃にさらされることが多々あります。特にVPSは不正アクセスの被害を受けやすく、初期設定のままであればその可能性はかなり高まります。VPSをせっかく購入したんだからすぐにMusicBotを導入して試したいと言う気持ちは分からないでもありませんが、まずは最低限の設定だけでもしてください。

そんなわけで今回行うセキュリティ設定は以下の3つです。

  • yumアップデート
  • SSH接続の設定
  • ファイアウォール設定

yumアップデート

まずはyumアップデートをします。yumとはCentOSにおけるRPM Package Managerのパッケージを管理するメタパッケージ管理システムを指します。「???」な人のために簡易に言うと、CentOSにおけるソフトウェア管理サービスです。ソフトウェア=パッケージはOSにも及んでいるため、実質OSの更新と思ってくれても問題ないです。とにかく新しくして脆弱性をなくそうということです。

以下のコードを実行してアップデートをしてみてください。しばらく時間がかかるので適当に暇つぶしをしましょう。

$ yum update -y

完了したらアップデートは終了です。簡単でしょ?

 

SSH接続の設定

ちゃっちゃと次に行きましょう。次はSSH接続の設定です。この部分が最も重要です。

SSHってなんぞやと言うと、リモートでサーバと通信をするための通信方式です。つまりあなたが今やっていることですね。最初にユーザ名とパスワードとポート番号を指定して通信をはじめましたが、これがデフォルトだとかなりアタックを受け、最悪陥落します。ですので、その前に認証方式をもっとセキュアにしましょうということです。
なにわともあれまずは一般ユーザを作成しましょう。passwdコマンドの後に2回パスワードを聞かれますので、出来る限りセキュアなパスワードを入力してください。

$ useradd -mG wheel hoge
$ passwd hoge

ちなみにhogeというのはhogehogeの略で「ほげほげ」です。ちゃんというとメタ構文変数です。つまり適当な文字列(今回はユーザ名)に置き換えて使ってくださいということです。他にも日本ではpiyoなどが使われており、piyopiyoならばTHE IDOL M@STERの某事務員っぽくなるので好きです。

さて、ここから本格的にSSH接続の設定をしていきます。現在はrootユーザを使って22番ポートにパスワード認証で接続していますが、これではセキュリティ的にガバガバです。なので、rootユーザでのログイン禁止、SSH接続の使用ポートを変更、パスワード認証から公開鍵認証へ変更の3つを行います。

まずは公開鍵認証の設定をしていきます。公開鍵認証とは通常のパスワード認証のようにサーバにただパスワードを送るのではなく、予め両者が持っているキーを使いパスワードを暗号化して送信、それを受信して同じキーで復号するという方式です。超簡単に書くとパスワードを手紙で郵送するのではなく、両者が鍵を持っている金庫にパスワードを書いた手紙を入れて宅急便で配達するみたいなもんです。
よくわからずともできるのでやっていきましょう。まずは以下のコマンドで秘密鍵(id_rsa)と公開鍵(id_rsa.pub)を生成します。これはクライアント側で行ってもいいですが、今回はサーバ側で作ります。

$ ssh-keygen -t rsa -b 4096

保存場所を聞かれますが、初期の場所で良いでしょう。その後

Enter passphrase

と表示されるのでパスワードを入力します。(これは好きなパスワードで良いです。)

これで公開鍵も暗号鍵も完成しました。では公開鍵をPCにダウンロードします。WinSCPで現在のディレクトリが表示されているタブの横に、「フォルダの上を矢印が飛び越えているアイコン」があると思うのでそこをクリック。「ディレクトリを開く」の下に/root/.sshと入力します。すると、id_rsaとid_rsa.pubがあるので、左の自分のPCの好きな場所にドラッグアンドドロップでダウンロードします。(ダウンロードが済んだらid_rsaはサーバから削除してください。)
次にこれをサーバに登録させます。
$ cd /root/.ssh
$ cat id_rsa.pub >> authorized_keys
$ cd ..
$ chmod 700 /root/.ssh/
$ chmod 600 /root/.ssh/authorized_keys

これで登録できました。

 

次はssh接続の設定ファイルを書き換えます。WinSCPで/etc/ssh/sshd_configを開きます。

PasswordAuthentication yes
との一文が65行目にあるのでこれを
PasswordAuthentication no
に書き換えます。(書き換えはWinSCPからできます。保存は忘れずに。)できたらsshを再起動しましょう。
$ systemctl restart sshd
このコマンドでsshが再起動され、パスワードを用いたSSHの認証ができなくなり、公開鍵認証のみになりました。
新たにWinSCPで想定していた接続できるか確かめます。(※ここで今の接続を切ると、設定に失敗していた場合に接続できなくなります。注意!!!)
接続は最初に保存していたの接続のパスワード部分を空欄にし、設定>設定>SSH>認証>秘密鍵からid_rsaを選択します(最初は保存したディレクトリを開いても表示されませんが、表示する拡張子を秘密鍵に変更することで表示できます。)。注意のようなものが出るかもしれませんが、気にせずOKを押して、最終的にid_rsa.ppkが選択されていればOKです。
あとは接続し、公開鍵を作る際に入力したパスワードを入力、ログインできれば成功です。

 

公開鍵認証の設定ができたら次はポート番号を変更しましょう。まずはルートユーザに変更します。
$ su -
この作業は基本的にWinSCPにて行います。
/etc/ssh/sshd_configをWinSCPで開きます。開いたらctrl + Fで文字検索ウインドウを表示させます。そこに「Port」と入力すると
# Port 22
という一文が見つかると思うので、
Port 22
Port 2222
のように書き換えてください。ここでは便宜的に2222としていますが、好きな数でいいです。ただし既に割り振られているポートもあるので、心配な人は50,000~65,535の間から好きに選んでください。書き換えたらSSHをリロードして、新しいポート番号で接続テストをしてください。
$ systemctl restart sshd
できたら先程のPort 22を削除してもう一度SSHを再起動です。
ここまででSSHの接続設定は完了です。
Tips
Port 2222(便宜上の名前)で繋がらないよという人はすでに起動時の段階で無駄なポートが遮断されているのかもしれません。その場合はとりあえずPort 22の削除は後回しにして(すでに消した場合は再度追加して)このまま進み、次のFirewall設定が終わった段階でPort 2222だけが接続できるようにすればおkです。

 

ファイアウォール設定

最後にファイアウォール設定を行います。ファイアウォールは防火壁のことですが、ことPCに関しては防火壁より、検問所といった方が現実に即していると思われます。望まないアクセスを防ぐのに重要な項目なのでしっかりと設定しましょう。

Tips
CentOS 6ではファイアウォールとしての役割をiptablesで行ってきました。しかしCentOS 7になってからはデフォルトがfirewalldとなりました。これによりかなりシンプルで使いやすくなったので、ぜひ移行してみてください。
まずSELinuxと呼ばれるカーネル制御機能を提供するモジュールをオフにします。(SELinuxは正しく設定できればセキュリティの強化に貢献できますが、良くわからないで使うとトラブル元なので今回はオフにします。)
$ getenforce
を入力し
Enforcing

と表示されれば、有効化されていることを意味します。

SELinuxの設定ファイルのバックアップを取ります。

$ cp -piv /etc/selinux/config /etc/selinux/config.`date "+%Y%m%d"`
/etc/selinux/config.YYMMDDというファイルがバックアップされますので、次に/etc/selinux/configを次のように修正しましょう。
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing – SELinux security policy is enforced.
# permissive – SELinux prints warnings instead of enforcing.
# disabled – No SELinux policy is loaded.
### Disalbe SELINUX start
##SELINUX=enforcing
SELINUX=disabled
### Disalbe SELINUX end
# SELINUXTYPE= can take one of three two values:
# targeted – Targeted processes are protected,
# minimum – Modification of targeted policy. Only selected processes are protected.
# mls – Multi Level Security protection.
SELINUXTYPE=targeted
この設定は再起動しないと反映されません。なので再起動します。(※再起動前に、新たにサーバに接続できるかは確認してください)
$ reboot
再起動が完了したらもう一度SELinuxが起動しているか確かめます。
$ getenforce
Disabled

となっていれば無効化に成功したことを意味します。

 

ここからはfirewalldの設定をかまっていきます。
まずはfirewalldが有効になっているかを確認しましょう。

$ systemctl status firewalld
稼働していなかったのではないでしょうか。
これでは危険ですので起動させ、なおかつサーバ起動時に自動で有効になるように設定します。
$ systemctl start firewalld
ここからは接続を解除しないでください。接続できなくなった場合はコントロールパネルなどで再起動して下さい。
次にポートの22番を閉めて2222番(先程好きに設定した番号に置き換えてください)を開けます。そのためにSSH接続に関するファイルを書き換えることにします。そまずは新規に設定ファイルを持ってきます。(クドいようですが2222は置き換えて)
$ cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/ssh-2222.xml

既存のssh.xmlをcopyしてssh-2222.xmlを作成したら、WinSCPでssh-2222.xmlファイル内のポート番号を22から2222に変更します。(※何度も言いますが2222は先程書き換えたポート番号に置き換えてください。)

<port protocol=”tcp” port=”22″/>

<port protocol=”tcp” port=”2222″/>

保存したら、この書き換えて新規に作った設定を反映させます。(何度も言いますがry)

$ firewall-cmd --permanent --add-service=ssh-2222
$ firewall-cmd --permanent --add-service=http
$ firewall-cmd --permanent --remove-service=ssh
$ firewall-cmd --reload
これで反映されたはずなので、firewalldのリストを見てみましょう。
$ firewall-cmd --list-all
表示される項目ののserviceが以下のように表示されていればOKです。
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: dhcpv6-client ssh-2222 http
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
$ systemctl restart firewalld

この状態でWinSCPで新たなセッションを開始できますか?できていればOKです。そうしたら再起動しても自動でfirewalldが起動するようにしましょう。

$ systemctl enable firewalld

 

 

 

rootによるログインの禁止

これも重要な設定なのですが、この後の作業を楽にするために今は行いません。MusicBotが起動してから行ってください。

まずはパンピーhogeでログインが出来るか確認してください。できたら/etc/ssh/sshd_config

#PermitRootLogin yes

PermitRootLogin no

と変更します。その後sshを再起動しましょう。

$ systemctl restart sshd

パンピーでログインできて、rootユーザでログインできなくなっていればOKです。

以上で最低限のセキュリティ設定は完了です。

 

 

 

MusicBotの導入

ここからはお待ちかねのMusicBotの導入の開始です。

環境整備

まずは必要なパッケージをインストールすることにします。

$ sudo yum -y install git gcc gcc-c++ kernel-devel libffi-devel
エラーが出る場合
エラーが出てインストールが出来ない場合、DNS設定に問題が出ている可能性があります。以下のコマンドでネットワークインターフェース名を確認してください。(1番右の項目です)

$ nmcli device

確認できたら以下のコマンドのSystem eth0の部分をそれに置き換えてコマンドを実行し、googleのDNSを登録して、ネットワーク設定を再起動してください。

$ nmcli connection modify "System eth0" ipv4.dns "8.8.8.8 8.8.4.4"
$ systemctl restart NetworkManager

これでおそらく解決するはずです。

できたらffmpegもインストールします。これは動画を再生するのに必要なパッケージです。

$ yum install http://download1.rpmfusion.org/free/el/updates/7/x86_64/r/rpmfusion-free-release-7-1.noarch.rpm
$ yum install ffmpeg
$ ffmpeg -version

 

ffmpegがインストールできない場合
2020年2月現在、上記のrpmfusionが利用できないとの声も聞こえてきます。

$ yum install http://download1.rpmfusion.org/free/el/updates/7/x86_64/r/rpmfusion-free-release-7-1.noarch.rpm

からrpmfusionをインストールできない場合は、NUXを利用してインストールします。

$ rpm -v --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
$ rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm

でリポジトリを有効化し(後者のコマンドはMy RPM repositoriesから最新版を指定してください)

$ yum install ffmpeg -y

でインストールします。

依存確認の際にエラーを吐いた場合(例:libopenal.so.1()(64bit)がないなど)は

yum install epel-release -y

からepelリポジトリをインストールし

yum repolist all

でepel/x86_64が有効化されていることを確認、もし出来ていない場合は

$ yum install yum-utils -y
$ yum-config-manager --enable epel

で有効化した後、必要なパッケージをインストールしてください。(例の場合はyumコマンドからopenal-softをインストールします。)どのパッケージをインストールすればよいかは、Googleで「CentOS7 エラーを吐いたファイル」検索すれば見つかります。

次に一般ユーザ(セキュリティ設定で作ったの)に切り替えてMusicBotを適当なディレクトリに落としてきます。

$ su - hoge
$ mkdir github
$ cd github
$ git clone https://github.com/Just-Some-Bots/MusicBot

これでとりあえずはOKです。

 

そしたらばPython3.7.6を導入していきます。
古いMusicBotの導入記事ではPyhton3.5以上ならなんでもおkとなっていますが、2018年6月現在、安定して動くのはPython 3.5.3以上でPython 3.6未満です。2020年2月現在、3.5以上ならば基本的に動作可能なようです。

まずはまたもや必要なものをインストールします。

$ sudo yum install -y gcc zlib-devel bzip2 bzip2-devel readline readline-devel sqlite sqlite-devel openssl openssl-devel

インストールできたら一般ユーザで先程のgithubディレクトリに移動し、そこにpyenvを落っことしてきて、設定を追記します。

$ git clone https://github.com/yyuu/pyenv.git ~/.pyenv
$ vi ~/.bash_profile

bash_profileに以下を追記してください。(入力画面に移行したらaで追記モードに入り、コピーした下記の文書を右クリックでペーストし追記、Escで編集モードを抜け、:wqで上書き保存します。)

# pyenv
export PYENV_ROOT=”$HOME/.pyenv”
export PATH=”$PYENV_ROOT/bin:$PATH”
eval “$(pyenv init -)”

できたら、これを適用してpythonをインストールします。

$ source ~/.bash_profile
$ pyenv install 3.7.6
$ cd ~/github/MusicBot
$ pyenv local 3.7.6
$ pyenv rehash

できたらpythonがインストールされているか確認してください。バージョンが3.5以上で指定したものになっていればOKです。

$ python --version
バージョンについて
インストールできるバージョンは、インストールする際に下記のコマンドから一覧表示できるのでそこから3.5以上を指定してインストールしてください。

pyenv install -l

以上でMusicBotを動かす環境は整備できました。

 

Bot作成

MusicBotを起動していく前にBotの登録をDiscordで行います。

webブラウザを起動して開発者ページに飛ぶと罵られますが、気にせず右上の「NEW Application」をクリックして新規に作っていきます。
名前を入力するウィンドウが表示されますので、入力してアプリケーションを作成します。

My Applicationsに新規で作ったアプリケーションが並んでいるはずなので、そいつをクリックしてアイコン等を設定します。また、名前の下の「クライアントID」も後で使うのでメモっておきます。

 

上記の設定ができたら、画面左Botタブをクリックし、「Add Bot」からBotを作成してください。警告が出ますが関係なく続けて構いません。

成功すると先程と同じ位置にBotの項目が表示されています。「公開Bot(PUBLIC BOT)」にチェックを入れ、トークンをメモっておいてください。

そしたらばDiscordのアプリケーションを起動し、サーバのメンバーが表示されている場所で自分を右クリック、「IDをコピー」を選択します。

ここで久々にWinSCPに戻り、/home/hoge/github/MusicBot/config/example_options.iniを開きます。

[Credentials]
; Put your token here. Not “secret”. The secret is not the token.
Token = bot_token

にコピーしたトークンを

[Permissions]
; This number should be your id. It gives you full permissions. You do not put the bot’s id here. That’s silly.
; If you don’t know how to get this, scroll up a bit and read the part that says “HOW TO GET VARIOUS IDS”
; If you can’t do that for some reason, join the help server (invite in the readme) and type this in chat: !id
; If you still don’t understand, watch this https://streamable.com/4w8e and may your respective deity have mercy on your soul.
; I don’t want any more “how do I get the OwnerID” questions.
OwnerID = 000000000000000000

に自分のIDを貼り付けて保存します。

以下のURLの「0123456789」を、最初にメモっておいた「クライアントIDで」置き換えブラウザで接続します。

https://discordapp.com/oauth2/authorize?&client_id=0123456789&scope=bot&permissions=0

以下のようなページが表示されるので、「Botを追加します」にチェックを入れ、導入したいサーバを選択してください。(※サーバにユーザを招待できる権限がなければここのサーバ一覧に表示されません。予め管理者に権限をもらっておいてください)

 

起動してみよう

ここでPuTTYに戻ります。MusicBotディレクトリにいるはずなので(いなければcdコマンドで移動して)以下のコマンドでMusicBotを起動しましょう。

$ python run.py

ひたすら文字が流れたあと

Ok lets hope it worked

と表示されればインストールできたということです。

もう一度先程のコマンドを打ちます。

$ python run.py

すると今度はうまく行くはずです。成功していればDiscordのサーバでBotがオンラインになっています。やったね!!!
ちなみにctrl + CでMusicBotを終了させられます。

エラーが出る場合1
Connecting…
An error has occured:
Problem: Bot cannot login, bad credentials.
Solution: Fix your Email or Password or Token in the options file. Remember that each field should be on their own line.
のようなエラーの出る場合、example_option.iniをコピーしたoption.iniが生成されてないと思われます。次のコードで設定ファイルを作ってやり、さきほどした設定が正しくなされているか確認しましょう。

$ cd config
$ mv options.ini options.ini.`date "+%Y%m%d"`
$ cp example_options.ini options.ini
$ cd ..

もう一度走らせて今度こそオンラインになっていればOKです。

エラーが出る場合2
Pythonのインストールが上手く行っていないと「Python 3.5.3以上が必要だよ」的なメッセージが出ます。今一度MusicBotディレクトリでPythonのバージョンを確認し、3.5.3以上でなければインストールをやり直しましょう。

$ python --version

 

 

自動起動させる

さて、なんとか起動させるところまではこぎつけましたがサーバを再起動するたびにいちいちMusicBotを走らせるのは面倒です。そこでMusicBotの自動起動を設定します。

まずはWindowsでメモ帳を開き、以下の内容をコピペしてmusic.serviceで保存してください。(何度も言うようですがhogeは置き換えてくださいね)

[Unit]
Description=MusicBot
After=network.target

[Service]
Type=simple
WorkingDirectory=/home/hoge/github/MusicBot
ExecStart=/home/hoge/.pyenv/versions/3.7.6/bin/python3.7 /home/hoge/github/MusicBot/run.py
#if you don’t know where you have python 3.7 installed you can run ‘which python3.7’
#Don’t forget to replace “hoge” with your username!!!

[Install]
WantedBy=multi-user.target

そうしたらばWinSCPでこのmusic.serviceを/etc/systemd/system/に転送します。PuTTYに戻って以下のコマンドでこのmusic.serviceを有効化し、サーバの再起動時に自動でMusicBotが走るようにします。

$ cd /etc/systemd/system/
$ sudo chmod 644 music.service
$ sudo systemctl enable music
$ sudo systemctl daemon-reload

出来たらサーバを再起動してみましょう。上手く行っていれば、DiscordのBotが再びオンラインになります。

うまくいかない場合1
以下のコマンドを実行してrootユーザでもMusicBotディレクトリのPythonが3.7.6に紐付けられることを確認してください。

$ su - 
$ cd /home/hoge/github/MusicBot
$ pyenv local 3.7.6
$ pyenv rehash
$ python --version

 

MusicBotの設定をしよう

ここまでなんとかたどり着いてやっと使えると思ったら残念、まだあるんですよ…

最後にMusicBotの設定が残っています。「そんな~」って感じですがこれでラストです。ひと踏ん張りして頑張りましょう。

option.ini設定

先程configファイルはかまいましたが設定が完全ではありませんでした。起動するようになってくれたので、次はもう少しちゃんと使えそうな設定を見ていきます。WinSCPで/home/mbot/github/MusicBot/config/options.iniを開いてください。

AutojoinChannels = 00000000000
自動でインさせたいVCチャンネルを設定できます。IDはDiscordのクライアントからチャンネル右クリックでコピーできます。

 

CommandPrefix = !
コマンドの先頭につける任意の記号です。重複している物があるのならば変更してください。

 

SaveVideos = no
一度再生した曲を保存するかどうかです。VPSはそこまでディスク容量がないのでnoが推奨です。

 

UseAutoPlaylist = no
オートプレイリスト設定です。自作でオートプレイリストを作る場合以外はわずらわしいのでnoにしておきましょう。

 

UseExperimentalEqualization = no
BGMの音量を自動で一定にしてくれます。ですがそれなりのスペックが必要ですのでオンオフは各自の環境次第でしょう。ちなみにコンソールでtopコマンドを打つとプロセッサの使用量が、freeコマンドを打つとメモリの状況がわかります。

 

DeleteMessages = yes
Botが投稿したメッセージを自動消去します。オン推奨。

 

DeleteInvoking = no
ユーザがBot操作のために投稿したメッセージも消去してくれます。権限付与をお忘れなく。

 

permissions.ini設定

コマンド等の権限設定です。初期ではボットの所有者以外はほとんどBotを使えないのでここを設定してやる必要があります。サーバに空気の読めない子や自己中な子がいなければ、以下のように制限を付けないような設定にしてあげればよいです。

[Default]
CommandWhitelist = play skip search blacklist clean remove disconnect id joinserver listids np pause perms pldump queue restart resume setavatar setname setnick shuffle shutdown summon volume help
; CommandBlacklist =
IgnoreNonVoice = play skip search
MaxSongLength = 0
MaxSongs = 0
AllowPlaylists = yes
MaxPlaylistLength = 0
InstaSkip = yes
Remove = yes
SkipWhenAbsent = yes
BypassKaraokeMode = no
Extractors = generic youtube soundcloud

困ったちゃんがいる場合は、信頼できるユーザには多くの権限を、困ったちゃんには曲追加(曲数制限あり)ぐらいにしときましょう。[MusicMaster],[DJ],[Limited]とあるのでそれぞれ中身をいじってあげます。コマンド設定できたら、サーバー内の役職で分ける場合は役職IDを”GrantToRoles”の項目に、ユーザーで設定する場合はUserListにユーザーIDを放り込んで上げればよいです。

めんどくさければサーバから困ったちゃんを追放するのも手です。

 

設定が出来たらサービスを再起するか鯖を再起するか、NusicBotを再起すればOKです。

 

 

よく使うコマンド

!play <URL>

URLで指定したYouTube動画の音声を流します。<>はいらないです。

 

!summon

自分のいるボイスチャンネルにBotを呼びます。

 

!restart

Botを再起します

 

!skip

現在の曲をスキップします。困ったちゃんに使わせるとメンドイことになります。

 

!pause

再生を中断します。

 

!resume

再生を中断したところから曲を再開します。

 

!queue [pagenum]

キューに追加されている曲を一覧表示します。pagenumを指定しないと1ページ目が表示されます。

 

!remove [queuenum]

!queueコマンドにて取得したキュー番号の曲を削除する。引数にallを指定するとすべて消す。基本的に管理者のみに与えるのが良い。(番号指定ミスによる事故が多いので…)

 

!help

使えるコマンドを表示します。

 

その他&詳細はここで。

 

 

終わり

以上で導入はできました。これで楽しいDiscordライフを送れるはずです。やったね!!!

ちなみにニコニコの音源を流したりも出来ますし、オートプレイリストも作れば結構便利です。色々イジる事もできるので、より快適な環境を目指してチューニングしましょう!!!

コメント

タイトルとURLをコピーしました