Xserver VPS+CloudflareでMisskeyのおひとりさまサーバーを建てる

※この記事にはアフィリエイト広告を利用しています。

こんにちは。
Misskeyのおひとりさまサーバー「ENOLA-02」を運営している蔦葉(niko)と申します。

いろんな人の鯖立て記事を見ても初心者すぎて「前提をすっ飛ばして説明されても分かんねえよ!!」と思ったのと、一度自鯖を破壊して2ループ目の鯖立てだしせっかくだから最初から全部記録しておくかということで、Misskeyのサーバーを建てるときにした設定や手順等々をここに書いておこうと思います。

注意点として、詳細めに書いているかつMisskey側の仕様変更があってもいちいち記事内容を変更する予定はないので、もしかしたら最新の情報ではできない可能性もあります。
またタイトルにもある通り、本記事はXserverVPS+Cloudflareを使用した構築についてのものになります。別の方法で構築したい場合は他の方の記事等をご覧ください。

1、XServer VPSを契約

Xserver VPS にてサーバーを契約します。
サーバーとは言わずもがな、Misskeyのシステムやデータが入ることになる箱です。
XserverVPSではMisskeyのセットアップが簡単にできるアプリイメージというものを利用可能で、加えてエックスサーバー株式会社がMisskeyのスポンサーであるため、そのサービスを利用しているだけでしゅいろママ(Misskeyそのものを作った人)を間接的に支援することもできます。

申し込む内容は自分は下記のようにしました。ご参考までに。
  • プラン:メモリ2GB
  • ストレージの追加はなし
  • イメージタイプ:Misskey
  • サーバー契約期間:1か月(長期運営する自信がないため一旦1か月にしました)
  • SSHKey:なし
契約が完了したら、
http://[サーバーのIPアドレス]:3000
からMisskeyの管理者登録画面にアクセスできるようになります!
※この段階ではまだ管理者登録はしないでください。

サーバーのIPアドレスは、VPS管理>VPSパネルの上部から確認できます。

2、ポートを制限する

ここでポートを制限しておきます。
ポートとは、サーバーから送受信される情報の出入り口のことです。ポートは一つのサーバーに対して何万個もあるのですが、意味もなく全開放しているとハッカー的な人たちまで入ってくる可能性が高まって危険なので、そのとき絶対に開いている必要があるもの以外は全部閉じておくと安全というわけです。

接続可能なポートは、VPS管理>VPS管理>パケットフィルター設定にて設定します。
この後の手順で都度追加や削除をすることになりますが、この段階では下記のように設定します。
  • パケットフィルター設定:ON
  • WEB(TCP20,21,80,443)を接続許可ポートに追加
    (このポートを開けることによりユーザがアクセスできる)
  • カスタム TCP3000を接続許可ポートに追加
    (このポートを開けることにより管理ユーザ登録画面にアクセスできる。この後の手順で暗号化通信ができるようになったら、この設定は削除してOK)

3、ドメインの契約

ドメインを契約し取得します。ドメインは、URL内の「https://」以降の文字列になるとともに、Misskeyにおいてはユーザー名の後ろの文字列になる部分でもあります。(例)@sauotsnki2ko@misskey.ioのmisskey.io部分)

XserverVPSのVPSパネルにあるドメイン登録から、使いたいドメインを検索~必要な情報を入力してドメインを取得しましょう。
こだわりがある人は、別のサイトでドメインを取っても良いかと思います。

 ※ドメインは一度使い始めたら変更できません。適当に決めたり、見栄を張って更新料が高額なものにして後悔しないようにしましょう。

4、Cloudflareのアカウント登録

データの置き場所にしたり、セキュリティを高めたり、サーバーの負荷を下げたり…と自鯖で必要となる様々なことをCloudflareというサービス上で行います。
Misskeyの公式サイトであるMisskeyHubにも「Misskeyサーバーを公開するときは、CloudflareなどのCDNを使用することを強くおすすめします。」という記載がありますし、実際超絶最強便利で、後々素晴らしさを実感することになると思います。

アカウントを持っていない場合はまず作っておきます。日本語を表示する設定にもできるので、もし画面が英語だらけだったら右上のメニューから日本語にするのがおすすめです。
以降はしばらくCloudflareでの作業となります。

5、サイトとCloudflareとの紐づけ

ここからはサイトとCloudflareを結び付けてゆきます。右上の「サイトを追加」にアクセスして、以下の設定をします。

1、ドメイン

契約したドメインを入力します。

2、プラン

プランはFreeを選択します。

3、DNS

クイックスキャンの開始ボタン→続行ボタンを押します。ただ、筆者は必要ないのに一度XServer側で設定をしてしまったためにこの次の画面で違う表示がされてしまって実際の画面での説明ができません、、、DNSレコードが下記のようになるように設定をしてください。
  • タイプ:A
  • 名前:契約したドメイン
  • IPv4 アドレス (コンテンツ):サーバーのIPアドレス
※上の画像は実際の画面と同じ設定部分を後から別の画面で撮影したものです。

4、アクティベーション

アクティベーションに際し、Cloudflareのネームサーバー情報をドメインのネームサーバー情報として設定する必要があります。Cloudflare側でIPアドレスとドメイン名の紐づけをするようにするという設定です。
下記手順で設定を行います。
  1. Cloudflare側で表示されたネームサーバーのアドレスをコピー
  2. XServer側のネームサーバーの設定にてドメイン適用先サービスにて「その他のサービスで利用する」を選択
  3. ネームサーバーの欄にコピーしたアドレスを入力して設定
  4. Cloudflareの画面に戻り「続行」ボタンを押す
ボタンを押してしばらく待った後、Cloudflareがアクティブになっていたら成功です!

ドメインとIPアドレスが紐づいたこの段階(https://[ドメイン名]:3000でMisskeyにアクセスできるようになった段階)で、Misskey側で管理者のアカウント登録もしておきましょう!

6、キャッシュルールの設定

詳細はMisskey hubに記載がありますが、CloudflareのようなCDNを使用する場合はCDN側で/api/*のリクエストをキャッシュさせてはいけません。
そのために、ルール>Cache Rulesのルールを作成から、下記のように設定し保存します。
  • フィールド:URLパス
  • オペレーター:次を含む
  • 値:/api/
  • キャッシュの適格性:キャッシュをバイパスする

7、ファイル操作のためのソフトをインストール

サーバー内での操作をするためのソフトをインストールしておきます。

1、TeraTermのインストール

コマンド操作をするためのソフトです。XserverVPSのコンソールではできない文字のコピペをしたり、XserverVPSのコンソールでやることを推奨されていないMisskeyのアップデートをするために使います。
こちらからインストールできます。

2、WinSCPのインストール

サーバー上にあるファイルを、コマンド操作ではなくマウス操作で見たり書き換えたりができるソフトです。
こちらからインストールできます。
初期状態だと隠しファイルが表示されないので、オプション>環境設定>パネルより「隠しファイルを表示する」にチェックを入れることをおすすめします。

8、Cloudflare-オリジンサーバー間の証明書設定

ブラウザ-Cloudflare-サーバのエンドツーエンドの暗号化通信をするための設定をしてゆきます。この設定には、Cloudflare側に加えサーバー側の設定もする必要があります。

1、SSL/TLS 暗号化モードの設定

CloudflareのSSL/TLS>概要から、SSL/TLS 暗号化モードをフル (厳密)に設定します。

2、Cloudflareにて証明書を発行

サーバーに紐づける証明書を発行します。
証明書を使うことで、安全な通信をできたりそのサイトがまともなサイトだと示すことができます。
証明書は公開鍵と秘密鍵で紐づけられることになります。
  1. SSL/TLS>オリジンサーバーにて「証明書を作成」ボタンを押す
  2. 作成ボタンを押す
  3. 表示された公開鍵の文字列をメモ帳ソフトに貼りつけ、「origin.pem」というファイル名で保存
    (拡張子が.pemなら名前は何でもOK)
  4. 表示された秘密鍵の文字列をメモ帳ソフトに貼りつけ、「private_key.pem」というファイル名で保存
    (拡張子が.pemなら名前は何でもOK)

3、証明書関連ファイルをサーバーに追加

WinSCPを使って、作成した.pemファイルをサーバーの所定の位置に格納します。
  1. XServerのパケットフィルター設定にて、SSH 22のポートを許可する設定にしておきます
  2. WinSCPを開き、22番ポートにrootユーザでログイン
    (ユーザー名はroot、パスワードはXserverVPSを契約するときに決めたrootパスワードでログイン)
  3. サーバーの/etc/ssl/certs/ にorigin.pemをドラッグアンドドロップで移動させる
  4. サーバーの/etc/ssl/private/にprivate_key.pemをドラッグアンドドロップで移動させる

4、misskey.confの変更

引き続きWinSCPを利用してサーバー内の設定情報を書き換えます。
  1. etc/nginx/conf.d 内のmisskey.confを開く
  2. servernameを自分のサーバーのドメインに変更(2か所)
  3. return 301のURL部分を自分のサーバのURLに変更
  4. ssl_certificateの指定を公開鍵のファイルを入れたディレクトリにする(/etc/ssl/certs/origin.pem)
  5. ssl_certificate_keyの指定を秘密鍵のファイルを入れたディレクトリにする(/etc/ssl/private/private_key.pem)
  6. ssl_certificate・ssl_certificate_keyを指定している行が1行ずつになるように、#を使ってコメントアウトをする
  7. コンソールからsystemctl restart nginxをする(これでエラーが出なければ成功です)

9、default.ymlの編集

default.ymlのファイルを編集することで、Misskeyのドライブに保存した画像が正常に表示されるようにします。設定しないと画像がぼやけたままとなります。
  1. WinSCPにて/home/misskey/misskey/.configにアクセスし、default.ymlを開く
  2. URLの欄を自分のサーバーのドメインに書き換える

10、オブジェクトストレージの設定

Cloudflareにてオブジェクトストレージの設定をします。
この設定をすることで、画像データをXserver VPSのサーバーではなくCloudflare側で保存できるため、サーバーの容量の節約をすることができます。

1、R2から、「バケットを作成する」を選択

2、バケット名を入力し、「バケットを作成する」ボタンを押す

3、設定の「カスタムドメイン」の欄にある「ドメインを接続」ボタンを押し、表示された入力欄に自分のサーバーのドメインのサブドメインを指定する

筆者は「[バケット名].[ドメイン名]」の形式で登録しました。

※ここでサブドメインではなくメインのドメインを入れてしまうとサーバーが繋がらなくなってしまうので注意してください!

4、DNS レコードのプレビューが表示されるので、問題なければ「ドメインに接続」をクリック

5、R2の概要欄にある「R2 API トークンの管理」をクリック

6、「APIトークンを作成する」をクリック

7、「オブジェクト読み取りと書き込み」にチェックを入れて「APIトークンを作成」

8、必要な情報をメモ帳等に控えておく

Access Key ID・Secret Access Key・エンドポイントが表示されるので、それをメモ帳等に控えておきます。

9、Misskey>コントロールパネル>オブジェクトストレージの設定をする

  • Base URL:3、にて設定したオブジェクトストレージのURL
  • Bucket:設定したバケット名
  • Prefix:適当でOK(ここで設定した文字列がオブジェクトストレージ内に生成されるフォルダ名になる)
  • Endpoint:控えておいたエンドポイントのURL
  • Access Key:8、にて控えておいたAccess Key
  • Secret Access Key:8、にて控えておいたSecret Access Key

11、完!!!

これで一通りのサーバー構築の手順は終わりです。
実際はこの後にもやっておきたい設定はいろいろありますが、とりあえずはこれで押さえておくべき設定や構築の作業はすべて完了している状態になっているかと思います。

参考サイト

筆者がサーバーを建てたとき・本記事を書くにあたって参考にしたサイトです。本記事を見ても分からないことがあった際は、もしかするとこちらの記事で解決するかもしれません。

コメント