マニュアルインストール時のトラブルシューティング

2018年10月07日 / 2021年12月20日 最終更新 / 文責 aqz/tamaina

MisskeyInstallBattle参加者が増えましたが、それに伴い時期を追うごとに重軽傷者が増加しています。
この記事ではそのような負傷者を減らすため、過去に事故が起きてしまった個所の傾向と対策をわかりやすく解説します。

まず最初に、構築の手引きを熟読してください。

また、拙著のUbuntu向けsystemd版解説Oracle Cloud版詳細解説も参考までにお読みいただけると幸いです。

Ubuntu向けシェルスクリプトのお知らせ

Ubuntu向け解説はコピペばかりでつまらない!時間がかかる!とにかく面倒!

……あれ、コピペだけでできるなら、つまり完全自動化できるのでは?

というわけで、シェルスクリプトでほぼ全部やってくれるやつを作ってみました!
詳細と使用方法はこちらから! https://github.com/joinmisskey/bash-install#readme

ドメインの購入とCloudflareのセットアップ、サーバーの確保についてはご自身でご準備ください。

シェルスクリプトに不具合があれば製作者(aqz)にお知らせいただければと思います。

インストールとビルド

構築の手引きをよく読みましょう。

ImageMagick関連

ImageMagickは不要です!

ビルドが失敗する

Misskeyのビルドには、経験則上、最低でも2GBのメモリが必要となっています。
サーバーをスケールアップする手もありますが、お使いのPCでビルドしてサーバーにデプロイするという手もあります。

なんだかうまくいかない

  • 構築の手引きをよく読みましょう。
  • node.jsのバージョンが古いかも?
    • 新しめのバージョンにしましょう。
  • インストールやビルドの際にErrorとかWARNとかが出てくることがありますが、問題ない場合もあります。とりあえずnpm startして動作確認しちゃいましょう。
  • node-gypがインストールされていないかも?
    • apt install build-essentialを試す。
    • Windowsはこの記事も参考にしてみる。
  • これでもだめそうだったら、最初から構築の手引きの手順に従ってやり直してみてください。

バージョンアップ後に不具合が発生した

  • 構築の手引きおよびリリースノートをよく読みましょう。
  • Misskeyのバージョンアップ時にはしっかりpnpm installpnpm run migrateしてください。それでも直らない場合、pnpm run clean-all && pnpm installを試し、pnpm run build && pnpm run migrate && pnpm startしてみてください。
  • これでもだめそうだったら、最初から構築の手引きの手順に従ってやり直してみてください。

設定

構築の手引きをよく読みましょう。

.config/default.ymlで設定を行います。 .config/example.ymlをコピーし、コメントに従って記述します。

(YAML形式では、#から行末まではコメントとして扱われます。)

URLとポート番号

URLとポート番号のしくみは、少し分かりにくいと思います。

.config/example.ymlに「Port and TLS settings」として説明図付きで順に書かれていますので、それに沿って設定をしていきましょう。 本文の解説を日本語訳しながらやっていきます。

URLの設定

# Final accessible URL seen by a user.
# 最終的にユーザーがアクセスするURL
url: https://example.tld/

urlには、サーバーにブラウザでアクセスしたときアドレスバーに表示される(したい)URLを書きます。

ポートの設定

#   ┌───────────────────────┐
#───┘ Port and TLS settings └───────────────────────────────────
#### ポートとTLSの設定         ####################################

# Misskey requires a reverse proxy to support HTTPS connections.
# MisskeyでHTTPS接続をサポートするにはリバースプロキシが必須です。
#
#                 +----- https://example.tld/ ------------+
#   +------+      |+-------------+      +----------------+|
#   | User | ---> || Proxy (443) | ---> | Misskey (3000) ||
#   +------+      |+-------------+      +----------------+|
#                 +---------------------------------------+
#
#   You need to set up a reverse proxy. (e.g. nginx)
#   この方法では、リバースプロキシ(例: nginx)をセットアップする必要があります。
#   An encrypted connection with HTTPS is highly recommended
#   because tokens may be transferred in GET requests.
#   GETリクエストでトークンがURLに含まれる可能性があるため、
#   HTTPSによる暗号化を強く推奨します。
# The port that your Misskey server should listen on.
# Misskeyサーバがリッスンするポート
port: 3000

この例では、Misskeyはポート3000で通信します。 リバースプロキシでは、ローカル側の宛先にこのポート番号を指定します。


npm startやアクセス時によく遭遇するエラー

npm startでサーバーを立てられたものの、その後不具合に遭遇してしまう場合もあります。

まず、構築の手引きをよく読みましょう。

YAMLのエラーが出る

default.ymlの構文にミスがある可能性があります。 行頭に余分なスペースはありませんか?

redisに接続できない

redis-serverは起動していますか? 何らかの接続数の上限に達していませんか?

11.20.2より前のバージョンのMisskeyはredisのパスワードを解くことができません。以下の2点を確認してください。

  • redisにパスワードを設定しない。
  • default.ymlredis:pass:の行をコメントアウトする。

上部に「開発ビルドです」と書かれた赤いバーが表示される

サーバーを公開する場合は必ずproductionビルドを使いましょう。

製品ビルドにするには、環境変数がNODE_ENV=productionになるように設定しnpm run build && npm startします。

新規登録できない

APIに接続できないようです。 default.ymlの冒頭のurl:が正しく設定されているか確認しましょう。 Node.jsのバージョンや、インストールの設定ももう一度よく確認しましょう。

また、正しくdefault.ymlが書かれていますか?

タイムラインの表示に問題が発生する、リアルタイムでTLが更新されない

タイムラインの読み込みに失敗する場合、mongoDBやPostgreSQLのバージョンが古い可能性があります。 PostgreSQLはなるべくv13にしてください。

redisの接続も確認した方がよいでしょう。 → redisに接続できない? を参照

永遠に「再接続中」と右下に表示される、リアルタイムでTLが更新されない

プロキシを利用している場合、それがWebSocket通信を阻害している可能性が考えられます。

オブジェクトストレージ使用時、不具合が出る

オブジェクトストレージの権限の設定が厳しくなっている可能性があります。「ファイル(オブジェクト)が誰でも取得可能」なように権限を設定してみてください。 また、default.ymlをもう一度確認してみてください。

S3 example (with CDN, custom domain)

S3 example (with CDN, custom domain)は、AWSのデフォルトのドメインではなく独自ドメインでストレージを公開したい場合の設定です。 endpointと公開ドメインが同じサービスの場合はS3 exampleのようにbaseUrlは明記しなくてよく、さらにregionの概念がないサービスの場合はregionの行は必要ありません。

S3互換サービスでの設定

Misskeyではオブジェクトストレージの接続にaws-sdkを利用しています。 Amazon S3に互換性のあるオブジェクトストレージであれば利用できる可能性があります。

各サービス/ソフトウェアのドキュメントをよく読み、設定してみてください。

ローディングが終わらない

Cloudflare を使用している場合は、Rocket LoaderやAuto Minifyが有効になっていないか確認してください。有効になっている場合は無効にすることで解決する場合があります。


まったく解決しなかった場合

以下の順序を試してみてください。

  1. Misskeyのドキュメントをよく読む。
  2. Googleで検索してみる。
  3. MisskeyリポジトリのIssuesを検索してみる(同じエラーに遭遇している場合や、Misskeyのバグの可能性もあります)。
  4. 検索してどうしても見つからなかったら、専門家に質問してみてください。
    1. MisskeyのDiscordサーバーなどで聞いてみる
    2. 開発者(aqzやしゅいろ)にリプライやダイレクト投稿を送信して聞いてみる