RHEL系にmisskeyをインストール¶
前提として、Misskeyの推奨はubuntu&nginxへの導入となる。
https://misskey-hub.net/ja/docs/for-admin/install/guides/ubuntu-manual/
あくまでその前提として、エンタープライズ環境としてRHEL&httpdへの導入を実施する。
多数のサードパーティのリポジトリを使用するので基本的には推奨しない。
前提条件¶
- git、curl、wget等を使えることにしておく
- epelは利用可能状態とする
- httpd(mod_ssl)はセットアップ済みとする
- RockyLinux8での実施なので、適宜読み替えること
使用するソフトウェアの準備¶
次のソフトウェアを使用する。- postgreSQL
バージョン15(コミュニティ版) - Redis
バージョン7.0(Remiリポジトリ版) - Node.js
バージョン20(コミュニティ版)
CodeReadyに存在するパッケージも使用するため、下記のコマンドで有効にしておく。
※rhel8 dnf config-manager --enable powertools ※rhel9 dnf config-manager --set-enabled crb
Remiリポジトリに存在するパッケージも使用するため、下記のコマンドで有効にしておく。
※rhel8 dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm ※rhel9 dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
PostgreSQLの準備¶
PostgreSQLはRHEL標準パッケージではバージョンが古すぎるため、コミュニティ本家のバージョンを使用する。
- 公式リポジトリ情報をインストールする
※rhel8 yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm ※rhel9 yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
- 使用しないバージョンの「pgdg**」の「enabled」を「0」にしておく
記載時点でのmisskeyで使用するバージョンは「15」なので、「pgdg15」を有効にしておく。vi /etc/yum.repos.d/pgdg-redhat-all.repo ------------------------------ [pgdg15] name=PostgreSQL 15 for RHEL / Rocky / AlmaLinux $releasever - $basearch baseurl=https://download.postgresql.org/pub/repos/yum/15/redhat/rhel-$releasever-$basearch enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/PGDG-RPM-GPG-KEY-RHEL repo_gpgcheck = 1
- サーバとクライアントをインストールする
yum install postgresql15 postgresql15-server
- DBの初期化を行う
/usr/pgsql-15/bin/postgresql-15-setup initdb
- DBの起動と自動起動登録を行う
systemctl enable --now postgresql-15
Redisの準備¶
RedisはRHEL標準パッケージではバージョンが古すぎるため、Remiリポジトリのバージョンを使用する。
- remiリポジトリのredisが利用可能なことを確認する
dnf module list redis ------------------------------ redis:remi-7.0 が存在すること
- 取得元を上記に変更する
yum module reset redis yum module enable redis:remi-7.0
- インストールを実行する
yum install redis
- 初回起動と自動起動登録を行う
systemctl enable --now redis
Node.jsの準備¶
Node.jsはRHELでもバージョン20を利用出来るが、必要な「corepack」が含まれていないためnodesource.com版を使用する。
(misskeyコミュニティのubuntu版でもこの配布元を使用している)
- リポジトリ情報作成用スクリプトを取得する
wget https://rpm.nodesource.com/setup_20.x
- スクリプトを実行し、リポジトリ情報を登録する
bash setup_20.x
- インストールを実施する
yum install nodejs
- corepackでnpmを有効化する
corepack enable
Misskeyのインストール¶
- 必要ソフトウェアのインストール
yum install git wget
- DBの作成
sudo -u postgres psql ------------------------------ CREATE ROLE misskey LOGIN PASSWORD '任意のパスワード'; CREATE DATABASE misskey OWNER misskey; ¥q
- ユーザの作成
useradd -s /sbin/nologin misskey
- ユーザの切り替え
su -s /bin/bash - misskey
- 最新版のmisskeyをチェックアウト
git clone -b master https://github.com/misskey-dev/misskey.git --recurse-submodules cd misskey ※安定板 git checkout master ※最新版(ベータというわけではない) git checkout develop
- 依存パッケージのインストール
NODE_ENV=production pnpm install --frozen-lockfile
- 初期設定
cd .config/ cp -p example.yml default.yml vi default.yml ------------------------------ url: 実際に公開するURL db: 先ほどのpostgreSQLの情報
- ビルドを実行
NODE_ENV=production pnpm run build
- 下記は無視してよい
(node:2375) ExperimentalWarning: Importing JSON modules is an experimental feature and might change at any time (Use `node --trace-warnings ...` to show where the warning was created)
- 下記は無視してよい
- データベースの投入
pnpm run init
- テスト起動
NODE_ENV=production pnpm run start ------------------------------ DONE * [core boot] All workers started DONE * [core boot] Now listening on port 3000 on https://公開アドレス 上記が表示されるまで待機
- もう一つターミナルを使うか、別サーバから実行(この場合はFWを一時停止しておくこと)
# curl localhost(またはIPアドレス):3000 ------------------------------ <!DOCTYPE html><!--- _____ _ _ | |_|___ ___| |_ ___ _ _ | | | | |_ -|_ -| '_| -_| | | |_|_|_|_|___|___|_,_|___|_ | |___| Thank you for using Misskey! If you are reading this message... how about joining the development? https://github.com/misskey-dev/misskey
- 確認が出来たら終了する
Ctrl+C
- misskeyユーザから抜ける
exit
- 自動起動スクリプトを作成する
vi /etc/systemd/system/misskey.service ------------------------------ [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
- systemdを再読込する
systemctl daemon-reload
- 起動および自動起動を設定する
systemctl enable --now misskey
httpdの設定¶
- httpdの導入(されていなければ)
yum install httpd mod_ssl systemctl enable --now httpd
- サイトの設定ファイルを作成する
公式サイトにはnginxしか設定サンプルが置かれていない。
SSL証明書はまだ作成していなければssl.confの自己署名を使うvi /etc/httpd/conf.d/misskey.conf ------------------------------ <VirtualHost *:443> ServerName misskeyのURL ServerAdmin 管理者のメールアドレス SSLEngine on SSLCertificateFile /etc/letsencrypt/live/misskeyのURL/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/misskeyのURL/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/misskeyのURL/chain.pem SSLCACertificateFile /etc/letsencrypt/live/misskeyのURL/fullchain.pem RewriteEngine on RewriteCond %{HTTP:Upgrade} websocket [NC] RewriteCond %{HTTP:Connection} upgrade [NC] RewriteRule ^/?(.*) "ws://127.0.0.1:3000/$1" [P] ProxyPreserveHost on ProxyPass / http://127.0.0.1:3000/ ProxyPassReverse / http://127.0.0.1:3000/ CustomLog logs/misskey_access_log vhost_combined ErrorLog logs/misskey_error_log LogLevel warn </VirtualHost>
- サービスを再起動する
systemctl restart httpd
起動確認と初期設定¶
ブラウザから指定のアドレスでアクセスが出来ることを確認し、管理者アカウントを作成する。
ウィザードに従い管理者情報を登録し、「コントロールパネル」を開いて、サーバ情報などの「!」マークのある情報を設定する。
それ以外に特にやった方が良さそうなものを以下に記載
プッシュ通知の設定¶
- 次のコマンドを実施する
npx web-push generate-vapid-keys
- 表示された秘密鍵と公開鍵を「コントロールパネル」の「ServiceWorker」に登録して有効化する。
メール通知の設定¶
- 「コントロールパネル」の「メールサーバー」にSMTPサーバを登録して有効化する。
- 「配信テスト」でメールを受信出来ることを確認する
- クローズ環境のメールなどで「アドレスが無効」として登録出来ない場合、「コントロールパネル」の「セキュリティ」で「Active Email Validation」を無効化すると良いかも。
検索機能の有効化¶
- 「コントロールパネル」の「ロール」の「ベースロール」で「ノート検索」を有効にすることで検索が可能になる。
- 連合サーバを検索する場合はconfigの「meilisearch」を適宜設定する必要があるようだが、今回は除外