【簡単】Misskeyサーバーの立て方・費用・設定を解説!【VPS・初心者向け】
ヤゴコロ研究所に訪問いただきありがとうございます。東大生ブロガーの西片(@nskt_yagokoro)です
今回は最近注目を集めているSNS「Misskey」のサーバーを構築する方法を解説していきます
本記事で紹介する構築手順は以下の通りです
- 独自ドメインを取得する(数分)。こだわりがなければ無料で取得することも可能。
- VPSでサーバー用のアカウントを取得する
- DNSの設定をする(設定自体は簡単だが待ち時間が長い場合あり)
- VPSを設定してMisskeyサーバーを立てる(数十分)
- (必要に応じて)管理者アカウントを作成して自分のサーバーに関する詳細な設定をする
VPSの設定はMisskey Hubに記載されている「Docker Composeを使ったMisskey構築」を参考にしています
Misskeyサーバーの立て方は主に3つ
個人がMisskeyサーバー(インスタンス)を立てる方法としては以下の2つが代表的かと思います
- クラウド(AWSなど)を使う
- VPSを使う
1つ目は「クラウドを契約して立てる」という方法。
クラウドとは「Webサービスを作る上で必要なものをネット経由で提供してくれるサービス」のこと。
本来、Webアプリ等をネット上に公開するためには、サーバーなどのハードウェアを自分で購入したり、ソフトウェアを自力でインストールしたりする必要があります
しかしながら、全てのリソースを自分で準備するには莫大な費用がかかりますし、維持費もかかります。さらに構築・管理するための知識も必要です
そこで活躍するのが「クラウド」。クラウドを使えば、世界のどこかに設置されているリソース(サーバーなど)をネット経由で自由に使うことができるようになります
クラウドサービスの中でも、Amazonのクラウドサービスである「AWS」やMicrosoftの「Azure」、Googleの「Google Cloud Platform (GCP)」などが人気です
クラウドは拡張性が高くて便利ですが、「多額の請求を受ける可能性がある」という欠点があります。
クラウドは月額料金ではなく、使用した時間やリソースに応じて課金されることがほとんどです。そのため、無計画にクラウドを使っていると、莫大な金額を請求をされて「クラウド破産」に陥る可能性もあります
そこで、本記事ではクラウドではなく「VPS」を使っていきます
VPSは月額課金制なので、自分の想定以上に請求される心配がありません。また、日本企業が運営しているケースが多いので、トラブルが発生した際に日本語で対応してもらえるのもGoodポイント。
VPSサービスは多数存在しますが、この記事ではXserver VPSを使用していきます。安価で高性能なだけでなく、Misskeyサーバーを立てる際に便利なテンプレートが用意されているので、Misskeyサーバーの構築には最適です
なお、おすすめのVPSについては以下の記事にまとめてあるので、ぜひ参考にしてみてください
Misskeyサーバーを立てるのに必要なもの・費用
Misskeyサーバーを立てるにあたって必要なものは以下の2つです
- サーバー(VPSなど)
- 独自ドメイン
サーバーについては説明不要かと思いますが、Misskey鯖を立てるには独自ドメインも必要になってきます
ドメインというのはURLの一部として使われる文字列のことで、いわば「Webサイトの住所」とも言える存在です
ネットユーザーは、ドメインを指定することで、そのWebサイトにアクセスできるようになります
たとえば、YouTubeのドメインは「youtube.com」、内閣府ホームページのドメインは「cao.go.jp」です(僕のブログの場合、yagokoro-lab.comがドメインです)
Twitterの場合、すべての投稿はTwitter社が所有するドメイン「twitter.com」の下で管理されます。一方、Misskeyには全体を総括するドメインが存在しないので、サーバーを立てる人が自分専用のドメイン(いわゆる独自ドメイン)を用意する必要があります
ドメインは0円で取得できるものもあれば数万円以上のものもあります。ただ、ドメインはサーバーの質を左右するものではないので、費用を抑えたいなら格安のドメインでも構いません
※おすすめの独自ドメイン取得サービスについては以下の記事にまとめてあります
サーバー(VPS)にかかる費用はサーバーの規模によります。仲間内だけで小規模にマストドンを楽しむなら月に数百円程度の出費で済みますが、人数が多くなるとそれなりにハイスペックのプランを契約する必要があるので注意してください
「どのプランを選べばいいか分からない…」という場合は、Xserver VPSの公式サイトに問い合わせてみてください
知っておくべき基礎知識
本記事の後半では、Linuxコマンドを使用します
コマンド操作に慣れていない場合、つまずくところも多いかもしれませんが、調べながら作業を進めていってください
Misskeyサーバー構築の流れ
Misskeyサーバーを立てる流れは以下の通りです
- 独自ドメインの取得
- VPSの契約
- DNSの設定 ← 設定反映に数時間~数日かかることも
- VPSの設定
本記事で紹介する手順の通りに作業を進めれば、そんなに時間はかからないかと思います。ただし、DNSの設定が反映されるのに数時間~数日かかることがあるので注意してください
あと「この記事を読んでも分からない」「不具合が発生して作業が進まない」という人のために、記事の最後に参考リンクを貼っておきました。必要に応じて参考にしてください
Misskeyサーバーの立て方
本記事で紹介するMisskey(ミスキー)のサーバーの立て方は以下の通りとなっています
- 独自ドメインを取得する(数分)。こだわりがなければ無料で取得することも可能。
- VPSでサーバー用のアカウントを取得する
- DNSの設定をする(設定自体は簡単だが待ち時間が長い場合あり)
- VPSを設定してMisskeyサーバーを立てる(数十分)
- (必要に応じて)管理者アカウントを作成して自分のサーバーに関する詳細な設定をする
VPSの設定はMisskey Hubに記載されている「Docker Composeを使ったMisskey構築」を参考にしました
独自ドメインを取得する
まずは独自ドメインを取得していきます
独自ドメインを取得できるサービスはいくつかありますが、今回は業界最大手の「お名前ドットコム」で取得していこうと思います
ちなみに、おすすめの独自ドメイン取得サービスについては以下の記事にまとめてあるので、よかったら覗いてみてください
では、さっそく独自ドメインを取得していきましょう
まずは、お名前ドットコムの公式サイトにアクセスします
続いて、検索ボックスに使いたいドメインを入力して検索ボタンを押してください。
例えば「sample.com」を取得したい場合には「sample」と入力します
ドメイン名はどんな文字列でも基本的にOKですが、何のコミュニティか分かりやすいようにドメイン名を決めるのがいいと思います
検索ボタンを押すとドメインが使用可能かどうか表示されます
空きがある場合はチェックボックスが表示されるので、使いたいドメインにチェックを入れて下さい
ちなみに「abc」や「blog」のような単純なドメインは人気なため、すでに使用されていたり高額だったりします。
「.com」「.xyz」など様々なドメインが表示されますが、自分のお好きなもので構いません
購入するドメインにチェックを入れたら右側の「お申し込みへ進む」を押して下さい
次の画面では「サーバーを契約するかどうか」「ドメインの契約年数」「オプションサービスを追加するかどうか」を聞かれます
サーバーは後ほど「Xserver VPS」を申し込むので、ここでは「申し込まない」を選択
「Whois情報公開代行メール転送オプション」と「ドメインプロテクション」はお好みで申し込んでください
入力を終えたら、画面右側に「登録に使うメールアドレス」と「登録したいパスワード」を入力して「次へ」をクリック
あとは会員情報を入力し、支払いを完了させれば仮登録は終了です
最後に「サーバーの準備をお忘れではありませんか?」的なことを聞かれるかもしれませんが「申し込まない」を選べばOKです
手続きを終えてしばらくたつと「【重要】【お名前.com】ドメイン 情報認証のお願い」というメールが届くはずなので、記載されているURLをクリックしてください
これでお名前ドットコムへの登録は完了です
Xserverアカウント作成
つづいては、Xserver VPSでVPSサーバーを契約します
Xserver VPSの公式サイトにアクセスし、右上の「お申し込み」ボタンをクリック
エックスサーバー社のサービスを初めて使う場合には「すぐにスタート!新規お申込み」、すでにアカウントを持っている場合は「ログイン」をクリックしてください
「すぐにスタート!新規お申込み」を選択した場合、以下のような情報入力画面が出てくるので、案内にしたがって入力してください
あとは、メールアドレスとSMS(または電話)による認証をすれば、アカウント作成は完了です
XserverVPSのプラン選択
アカウントを作成したらプランの申し込みに移ります
「Xserver VPSを申し込む」をクリックすると、以下のようなアプリの選択画面が出てきます
Misskey用に契約するなら、以下のように入力するのがおすすめです
入力項目 | 入力内容 |
---|---|
サーバー名 | そのままでも自分で決めてもOK |
プラン | 4GB以上推奨 ※どれを選べばいいか分からない場合は公式に問い合わせてみてください |
サーバーの契約期間 | 長期契約だと月額料金が安くなってお得 |
イメージタイプ | Docker ※タブを「OS」から「アプリケーション」に切り替えて「Docker」をクリック |
rootパスワード | 半角英数字、半角数字、半角記号から2種類以上含んだ9文字以上70文字以内 |
次の確認画面で入力内容に誤りがないことを確認したら「お支払いへ進む」をクリック。
決済画面が表示されます。「クレジットカード」「翌月後払い(コンビニ/銀行)」を選択して支払いを済ませてください
DNSの設定
決済を終えると、自動で以下のようなサーバー管理画面に移行します
先ほど契約したサーバーが表示されているはずなので、右のほうにある「VPS管理」をクリック
VPSサーバーの詳細が表示されます。
下のほうに「IPアドレス」という項目があるので、この文字列をメモしておいてください
続いて、「IPアドレス」の下に「接続許可ポート」という項目があるので、右側の「変更する」をクリック
以下のように「SSH」と「Web」を「ONにする」に切り替えて「接続許可ポートを設定する」をクリックしてください
続いて「お名前ドットコム」のお名前.com Naviにログインします。以下のような管理画面に移動するので、「ネームサーバーの設定」>「ドメインのDNS設定」をクリック。
契約中のドメイン一覧が表示されるので、マストドン用に使いたいドメインを選んで「次へ」をクリック。
続いて「DNSレコード設定を利用する」の右にある「設定する」ボタンをクリックしてください
下のほうへスクロールしていくと「A/AAAA/CNAME/MX/NS/TXT/SRV/DS/CAAレコード」という項目があります↓
ドメインをそのままマストドン用のURLとして使う場合には、以下のようにレコードを2つ追加してください※以下はドメイン名がexample.jp、IPアドレスが111.239.181.187の場合の入力例です。ご自分のIPアドレス(先ほどメモした文字列)に読み替えてください
ホスト名 | TYPE | TTL | VALUE | 状態 |
---|---|---|---|---|
(入力しない) | A | 3600 | 111.239.181.187 | 有効 |
(入力しない) | TXT | 3600 | v=spf1 +ip4:111.239.181.187 ~all | 有効 |
※「TYPEとかTTLって何?」という場合には以下のページをご覧ください。
お名前ドットコム「DNSレコード設定の各レコードの意味を教えてください。」
サブドメインを使う場合には、以下のようにレコードを2つ入力してください※以下はドメイン名がmstdn.example.jp、IPアドレスが111.239.181.187の場合の入力例です。ご自分のIPアドレス(先ほどメモした文字列)に読み替えてください
ホスト名 | TYPE | TTL | VALUE | 状態 |
---|---|---|---|---|
mstdn | A | 3600 | 111.239.181.187 | 有効 |
mstdn | TXT | 3600 | v=spf1 +ip4:111.239.181.187 ~all | 有効 |
レコードを2つ追加したら、ページの一番下にある「確認画面へ進み」をクリックして変更を反映させてください
なお、DNSの設定が反映されるまでに数時間~数日の時間がかかります(参考:お名前ドットコム「DNS設定の変更手続きをしてから有効になるまでの期間は?」)。反映されたかどうか確認したい場合には、以下のページをお使いください
ドメインを入力して「Search」をクリックすると、反映されたかどうかを自動で調べてくれます。表示されたIPアドレスが設定したIPアドレス(Xserver VPSのIPアドレス)になっていればOKです
Teratermの導入&Misskeyの設定
DNSの設定が反映されたら、Misskeyの設定に移りましょう
セキュアな環境でVPSに接続するためにSSHクライアントソフトを導入していきます。ここでは、最も代表的なSSHクライアントソフトである「Teraterm」を使っていきますが、ほかのSSHクライアントソフトでもOKです
まず、公式サイトからTeratermをダウンロードします。「ダウンロードパッケージ一覧」のところにある「teratem-x.xxx.exe」をクリックすると自動的ダウンロードが開始します
ダウンロードが完了したら、ダウンロードしたexeファイルを起動し、Teratermをインストールしてください。特にこだわりがなければ、全部「次へ」をクリックしておけばOKです
Teratermを起動すると、以下のような画面が出てきます
「ホスト」に先ほどメモしたVPSのIPアドレスを入力して「OK」をクリック。
初めて接続する場合にはセキュリティ警告が表示されますが、気にせず「続行」をクリックしてください
すると、以下のような認証画面が出てくるので、ユーザ名に「root」、パスフレーズにVPS契約時に設定したrootパスワードを入力してください
※もし認証画面が出てこない場合には、いったんteratermを閉じてから再度起動させてみてください
黒い背景の画面が出てきたらOKです。この画面にコマンドを入力していきます(※本記事ではコマンド操作に関する詳しい説明は省略するので、分からない箇所は適宜調べてください…)
ユーザーの追加
以下のコマンドを入力し、ユーザーを作成する(user_name のところは自分の好きなユーザー名に差し替えてください)
adduser user_name
パスワードの設定を求められるので、入力します。Full Nameなども聞かれますが、特に設定をしない場合はEnterを押せばOKです
続いて、以下のコマンドで追加したユーザー(user_name)にsudo権限を与えます
sudo gpasswd -a user_name sudo
完了したら以下のコマンドでuser_nameにログインしましょう
su user_name
※参考:VPSにDockerでMisskeyを立てていろいろあった話
システムのアップデート
以下のコマンドを実行してシステムをアップデートしておいてください
sudo apt update
sudo apt upgrade
dockerとdocker-composeの確認
XseverVPSのテンプレートを使っている場合、既にdockerとdocker-composeはインストール済みです。
以下のコマンドでバージョンが表示されることを確認してください(表示されなかったらインストールされていないことになります)
sudo docker -v
sudo docker-compose -v
リポジトリの取得
公式ドキュメントを参考にリポジトリを取得します
git clone -b master https://github.com/misskey-dev/misskey.git
cd misskey
git checkout master
もし「fatal: could not create work tree dir ‘misskey’: Permission denied」というエラーが出る場合、以下のコマンドを実行してから再度上記のコマンドを使用してみてください(パスワードを聞かれたら先ほど設定したパスワードを入力してください)
sudo chmod 777 .
dockerの設定
公式ドキュメントを参考に、設定ファイルのサンプルをコピーしていきます。下のコマンドを実行してください
cp .config/docker_example.yml .config/default.yml
cp .config/docker_example.env .config/docker.env
cp ./docker-compose.yml.example ./docker-compose.yml
コピーしたファイルを自分のサーバー用に書き換えてきます
以下のコマンドを実行してvimでdefault.ymlファイルを開き、編集します。
vi .config/default.yml
下記の通りに書き換えてください(Insertキーを押すと編集できるようになります。Vimの使い方はこちらを参考にしてください)
- URLのところに「https://ドメイン名」を記載
- ユーザ名・パスワードを記載(後述のdocker.envと同じにする)
続いて、以下のコマンドを実行してvimでdocker.envファイルを開き、編集します。
vi .config/docker.env
下記の通りに書き換えてください
- ユーザ名・パスワードを記載(先述のdefault.ymlと同じにする)
docker-compose.ymlも編集します
vi docker-compose.yml
以下のコードをdocker-compose.yml内にコピペした後、VIRTUAL_HOSTとLETSENCRYPT_HOSTに自分のドメインを入力します。LETSENCRYPT_EMAILには、自分のメールアドレスを指定してください。
version: "3"
services:
web:
image: misskey/misskey:latest
restart: always
links:
- db
- redis
depends_on:
- db
- redis
ports:
- "3000:3000"
networks:
- internal_network
- external_network
volumes:
- ./files:/misskey/files
- ./.config:/misskey/.config:ro
environment:
VIRTUAL_HOST: example.com
VIRTUAL_POST: 3000
LETSENCRYPT_HOST: example.com
LETSENCRYPT_EMAIL: xxxx@yyy.com
redis:
restart: always
image: redis:7-alpine
networks:
- internal_network
volumes:
- ./redis:/data
healthcheck:
test: "redis-cli ping"
interval: 5s
retries: 20
db:
restart: always
image: postgres:15.1-alpine
networks:
- internal_network
env_file:
- .config/docker.env
volumes:
- ./db:/var/lib/postgresql/data
healthcheck:
test: "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"
interval: 5s
retries: 20
networks:
internal_network:
internal: true
external_network:
external: true
初期化と起動
続いて、以下のコマンドでデータベースを初期化します
sudo docker compose run --rm web pnpm run init
データベースを初期化したら、以下のコマンドでmisskeyを起動します
sudo docker-compose up -d
以下のコマンドで立ち上がっているかどうかを確認できます
sudo docker-compose ps
nginx&certbot(Let’s Encrypt)の設定
以下のコマンドでnginxとcertbot(Let’s Encrypt)をインストールします
sudo apt install nginx
sudo apt install certbot python3-certbot-nginx
続いて、以下のコマンドでLet’s Encryptの証明書を発行します
sudo certbot --nginx -d ドメイン名
続いて、公式ドキュメントを参考にNginxの設定をしていきます
以下のコマンドを実行してmisskey.confを作成します
cd /etc
mkdir -p nginx/conf.d
cd nginx/conf.d
vi misskey.conf
作成したmisskey.confファイルに、公式ドキュメントの設定例をコピペし、example.tldの部分を全て自分のドメイン名に書き換えます
書き換えが完了したら以下のコマンドで設定ファイルが正常に読み込まれることを確認してください
sudo nginx -t
最後に以下のコマンドでnginxを再起動します
sudo systemctl restart nginx
これで基本的なサーバーの設定は終了です。お疲れ様でした!
ブラウザで「https://ドメイン名」にアクセスすれば、以下のような管理者用ページが表示されると思います
このページでは管理者アカウントを作成できます。管理者アカウントを作ったら、自分好みに色々とカスタマイズしてみてください