🦆

Calckeyサーバ構築メモ

2023/04/25に公開

Misskey fork である Calckey のサーバを構築したので手順をメモ。
記事執筆時点での最新バージョンである v13.2.0-beta6 をインストールした。

なお、アプリケーションに依存しない部分は以前実施した Mastodon お一人様サーバ構築メモ の手順をほぼそのまま流用したため、全く同じ作業については該当箇所へのリンクのみ記載した。

作業は M1 MacBookAir 上で実施した。Docker は使用していない。

基本情報

サーバ

KAGOYA CLOUD VPS 2コア/2GB/25GB

ドメイン

さくらのドメイン で契約中のドメインに、本サーバ用のサブドメインをぶらさげている。
本記事では calckey.example.com とする。

OS

Ubuntu 20.04 (22.04.1 LTS がいい ようだが、前出の Mastodon サーバと揃えた)

構築時の手順

サーバを作る/DNS設定

ここは Mastodon お一人様サーバ構築メモ の手順をそのまま実施。

サーバに必要なソフトウェアをインストール

下記については、Mastodon お一人様サーバ構築メモ の手順をそのまま実施した。

色々インストール

ここも Mastodon お一人様サーバ構築メモ の手順をそのまま実施したが、不要なパッケージもおそらくあるはず。

Node.js

ここは、推奨されている 19 系をインストール。

curl -sL https://deb.nodesource.com/setup_19.x | bash -

Rust

v13.2.0-beta4 から必要になったので入れる。

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

DBセットアップ

設定ファイルの編集

Mastodon お一人様サーバ構築メモ の手順と同じ。(サーバ構成が同じのため)

DB作成

psql postgres -c "create database calckey with encoding = 'UTF8';"

DBユーザ・パスワード作成

sudo -u postgres psql
CREATE USER calckey CREATEDB;
ALTER ROLE calckey WITH password 'calckey';
¥q

Calckey セットアップ

ここからはほぼ独自の手順となっていく。

作業用ユーザを作って切り替え

adduser --disabled-login calckey
su - calckey

ソースコードを取得してビルド

Calckey は codeberg でホストされている。

git clone https://codeberg.org/calckey/calckey.git
cd calckey
git checkout v13.2.0-beta6
corepack enable
corepack prepare pnpm@latest --activate
pnpm i

設定ファイルを編集

cp .config/example.yml .config/default.yml
vi .config/default.yml
diff .config/example.yml .config/default.yml

自分のドメインにあわせて書き換える。

9c9
< url: https://example.tld/
---
> url: https://calckey.example.com/
44,45c44,45
<   user: example-calckey-user
<   pass: example-calckey-pass
---
>   user: calckey
>   pass: calckey

nginx を設定

ここは root で作業する。

設定ファイルをコピーして編集

cp /home/calckey/calckey/calckey.nginx.conf /etc/nginx/sites-available/ && cd /etc/nginx/sites-available/
ln -s /etc/nginx/sites-available/calckey.nginx.conf /etc/nginx/sites-enabled/calckey.nginx.conf
vi calckey.nginx.conf
diff /home/calckey/calckey/calckey.nginx.conf /etc/nginx/sites-available/calckey.nginx.conf

自分のドメインにあわせて書き換える。

14c14
<     server_name example.tld;
---
>     server_name calckey.example.com;
26c26
<     server_name example.tld;
---
>     server_name calckey.example.com;
33,34c33,34
<     ssl_certificate     /etc/letsencrypt/live/example.tld/fullchain.pem;
<     ssl_certificate_key /etc/letsencrypt/live/example.tld/privkey.pem;
---
>     ssl_certificate     /etc/letsencrypt/live/calckey.example.com/fullchain.pem;
>     ssl_certificate_key /etc/letsencrypt/live/calckey.example.com/privkey.pem;

SSL証明書を作成する

いちど nginx を止めてから certbot で発行し、ふたたび起動する。

systemctl stop nginx
certbot certonly --standalone -d calckey.example.com
systemctl start nginx

Calckeyの起動(PM2)

プロジェクトの README.md に PM2 について記載があるので使ってみた。systemctl による起動でもよさそうな気はするが不明。
追記: pm2 CLI にて systemd への登録が行える ようです 🐣

インストールして起動する。

npm install pm2 -g
pm2 start "NODE_ENV=production pnpm run start" --name Calckey

ブラウザで、以下からアクセスできれば成功!!
https://calckey.example.com

うまくいかない場合、以下コマンドで調査する。私はなぜか IPv6 でしか LISTEN されないという現象が起きたが、何度かリトライしているうちに直った。原因は不明。

pm2 log Calckey
pm2 monitor Calckey

PM2の設定すべてをやり直したいときはこれで。

pm2 delete all

やらなかったこと

  • メールサーバ(SMTP)連携
  • オブジェクトストレージ(Amazon S3 等)連携
    いずれも管理メニューに設定のUIがあるので Mastodon サーバ構築時と同じ要領でできそうに見える。

更新履歴

2023.4.26 pm2 CLI からの systemd 登録について追記しました。

Discussion