Ⓜ️
GCE x Misskey by Ubuntu
自身の設定メモです。
env
GCEマシンタイプ: e2-medium (e2-smallではメモリ不足でMisskeyのビルドが完了しなかった)
Ubuntu: Ubuntu 20.04.6 LTS
Misskey: 13.14.2
PostgreSQL: 15.3 (Ubuntu 15.3-1.pgdg20.04+1)
Redis server: 7.0.12
参照link
Misskeyについて
以下の記事を参考にしました
バックアップについて
手順
アップデート
$ sudo apt update; sudo apt full-upgrade -y; sudo reboot
ユーザーの作成
$ sudo adduser --disabled-password --disabled-login misskey
Node.js
sudo apt install -y curl
curl -sL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
# Node.jsがインストールされたので、バージョンを確認する。
node -v
# corepack enable
sudo corepack enable
PostgreSQL
sudo apt install -y postgresql-common
sudo sh /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh -i -v 15;
# systemctlでデーモンの状態を確認。
systemctl status postgresql
ユーザーとデータベースの作成の場合
sudo -u postgres psql
CREATE ROLE misskey LOGIN CREATEDB PASSWORD 'fuga';
CREATE DATABASE mk1 OWNER misskey;
dumpファイルからリストアする場合
何らかの方法でダンプファイルをアップロードする
$ gzip -c -d dump.gz > dump.sql
$ sudo -u postgres psql -f dump.sql
Redis
$ sudo apt install -y curl ca-certificates gnupg2 lsb-release
$ curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
$ sudo apt update
$ sudo apt install -y redis
$ systemctl status redis-server
nginx
$ sudo apt install ubuntu-keyring
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
$ gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg
出力に 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 を確認する
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list
$ echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" | sudo tee /etc/apt/preferences.d/99nginx
$ sudo apt update
$ systemctl status nginx
activeならOK。
そうでなければ、次のコマンドを実行。
$ sudo systemctl start nginx
$ sudo systemctl enable nginx
$ systemctl status nginx
$ curl http://localhost
<title>Welcome to nginx!</title>と表示されればOK
Other
$ sudo apt update
$ sudo apt install -y git build-essential
Firewall
$ sudo ufw enable
$ sudo ufw default deny
$ sudo ufw limit 22
$ sudo ufw allow 80
$ sudo ufw allow 443
sudo ufw status
systemctlで永続化
$ sudo systemctl enable ufw
CloudFlare
sudo apt install -y certbot python3-certbot-dns-cloudflare
$ sudo mkdir /etc/cloudflare
$ sudo vi /etc/cloudflare/cloudflare.ini
cloudflare.iniを以下のように編集
dns_cloudflare_email = example@mail.com
dns_cloudflare_api_key = xxxxxxxxxxxxxxxxxxxxxxxxxx
$ sudo chmod 600 /etc/cloudflare/cloudflare.ini
$ sudo certbot certonly --dns-cloudflare --dns-cloudflare-credentials /etc/cloudflare/cloudflare.ini --dns-cloudflare-propagation-seconds 60 --server https://acme-v02.api.letsencrypt.org/directory -d example.tld -d *.example.tld
*Congratulations!*と表示されたらOK
生成された.pemファイルのパスは今後使うので記録する
Misskey install
$ sudo su - misskey
$ git clone -b master https://github.com/misskey-dev/misskey.git --recurse-submodules
$ cd misskey
$ git checkout master
必要なnpmパッケージをインストール。
$ NODE_ENV=production pnpm install --frozen-lockfile
Misskey setting
default.yml
$ vi .config/default.yml
以下の修正、適宜変更する
# ● Misskeyを公開するURL
url: https://example.tld/
# ポートを3000とする。
port: 3000
# ● PostgreSQLの設定。
db:
host: localhost
port: 5432
db : mk1 # 〇 PostgreSQLのデータベース名
user: misskey # 〇 PostgreSQLのユーザー名
pass: hoge # ● PostgreSQLのパスワード
# Redisの設定。
redis:
host: localhost
port: 6379
# IDタイプの設定。
id: 'aid'
# syslog
syslog:
host: localhost
port: 514
nginx setting
root権限にて
$ exit
$ sudo vi /etc/nginx/conf.d/misskey.conf
Misskey Hubの設定例をnanoへコピー&ペーストし、次の部分を自分のものに書き換える。
- 12行目: ドメイン名
- server{server_name}
- 24行目: ドメイン名
- server{server_name}
- 31-32行目: 証明書へのパスをCertbotで取得したものに (基本的にexample.tldを置き換えるだけでOK)
- 55行目 (If it's behind another reverse proxy or CDN, remove the following.) から4行を削除
設定ファイルがきちんと機能するか確認。
$ sudo nginx -t
$ sudo systemctl restart nginx
$ sudo systemctl status nginx
Misskey build
misskeyユーザーにログイン
$ sudo su - misskey
ビルド
$ cd misskey
$ NODE_ENV=production pnpm run build
データベースの初期化
※ dumpファイルからリストアした場合でもスキップしない
$ pnpm run init
Misskey run
$ NODE_ENV=production pnpm run start
PostgresのRoleのパスワードの変更
変更したい場合
ALTER ROLE misskey WITH PASSWORD 'hoge';
Misskeyのデーモンを作成
Ctrl+Cでプロセスをキルし、Misskeyをデーモンで起動する設定をする
ルート権限で行う
$ exit
sudo vi /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 misskey
$ sudo systemctl start misskey
Discussion