Help us understand the problem. What is going on with this article?

Misskey構築手順メモ

公式ページに親切丁寧にインストール手順が書かれていますが、主にそれ以外の部分についての補足的なメモです。

前提条件

  • DNSが設定済みであること
  • サーバがインターネットに接続できること
  • 自分以外の第三者にも解放する場合、電気事業者の届け出が済んでいること
  • Fedora Server 33 x64、Misskey v12.65.7 (検証時点のMaster) にて動作確認

はじめに

必ず公式マニュアルを読むこと!

Misskey構築の手引き

このドキュメントでは、公式手順の推奨通り、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

サービスの自動起動設定と起動

postgresユーザ作業
$ 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」 を使用する。

https://rpmfusion.org/Configuration

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 リポジトリの導入

https://yarnpkg.com/en/docs/install#linux-tab

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

以上

kumasun
くまさん学習帳 PHP, PgSQL, MySQL, Arduino, RasPi など
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away