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

【v11~】Misskey入れてみる備忘録

前書き

以前、Misskey v10までのバージョンのものを書いていましたが、v11以降からPostgresqlを使用する関係で、インストール手順が変更となりました。v11以降のインストール方法を説明します。

v10以前のものはこちら: https://qiita.com/YuzuRyo61/items/7105d16ac75c78899f1c

なお、この記事はUbuntu及びDebian系列をベースに解説しています。

Step 0. 既存パッケージのアップグレード

これはもうお決まり手順。

sudo apt update
sudo apt upgrade -y

アップグレード後は再起動推奨で。

Step 1. 必要パッケージのインストール

Misskeyは、Node.js(v11.10.1以降)、PostgreSQL(v10以上)、Redisが必須。オプションとしてElasticsearchもありますが、今回は割愛。yarnが推奨されているため、yarnも導入します。

あとはリバースプロキシとして、nginxを使用します。

Node.js

Nodesource経由でNode.jsをインストールします。CentOSなど、別のパッケージ管理システムのLinuxの場合はこちらのリポジトリのREADMEを参照してみてください。

# Using Ubuntu
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt-get install -y nodejs

https://github.com/nodesource/distributions#installation-instructions

yarn

yarnの公式リポジトリから導入します。

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt-get update && sudo apt-get install yarn

https://classic.yarnpkg.com/ja/docs/install#debian-stable

PostgreSQL

デフォルトのリポジトリから。

sudo apt install postgresql-10 postgresql-server-dev-10

Redis

これもこのままデフォルトのリポジトリから引っ張っておk。

sudo apt install redis-server

nginx

nginx公式のリポジトリから。特にこだわりはないので安定版を入れます。

sudo apt install curl gnupg2 ca-certificates lsb-release
echo "deb http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list
curl -fsSL https://nginx.org/keys/nginx_signing.key | sudo apt-key add -
sudo apt-key fingerprint ABF5BD827BD9BF62 #これは確認用。
sudo apt update
sudo apt install nginx

http://nginx.org/en/linux_packages.html#Ubuntu

その他

build-essentialを導入します。

sudo apt install build-essential

仕上げ

サービスを起動しておきます。

sudo systemctl start nginx postgresql redis-server
sudo systemctl enable nginx postgresql redis-server

Step 2. 運用ユーザーの作成

起動用のユーザーを指定しておきます。ユーザー名は任意です。

sudo adduser --disabled-password --disabled-login misskey
sudo su - misskey

Step 3. リポジトリをクローン

リポジトリをクローンして最新のリリースにチェックアウトします。

git clone -b master https://github.com/syuilo/misskey.git
cd misskey
# バージョンは https://github.com/syuilo/misskey/releases/latest を参照してください
git checkout <12.x.x>

Step 4. パッケージをインストール

yarnでパッケージをインストールします。yarn.lockが置き換わらないようにしておきます。

yarn install --pure-lockfile

Step 5. 設定ファイル作成

example.ymlをコピーしてdefault.ymlを作成します。

cp .config/example.yml .config/default.yml

中身のコメントに従ってdefault.ymlを設定します。

Step 6. ビルド

Misskeyをビルドします。これには時間がかかる場合があります。

NODE_ENV=production yarn build

Step 7. データベース初期化

データベースを利用できるように初期化しておきます。

yarn run init

Step 8. 起動チェックとsystemdに登録

以下のコマンドで起動確認ができます。確認できたらCtrl-Cでサーバーを停止します。

NODE_ENV=production yarn start

systemdに登録

/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=syslog
StandardError=syslog
SyslogIdentifier=misskey
Restart=always

[Install]
WantedBy=multi-user.target

設定したらsystemctl daemon-reloadを実行して、サービスリストを更新してください。

systemctl enable misskeyで起動時にmisskeyが稼働します。

systemctl start misskeyで起動しておきます。

Step 9. nginxリバースプロキシ設定

最後にnginxのリバースプロキシを設定します。

nginxの設定で読める場所であれば、ファイル名は任意です。
以下の内容をコピーして、変更が必要な部分をしてください。

/etc/nginx/conf.d/misskey.conf
# Sample nginx configuration for Misskey
#
# 1. Replace example.tld to your domain
# 2. Copy to /etc/nginx/sites-available/ and then symlink from /etc/nginx/sites-enabled/
#    or copy to /etc/nginx/conf.d/

# For WebSocket
map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

proxy_cache_path /tmp/nginx_cache levels=1:2 keys_zone=cache1:16m max_size=1g inactive=720m use_temp_path=off;

server {
    listen 80;
    listen [::]:80;
    server_name example.tld; # 本番用FQDNに変更(default.ymlで設定したものと同様のもの)

    # For SSL domain validation
    root /var/www/html;
    location /.well-known/acme-challenge/ { allow all; }
    location /.well-known/pki-validation/ { allow all; }
    location / { return 301 https://$server_name$request_uri; }
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name example.tld; # 本番用FQDNに変更(default.ymlで設定したものと同様のもの)
    ssl_session_cache shared:ssl_session_cache:10m;

    # To use Let's Encrypt certificate
    ssl_certificate     /etc/letsencrypt/live/example.tld/fullchain.pem; # 変更
    ssl_certificate_key /etc/letsencrypt/live/example.tld/privkey.pem; # 変更

    # SSL protocol settings
    ssl_protocols TLSv1 TLSv1.2; # nginxがTLSv1.3に対応していれば追加を推奨
    ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:AES128-SHA;
    ssl_prefer_server_ciphers on;

    # Change to your upload limit
    client_max_body_size 80m; # アップロードするファイルの上限を変える場合は変更

    # Proxy to Node
    location / {
        # Misskeyが作動しているローカルのアドレスに変更(ポートなどを弄ってなければそのままで可)
        proxy_pass http://127.0.0.1:3000; 
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
        proxy_http_version 1.1;
        proxy_redirect off;

        # For WebSocket
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;

        # Cache settings
        proxy_cache cache1;
        proxy_cache_lock on;
        proxy_cache_use_stale updating;
        add_header X-Cache $upstream_cache_status;
    }
}

https://github.com/syuilo/misskey/blob/develop/docs/examples/misskey.nginx

設定したらsystemctl restart nginxで変更を適用します。
(sudo nginx -tで設定に不備がないかを検証することを推奨します)


これで設定は完了です :tada:

Ex. アップデートするには

Misskeyのアップデートがリリースされたら、まずはMisskeyを設置しているディレクトリまで移動します。そして以下のコマンドを上から順に入力します。

git fetch
# 最新のバージョンのタグを入力。最新バージョンは https://github.com/syuilo/misskey/releases/latest を参照してください
git checkout <12.x.x> 
yarn install --pure-lockfile
NODE_ENV=production yarn build
yarn migrate

以上のコマンドを入力し、エラーがでなければmisskeyのサービスを再起動します。これでアップデートは完了です。

YuzuRyo61
"Hello World!"と書き続けているだけの人。 Pythonが主成分。 ウェブアプリ好き。それ系書き書きしてます。
https://yuzulia.com
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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした