👊

Misskeyを簡単に建ててみた(メモ用)

2023/05/03に公開約5,400字

ほぼまっちゃてぃーさんのブログをコピペしてるだけ。
自分のメモ用なので多少雑にまとめてる。

引用元

まっちゃてぃー本人のアカウント&サーバー

Misskey v13をDebian系で構築する
MisskeyをCloudflare argo tunnelで公開する

今回使うサーバー

DigitalOceanのDroplets

  • Region: Singapore(Japanがないので一番近いところにする)
  • OS: Ubuntu22.10 x64
  • Droplet Type: Basic
  • CPU: Premium Intel 4core
  • Mem: 8GB
  • Disk: NVMe SSD 160GB

必要な物

  • cloudflareのアカウント
  • ドメイン(事前にcloudflareに登録しておくこと)

0. やらなくていいこと・事前にして欲しいこと。

サーバーを建てたらcloudflareのレコードにipを入力しなくても大丈夫です。
cloudflareのArgo Tunnelにて設定します。

ubuntuのパッケージの更新をしておいてください。

sudo apt update && sudo apt upgrade -y

1. cloudflare側の設定

SSLの設定をする。

ホームから使うドメインのページへ。

SSL/TLS > 概要
フルに設定する。


Speed > 最適化
チェックを外す。

こいつもオフにして。


前のページに戻り、Zero Trustへ。

Access > Tunnnels

Create a tunnelを押す。

Name your tunnelにわかりやすい名前。
出来たらSave tuunel。

赤い枠で囲ってあるところを選択する。

出てきたコマンドをコピー。
コマンドのところをクリックするとコピー出来ます。

サーバーのconsoleにコマンドを貼り付けてください。
うまくいけばTunnelsのConnectorsにサーバーがいるはずです。

このように入力してください。出来たらSaveを押してもらって最初のページに戻されるのでStatusがHEALTHYになっていれば大丈夫です。


このようなエラーが出る人はレコードが邪魔してるので消してください。

cloudflareの設定はこれで終わりです。
閉じても大丈夫。

2. サーバー側の設定

必要な物をインストール

とりあえずこのコマンドを一個づつ貼り付けて実行しよう。

apt install -y build-essential ca-certificates gnupg2 lsb-release

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

curl -fsSL https://packages.redis.io/gpg | gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg

echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/redis.list

apt update

apt install -y nodejs redis ffmpeg postgresql-common

corepack enable

sh /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh -i -v 15

全て終わったら動作確認。

systemctl status redis-server

systemctl status postgresql

consoleに文字列が現れるのでactiveになっているか確認してください。

nodejsも入ってるか確認して。

node -v

v18.xx.xって表示されてればok。

ユーザーの作成・データベースの作成

ユーザーを作成しよう。
名前はmisskeyじゃなくてもいいけどわかりやすくするため。
質問されるけど適当にenter押して。

adduser --disabled-password --disabled-login misskey

DBを作る。

sudo -u postgres psql 

postgresのconsoleに入れたらこれを貼り付け。

# DB Version: 15
# OS Type: linux
# DB Type: web
# Total Memory (RAM): 8 GB
# CPUs num: 4
# Connections num: 100
# Data Storage: ssd

ALTER SYSTEM SET
 max_connections = '100';
ALTER SYSTEM SET
 shared_buffers = '2GB';
ALTER SYSTEM SET
 effective_cache_size = '6GB';
ALTER SYSTEM SET
 maintenance_work_mem = '512MB';
ALTER SYSTEM SET
 checkpoint_completion_target = '0.9';
ALTER SYSTEM SET
 wal_buffers = '16MB';
ALTER SYSTEM SET
 default_statistics_target = '100';
ALTER SYSTEM SET
 random_page_cost = '1.1';
ALTER SYSTEM SET
 effective_io_concurrency = '200';
ALTER SYSTEM SET
 work_mem = '10485kB';
ALTER SYSTEM SET
 min_wal_size = '1GB';
ALTER SYSTEM SET
 max_wal_size = '4GB';
ALTER SYSTEM SET
 max_worker_processes = '4';
ALTER SYSTEM SET
 max_parallel_workers_per_gather = '2';
ALTER SYSTEM SET
 max_parallel_workers = '4';
ALTER SYSTEM SET
 max_parallel_maintenance_workers = '2';

出来たら。

create user misskey with password '好きなパスワード';
create database misskey_db owner misskey; 
\q

これでユーザーとDBの設定が終わり。

3. Misskeyの構築

misskeyユーザーにログイン

sudo su - misskey

ログイン出来たらこれを実行。
nanoじゃなくてviでもいい。

git clone -b master --recursive https://github.com/misskey-dev/misskey.git --recurse-submodules
cd misskey
git checkout master
nano .config/default.yml 

エディタで開いたらこいつらを投げる。

url: https://example.tld/ #自分が使いたいドメインにする
port: 3000 
db:
  host: localhost
  port: 5432
  db: misskey_db
  user: misskey
  pass: example-misskey-pass #最初に設定したdbのユーザーのパスワード
redis:
  host: localhost
  port: 6379
id: 'aid'
proxyBypassHosts:
  - api.deepl.com
  - api-free.deepl.com
  - www.recaptcha.net
  - hcaptcha.com
  - challenges.cloudflare.com
signToActivityPubGet: true

初期化とビルドをする。

NODE_ENV=production pnpm install --frozen-lockfile && pnpm build && pnpm run init

終わったらsystemdに登録する。
そうすることで自動で起動する。

misskeyユーザーからログアウトする。

sudo nano /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=journal
StandardError=journal
SyslogIdentifier=misskey
Restart=always

[Install]
WantedBy=multi-user.target

設定を保存して起動させる。

sudo systemctl daemon-reload

sudo systemctl enable --now misskey

avtiveになってればいい。

sudo systemctl status misskey

Discussion

ログインするとコメントできます