前書き
以前、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
※権限エラーでうまく行かないときは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
その他
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に登録
[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の設定で読める場所であれば、ファイル名は任意です。
以下の内容をコピーして、変更が必要な部分をしてください。
# 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
で設定に問題がないかを検証することを推奨します)
これで設定は完了です
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
)します。これでアップデートは完了です。