RHELでMisskeyサーバーを立てる

開発

1. はじめに

こんにちは、しなもっさんです。
皆さん大好きMisskeyありますよね。

知らない人のために説明するとMisskeyとはX(旧Twitter)とDiscordを足して二で割った感じの分散型SNSです。
リアクションなども多く、簡単で使いやすい。

そんなSNS、Misskeyを自分でホストしてみたい!!!

ということで今回はMisskeyサーバーを構築していきます。

2. 前提条件

  • 今回構築するのはMisskeyが最低限動く環境のみ構築します。
  • 今回は必要なソフトウェアのインストールもやります。
  • 実際に使用した環境はAlmaLinux 9.6 (RedHat Enterprise Linux Base)です。

3. 環境を構築し始める

3-1. 前提ソフトウェアのインストール

今回インストールするソフトは以下のソフトです
すべてインストールできている方は手順3-2まで飛ばしてください。

1.Node.js

まず、最新のNode.jsをインストールするために、次のコマンドを使用して開発ツールをシステムにインストールします。

$ sudo dnf groupinstall -y "Development Tools" 

次に、以下のコマンドを実行してアプリケーションストリームリポジトリに含まれるNode.jsパッケージを確認します

$ sudo dnf module list nodejs

次に、以下のコマンドを実行してデフォルトのNode.jsモジュールをインストールします。
ですがこのままdnf module installしてしまうとエラーが出てしますので次のコマンドでモジュールストリームを選択してからインストールをします(今回はバージョン22を使用します)

$ sudo dnf module switch-to -y nodejs:22
$ sudo dnf module install -y nodejs

インストールできましたら次のコマンドでインストールできているか確認します

$ node -v

バージョン情報が出てきたらNode.jsのインストールは完了です。

2.pnpm

以下のコマンドを実行してnpmを使ってpnpmをインストールします

$ sudo npm install -g pnpm

インストールできましたら次のコマンドでインストールできているか確認します

$ pnpm -v

バージョン情報が出てきたらpnpmのインストールは完了です。

3.PostgreSQL

PostgreSQLをインストールするためにPostgreSQLレポジトリをインストールします

$ sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm

次にビルトインのPostgreSQLを無効化します

$ sudo dnf -qy module disable postgresql

そしてPostgreSQLサーバーをインストールします

$ sudo dnf install -y postgresql17-server

次にPostSQLのデータベースの初期化と、自動起動を有効にします

$ sudo /usr/pgsql-17/bin/postgresql-17-setup initdb
$ sudo systemctl enable postgresql-17
$ sudo systemctl start postgresql-17

無事実行できましたらデフォルトのpostgresユーザーでPostgreSQLコンソールに接続できるか確認してみましょう!

$ sudo -u postgres psql

無事にアクセスできましたらMisskeyのDBで使うユーザーをデータベース作成権限を加えて作成します
(“MisskeyDB_username”をMisskeyDBに使うユーザー名に、”MisskeyDB_password”をMisskeyDBで使うユーザーのパスワードに変えてください)
同時にDATABASEも作成しておきます

=# CREATE USER MisskeyDB_username WITH ENCRYPTED PASSWORD 'MisskeyDB_password' CREATEDB;
=# CREATE DATABASE misskey WITH OWNER misskey;

4. Redis

続きましてRedisをインストールします

$ sudo yum install redis

そしてRedisの起動と自動起動を有効にします

$ sudo systemctl enable redis
$ sudo systemctl start redis

出来たらRedis CLIに接続します。

$ redis-cli

無事にアクセスできましたらquitで終了しましょう

5. FFmpeg

事前インストールはラストです!
FFmpegをインストールします。
dnfからffmpegをインストールできるようですがエラーが発生してしまいました。

なのでepelのffmpeg-freeをインストールします

$ sudo dnf install ffmpeg-free --enablerepo=epel

ffmpegのインストール確認

$ ffmpeg -version

これで事前ソフトの準備ができました!!!

3-2. Misskey の準備

Misskeyはrootユーザーでの実行が推奨されていないので代わりのユーザーを作成します。

$ sudo adduser misskey

次にパスワードを削除します

$ sudo passwd -d misskey

そしてhomeフォルダをchownします

$ sudo chown -R misskey /home/misskey

次にMisskeyにログインしますが、公式で紹介されているsudo -iu misskeyを使う方法だと常にsudo状態になってしまってpnpmを使えません。なのでsuを使います

$ su - misskey

次にMisskey公式のgithubレポジトリをクローンしてブランチをmasterに切り替えます。また、サブモジュールも更新しておきます

$ git clone --recursive https://github.com/misskey-dev/misskey.git
$ cd misskey
$ git checkout master
$ git submodule update --init

Misskey本体をアップデートします

$ NODE_ENV=production pnpm install --frozen-lockfile

アップデートできましたらMisskeyの設定していきましょう!!
サンプルの .config/example.yml.config/default.yml としてコピーします

$ cp .config/example.yml .config/default.yml

nanoで .config/default.yml を編集します

$ nano .config/default.yml

最初の方に書いてあるのはライセンスの説明です。ソースコード書き換え等を行わずにそのまま使う方は無視して問題ないです。

まずはセットアップ用に使うパスワードを変更しましょう
74行目のsetupPasswordのコメントアウトを外してexample_password~の部分を書き換えます

- # setupPassword: example_password_plese_change_this_or_you_will_hacked
+ setupPassword: (あなたが決めた好きなパスワード)

次に最終的にアクセスできるようにするURLを80行目で指定します
一度起動したらここで指定したURLは変更しないようにしてください

- url: https://example.tld/
+ url: https://(あなたのMisskeyに接続するためのドメイン)/

MisskeyでHTTPS接続を使用するにはリバースプロキシの設定が必要です
また、GETリクエストでトークンが転送される可能性があるのでHTTPS接続が公式で強く推奨されています。
102行目でリッスンポートを指定できます(今回は変更しない)

port: 3000

PostgreSQLの設定を終わらせたら動くはずです。usernameとpasswordを先ほど作ったものに書き換えてください
残りはプロキシサーバーやID生成などの設定のみなので色々いじりたい方は見てみてもいいと思います(ここでは紹介しません)

Ctrl+Cで保存して閉じましょう

そして最後にMisskeyのビルドと初期化をします

$ NODE_ENV=production pnpm run build
$ pnpm run init

起動しました!!!
http://localhost:3000で接続確認します。

いろいろセットアップを終わらせたら、、、、

完成!!!

4. おわりに

今回はMisskeyというSNSサーバーの構築をしてきました。
管理方法等はサイト内にて説明されています。
メール認証なども設定できるのでやってみても楽しいです。
また、間違っている点や質問があればぜひコメントお願いします。

今回実際に構築したサイト : https://misskey.cinm.me

ありがとうございました。また会いましょう!

コメント

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