公式ページに親切丁寧にインストール手順が書かれていますが、主にそれ以外の部分についての補足的なメモです。
前提条件
- DNSが設定済みであること
- サーバがインターネットに接続できること
- 自分以外の第三者にも解放する場合、電気事業者の届け出が済んでいること
- Fedora Server 33 x64、Misskey v12.65.7 (検証時点のMaster) にて動作確認
はじめに
必ず公式マニュアルを読むこと!
このドキュメントでは、公式手順の推奨通り、Misskey専用ユーザを作成し、ホームディレクトリに構築することとする。
また、リバースプロキシ経由でサービスを公開するものとする。
サーバの初期設定
諸々最新化したり、Misskey専用ユーザを作成したりしておく
$ sudo dnf update
$ sudo useradd misskey
$ sudo reboot
PostgreSQLのインストールと初期設定
PostgreSQL は v10.x以降をインストールする。
$ sudo dnf install -y postgresql-server
$ sudo postgresql-setup --initdb
PostgreSQLをインストールし、初期化する
$ sudo vim /var/lib/pgsql/data/postgresql.conf
pgTune( http://pgtune.leopard.in.ua/ )を参考に、サーバのスペックに合ったパラメータを設定する。
バージョンよって設定値に多少差があるので、導入したバージョンを確認すること。
$ sudo vim /var/lib/pgsql/data/pg_hba.conf
必要に応じて、アクセス権限の設定を行う。
(Unix Socket経由での接続の仕方が現時点で不明のため、127.0.0.1/32に対してTCP/IPで接続できるようセットアップする)
$ sudo systemctl enable postgresql
$ sudo systemctl start postgresql
サービスの自動起動設定と起動
$ createuser -d misskey
$ createdb -O misskey misskey
$ exit
postgres(PostgreSQL管理者ユーザ)でMisskey用ユーザーを作成し、Misskey用ユーザ専用データベースを作る。
(Misskeyの初期マイグレーションにおいてはcreate database
が行われない?ため、データベース作成権限を与えていてもコケる)
リバースプロキシ(Nginx)のインストールと設定
ファイアウォールの開放
HTTP(80)およびHTTPS(443)を開放する。
以下は firewalld
がインストールされている環境での手順
ゾーン名等は適宜読み替えてください
現在のファイアウォールの状態を表示
$ sudo firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens3
sources:
services: ssh mdns dhcpv6-client
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
上記例では、public
ゾーンがアクティブになっており、ssh mdns dhcpv6-client
が許可されている。
HTTPとHTTPSを許可する
$ sudo firewall-cmd --add-service=http --zone=public --permanent
success
$ sudo firewall-cmd --add-service=https --zone=public --permanent
success
$ sudo firewall-cmd --reload
success
$ sudo firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens3
sources:
services: ssh mdns dhcpv6-client http https
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
public
ゾーンにて、http https
が追加で許可された。
SSL証明書の取得
Webサーバ用SSL証明書を取得しておく。無料のものであればLet's Encrypt
がおすすめです。
手順については割愛
Nginxのインストールと動作確認
sudo dnf install -y nginx
sudo mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.old
Nginxをインストールし、セキュリティのためデフォルトの設定ファイルを無効化する
(デフォルトの設定ファイルは無い場合もあるし、違う名前のこともある)
sudo vim /etc/nginx/conf.d/nginx.conf
公式リポジトリにあるNginx用サンプル設定ファイルを書き込む
https://github.com/syuilo/misskey/blob/develop/docs/examples/misskey.nginx
vim等で example.tld
を 使用するドメインに置換
:%s/example.tld/yourdomain.tld/g
SSL証明書へのパスも、正しいものに書き換える。
Nginxの起動と自動起動設定
$ sudo systemctl start nginx
$ sudo systemctl enable nginx
この状態で、ブラウザから http://yourdomain.tld
にアクセスしてみて、
https://yourdomain.tld
に転送された上で 502 Bad Gateway
表示になれば、ここまで問題なく構築できている。
依存性パッケージのインストール
Git, ffmpeg, node.js, yarn, redis 等々…
RPM Fusion リポジトリの導入
公式サイトのインストールコマンドを使用する。
「free」 を使用する。
Node.js リポジトリの導入
(デフォルトで新しめのNode.jsがインストールできる環境であれば不要かもしれない)
NodeSource Node.js Binary Distributions - Enterprise Linux based distributions
Node.js v12.x もしくは v14.x を導入する。
curl -sL https://rpm.nodesource.com/setup_14.x | sudo bash -
yarn リポジトリの導入
sudo curl -sL https://dl.yarnpkg.com/rpm/yarn.repo -o /etc/yum.repos.d/yarn.repo
各種パッケージのインストール
$ sudo yum install -y redis nodejs yarn ffmpeg make gcc-c++ git
Redisのスタートアップ起動設定と手動起動
$ sudo systemctl start redis
$ sudo systemctl enable redis
Misskey本体のインストール、サービス化
公式手順の3~7 を実行してください。
あとがき
- 自分用にメモした手順です。必要に応じて読み替えてください。
- こうしたほうがいいよ的なアドバイスを頂けると大変助かります
- 疑問点: PostgreSQL、RedisのUNIX Socket経由での接続方法
- わたしはこのあたりに生息しています: https://nagoyadon.jp/@kumasun
以上