1. はじめに
こんにちは、しなもっさんです。
皆さん大好きMisskeyありますよね。
知らない人のために説明するとMisskeyとはX(旧Twitter)とDiscordを足して二で割った感じの分散型SNSです。
リアクションなども多く、簡単で使いやすい。
そんなSNS、Misskeyを自分でホストしてみたい!!!
ということで今回はMisskeyサーバーを構築していきます。
2. 前提条件
- 今回構築するのはMisskeyが最低限動く環境のみ構築します。
- 今回は必要なソフトウェアのインストールもやります。
- 実際に使用した環境はAlmaLinux 9.6 (RedHat Enterprise Linux Base)です。
3. 環境を構築し始める
3-1. 前提ソフトウェアのインストール
今回インストールするソフトは以下のソフトです
すべてインストールできている方は手順3-2まで飛ばしてください。
- Node.js (v22)
- pnpm (v10以上)
- PostgreSQL (v15以上)
- Redis
- FFmpeg
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
ありがとうございました。また会いましょう!
パソコン、スマホ、PCゲームなどを中心に色々やってます。
コメント