LoginSignup
13
4

More than 1 year has passed since last update.

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

Last updated at Posted at 2020-04-15

前書き

以前、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(v12以降。LTS版を推奨)、PostgreSQL(v10以上)、Redisが必須。オプションとしてElasticsearchもありますが、今回は割愛。yarnが推奨されているため、yarnも導入します。

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

※Misskeyのバージョンによって対応するNode.jsなどが異なる場合がありますので、公式のセットアップガイドをご覧ください。

Node.js

Node.jsのインストール方法はお好きな方法でインストールしてください。
自分は"n"を勧めています。(バージョン変更が容易なため)

n (おすすめの方法)

Linuxで手軽にNode.jsのバージョン管理ができる"n"をインストールします。

sudo apt install nodejs npm
sudo npm i -g n
sudo n lts
node -v # バージョン確認のためのコマンド。最新のLTSのバージョンになっていればOKです。

Nodesource

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

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

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

yarn

npmでインストールします。

npm install -g yarn

https://yarnpkg.com/getting-started/install

※権限エラーでうまく行かないときはsudo npm install -g yarnとやるとうまくいくかもしれません。

PostgreSQL

デフォルトのリポジトリから。特に事情がなければ最新のバージョンをお勧めします。

sudo apt install postgresql-12 postgresql-server-dev-12

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

仕上げ

サービスを起動しておきます。Misskeyの準備が整ってからでも問題ありません。

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. リポジトリをクローン

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

※従来のリポジトリURLから変更になっているのでご注意ください。

git clone -b master https://github.com/misskey-dev/misskey.git
cd misskey
# バージョンは https://github.com/misskey-dev/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 # yarn run migrate でも構いません

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/local/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
# 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 (Let's EncryptのHTTPによる検証で必要であれば入れておいてください。)
    root /var/www/html;
    location /.well-known/acme-challenge/ { allow all; }
    location /.well-known/pki-validation/ { allow all; }

    # HTTPからHTTPSへ変更するためのリダイレクト
    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.2 TLSv1.3; # 特に事情がなければTLSv1.2以降を有効にしておいてください
    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/misskey-dev/misskey/blob/develop/docs/examples/misskey.nginx

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


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

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

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

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

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

13
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
4