みなさんこんにちは! KENTEM第二開発部でフロントエンドを担当しているO・Aと申します😺
この記事では、一般家庭の要らなくなったPCを活用して、自宅で分散型SNS(Misskey)サーバーを構築する方法を、12/9~12/13の5日間に分けて、毎日丁寧に解説していきます。
シリーズ目次
今回は第4回:Misskeyのインストール編です。
- CloudflareのSSL/TLS設定
- Misskeyのインストール
- 管理者用アカウント作成
- デーモンを設定する
- 今後のメンテナンスのための準備
- おめでとうございます!…だけど公開するのはまだ早いかも!
- おわりに
- 参考文献
Misskeyのインストールには、以下の技術スタックを使用します。
しかし、Misskeyの開発者は大変親切なので、「ターミナルにコピペしてインストールするばかりなら シェルスクリプトでいいじゃん!」と一発でほぼ全部インストールしてくれるシェルスクリプトを提供してくださっています。
この辺の導入の簡単さもMisskeyを選んだ理由の一つですね。
では、早速始めていきましょう。
CloudflareのSSL/TLS設定
まず、以下のURLからCloudflareのダッシュボードを開きましょう。
自分のドメインをクリックします。
左のメニューから、「SSL/TLS」→「概要」をクリックして、「SSL/TLS暗号化」の「設定」をクリックします。
「カスタムSSL/TLS」の「選択する」をクリックします。
「フル」を選択して、「保存」をクリックします。
Misskeyのインストール
ターミナルを開きます。
以下のシェルスクリプトをターミナルに入力してEnterを押します。
(とはいえ入力するのも面倒なので、コピーし、右クリックで貼り付け推奨です)
wget https://raw.githubusercontent.com/joinmisskey/bash-install/main/ubuntu.sh -O ubuntu.sh; sudo bash ubuntu.sh
これより先、ターミナルで質問/指示されたとおりに入力していきます。
Install Method Do you use systemd to run Misskey?: Y = To use systemd / n = To use docker
ここではsystemdを使用するので、yをタイプしてEnterを押します。
Misskey setting Repository url where you want to install: > https://github.com/misskey-dev/misskey.git
インストールしたいMisskeyのリポジトリを選択します。
デフォルトのままEnterを押します。
The name of a new directory to clone: > misskey
Misskeyのインストール先のディレクトリ名を決めます。
デフォルトのままEnterを押します。
Branch or Tag > master
Misskeyのブランチを選びます。
デフォルトのままEnterを押します。
Enter the name of user with which you want to execute Misskey: > misskey
サーバー上でMisskeyを実行するユーザー名を決めます。
デフォルトのままEnterを押します。
Enter host where you want to install Misskey: > example.com
第3回でCloudflare Tunnelで設定したドメインを入力します。
例えば設定していたドメインが、サブドメインも含めて「mi.hogehoge.jp」なら、そのとおりに入力しましょう。
入力してEnterを押します。
Nginx setting Do you want to setup nginx?: [Y/n] >
Nginxの設定をするか聞かれます。
設定するのでyをタイプし、Enterを押します。
Do you want it to open ports, to setup ufw or iptables?: u = To setup ufw / i = To setup iptables / N = Not to open ports [u/i/N] >
ファイアウォールの設定をufwかiptablesで行うかを決めます。
今回はCloudflare Tunnelを使用しているので、ポートを開放する必要はありません。
nをタイプし、Enterを押します。
Certbot setting Do you want it to setup certbot to connect with https?: [Y/n] >
Certbotの設定で、https接続を利用するかの質問です。
yをタイプしてEnterを押します。
Cloudflare setting Do you use Cloudflare?: [Y/n] >
Cloudflareを使うかどうか確認されます。
yを押してEnterを押します。
OK, you want to use Cloudflare. Let's set up Cloudflare. Make sure that Cloudflare DNS is configured and is in proxy mode. Enter Email address you registered to Cloudflare: >
Cloudflareに登録したEmailアドレスを入力してEnterを押します。
Open https://dash.cloudflare.com/profile/api-tokens to get Global API Key and enter here it. Cloudflare API Key: >
CloudflareのAPIキーの入力を求められます。
APIキーを取得するために、以下のURLからCloudflareのダッシュボードを開きましょう。
自分のドメインをクリックします。
開いたら、下にスクロールし、右サイドバーから「APIトークンを取得」をクリックします。
「APIキー」の「Global API Key」の「表示」をクリックします。
パスワードを入力します。
APIキーが表示されます。
「クリックしてコピー」をクリックし、先程のターミナルに右クリックで貼り付け、Enterを押します。
Tell me which port Misskey will watch: Misskey port: > 3000
Misskeyのポートを設定します。
デフォルトのままEnterを押します。
Database (PostgreSQL) setting Do you want to install postgres locally?: (If you have run this script before in this computer, choose n and enter values you have set.) [Y/n] >
データベースをインストールするか質問されます。
yをタイプしてEnterを押します。
ただし、何らかの事情(途中でエラーが発生したなど)でこのシェルスクリプト実行が2回目の場合は、既にデータベースが作られているので、「n」をタイプして、既存のデータベースのユーザー名とパスワードを入力してください。
PostgreSQL will be installed on this computer at localhost:5432. Database user name: > misskey
データベースのユーザー名を決めます。
デフォルトのままEnterを押します。
Database user password: >
データベースのパスワードを決めます。
忘れないように必ずメモしておきましょう。
入力したらEnterを押します。
Database name: > mk1
データベースの名前を決めます。
デフォルトのままEnterを押します。
Redis setting Do you want to install redis locally?: (If you have run this script before in this computer, choose n and enter values you have set.) [Y/n] >
Redisの設定をします。
データベースの時と同じく、シェルスクリプトが1度目の試行ならy、問題などが起きた場合の再挑戦(2度目以降)ならnを入力して、Enterを押します。
Redis password: >
Redisのパスワードを決めます。
忘れないようにメモしておきましょう。
入力したらEnterを押します。
その後、自動でインストール作業が進みます。3分ほど待ちましょう。
無事に終わると、
Process: create .misskey.env; ALL MISSKEY INSTALLATION PROCESSES ARE COMPLETE! Jump to https://mitest.seritude.com/ and continue setting up your instance. This script version is v3.0.0. Please follow @joinmisskey@misskey.io to address bugs and updates.
という表示が出ます!
これはMisskeyサーバーが正常に建っている証です。
いざ、ドメインにアクセスしてみましょう!
以下の画像のようなページが表示されていれば成功です!
おめでとうございます!!!
⚠ただし、まだこの段階では初期設定が終わっていないので、SNSのURLが分かるようなスクリーンショットを絶対に第三者に公開しないでください!
もしページが表示されなかったら?
可能性としては以下が挙げられます。
- Misskeyインストールで間違ったメールアドレス/APIトークンを入力している
- Cloudflareで「SSL/TLS」の設定を「フル」にしていない
- RAMの不足
- ビルドの失敗
- etc…
うまくいかない場合は、シェルスクリプトを使わず、以下の「Ubuntu版Misskeyインストール方法詳説」を参考に、0から設定してみてください。
基本的には上記の詳説に沿えば誰でも構築できるようになっていますが、初心者が覚えておくべきことは、ターミナル画面で操作ができなくなったら「:wq」を叩く。 これだけです。
それでも治らなかったら?
以下の「マニュアルインストール時のトラブルシューティング」のページを参考にしましょう。
それでも治らなかったら?
「エラー名 Misskey」などでGoogle検索しましょう。
先人がいるかも。
それでも治らなかったら……?
「Misskey 鯖缶」などでGoogle検索して有識者に問い合わせるか、Claude.aiなどに聞きましょう。
管理者用アカウント作成
うまくサーバー構築できた場合に表示されるこのページでは、管理者用のアカウントを作成します。
管理者のユーザー名とパスワードを決めましょう。
「初期設定開始用パスワード」は入力しません。
あくまで管理者用アカウントなので、ユーザー名は素直に「admin」とかでも良いかもしれませんね。
終わったら「完了」をクリックします。
左上の「〇〇が次の通知を求めています」で「許可する」をクリックして、「プロフィールを設定→」をクリックします。
ここから先は、普通のプロフィール設定と同じ要領です。
プロフィールが設定し終わったら、「チュートリアルを開始→」をクリックします。
Misskeyの操作のチュートリアルを受けましょう。
(チュートリアルはここでは割愛します。)
チュートリアルが終わったら……
あなたのSNSのホームが現れます。
まっさらですね!記念に最初の投稿をしてみましょう。
左下の「ノート」または「N」キーで投稿フォームを開けます。
Misskeyでは投稿のことを「ノート」と呼びます。
「ノート」をクリックすれば……
無事に投稿できています!やったーーー!おめでとうございます!!!!!!
just setting up my msky ……
デーモンを設定する
デーモンとは、バックグラウンドで常時動作しているプログラムのことです。
SNSは常時稼働が求められるので、「誤ってターミナルを閉じちゃった!」という場合でも大丈夫なように、バックグラウンドで動かし続ける設定をしましょう。
一旦Ctrl+C
でプロセスをキルして、nanoエディタを立ち上げます。
exit sudo nano /etc/systemd/system/misskey.service
nanoエディタに以下の内容を右クリックで貼り付けて保存します。
保存は「Ctrl+x」→「y」→「Enter」。
[Unit] Description=Misskey daemon [Service] Type=simple User=misskey ExecStart=/usr/bin/npm start WorkingDirectory=/home/misskey/misskey Environment="NODE_ENV=production" TimeoutSec=60 StandardOutput=journal StandardError=journal SyslogIdentifier=misskey Restart=always [Install] WantedBy=multi-user.target
15秒程度待ってから、systemctlでデーモンの状態を確認。
sudo systemctl status misskey
緑文字で「active」と表示されていたらデーモンの立ち上げ成功です。
もうターミナルのウィンドウは閉じても構いません。
今後のメンテナンスのための準備
ターミナルに以下のコマンドをコピペしてEnterを押します。
wget https://raw.githubusercontent.com/joinmisskey/bash-install/main/update.ubuntu.sh -O update.sh
そして今後、新しいバージョンのMisskeyがリリースされた場合は、ターミナルに以下のコマンドを貼り付けてEnterを押しましょう。
sudo bash update.sh -r
自動的に再起動するようになっており、当然再起動中はサーバーに接続できなくなる=SNSがダウンするので、アップデート時は事前にサーバー内のユーザーの皆様にお知らせしましょうね。
リリース情報は以下のページから確認できます。
直近(2024年12月現在)の傾向では毎月新しいバージョンがリリースされているようです。
おめでとうございます!…だけど公開するのはまだ早いかも!
さて、ようやく築いたこの城ですが、まだまだ快適な生活を送るための設備が整っていない状況です。
確かにMisskeyのコアとなる部分は動作していますが、SNSとして十分な機能を提供するにはまだ準備が必要です。
具体的には、メールサーバーを立ててメール配信ができるようにしたり、プッシュ通知に対応したりなど、SNSとしての機能を盛り込んでいく必要があります。
充分な準備を整えてからのスタートを目指したいですね。
最終回である第5回では、この城を堅牢に守るためのセキュリティ対策、バックアップ方法、パフォーマンス向上、機能追加などについて述べていきたいと思います。
それではまた明日お会いしましょう!
おわりに
最後まで読んでいただいた方に向けて、KENTEMの採用情報のご紹介です👇
KENTEMでは、様々な拠点でエンジニアを大募集しています!
・ICTの力で、建設業の「3K」を解決し、働く人に安心安全を届けたい。
・ KENTEMユーザーの現場の方々が、残業規制内に仕事が終わるようにして、18時には家族で食卓を囲めるようにしたい。
・建設業を支えることで、社会全体を「さまざまなリスクに強い安心・安全な場所」に変えていきたい。
このような理念を掲げて我々は働いております。
建設×ITにご興味頂いた方は、是非下記のリンクからご応募ください!😺
recruit.kentem.jp
career.kentem.jp