Misskeyを簡単に建ててみた(メモ用)
ほぼまっちゃてぃーさんのブログをコピペしてるだけ。
自分のメモ用なので多少雑にまとめてる。
引用元
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