misskeyの自分用サーバをつくる
備忘録です。情報が古くなる可能性があります。ごちゃごちゃです許して
いわゆるおひとりさまインスタンスというものを立てました。
用意するもの
独自ドメイン
GoogleDomainで取得した
追記:のちほどCloudFlareに移管しました
VPS
Cloudflareのアカウントはとりあえず不要の手順
概要
misskeyをdockerで構築します
冗長化?知らないこですね……
readmeをよく読もう
物理サーバ機でつくる場合
ラズパイとか
ご家庭に余ってるPCとか
ぼくのおうちの回線は強くないので今回は選択肢から外した
大いに参考にしたリンク:
何はなくともとりあえず最新の公式ドキュメントを見る
構築中になんか詰んだときはリリースノートやgitのissue・discussionも確認する
インスタンス立てたあとの設定など
設定ファイルの内容など
noel氏のブログ、misskeyのバージョンは古い・自力インストール版の手順
今回はmisskeyバージョン 12.119.1、インストール手順はDocker編でゆく
GoogleDomainのDNSレコードを設定しておく
レコードタイプ A
ホスト (空白)
TTL デフォルトのまま
IPアドレス VPSのグローバルIPアドレス
サブドメイン(sub.example.com みたいな)を指定する場合は
Aレコードを追加
ホスト名をsubにする
操作するPCの端末でssh-keygen
公開鍵と秘密鍵をつくる
.ssh/configを作成して内容をかく
VPS開通したら
VPSの管理Webサイト上でポート許可設定を確認する
22(ssh)が外部と通信許可されていること
80、443あたりも確認
サーバにログインする
sshコマンドで接続
rootでログインする
作業用のユーザーを作る
sudoできるようにする
SSH接続の設定
作業ユーザーに切り替える
サーバーにauthorized_keysを配置
permissonに注意する
sshdの設定を変更
ルートログイン禁止
パスワードログイン禁止
sudo sshd -t で設定変更ができているかをテストする
エラーが出力されないことを確認
sshdを再起動
もう一個別途ターミナルを開いてssh接続できることを確認する
システムのアップデート
sudo apt update
インストール可能なパッケージの一覧を更新
sudo apt upgrade
アップデートをしてくれる
swap足す
2GBを追加
ビルドおわったら要らないかも 要確認
dockerとdocker-composeコマンドが動くようにする
Misskeyをダウンロード
git clone -b master https://github.com/misskey-dev/misskey.git
cd misskey
git checkout master
設定ファイルをつくる
.configフォルダの下に
default.yml
docker.env
それぞれサンプルからコピーしてくればOK
設定ファイルの内容を編集
default.yml
URL
ここのやり直しは効かないので注意せよ みたいなことが書いてある
https://ドメイン名を記載する
Postgresqlのhostをdbに
Redisのhostをredisに
ユーザ名・パスワードはdocker.envに書くものと同じにする
docker.env
ユーザ名・パスワードはdefault.ymlに書くものと同じにする
順序が逆なので注意
misskeyのビルド
sudo docker-compose build
これは一回でいい(らしい)
misskeyデータベースの初期化
sudo docker-compose run --rm web yarn run init
ここでエラーになってワタワタした
最終的にいつの間にかできていた misskey/db フォルダを削除してコマンド打ち直したら通った
misskeyを起動する
sudo docker-compose up -d
エラーなければOK
sudo docker-compose ps
立ち上がっているかの確認
アクセスできるか確認する
curl localhost:3000
misskeyのトップページっぽいレスポンスが出力されればOK
nginxとcertbotを合わせた機能をもつらしい
nginxをインストールする
sudo apt install nginx
certbot(let's encrypt)をインストールする
sudo apt install certbot python3-certbot-nginx
firewallの設定
sudo ufw statusでルールを確認
sudo ufw allow 'Nginx Full'
80と443を許可してくれるルールを追加
let's encryptの証明書発行
sudo certbot --nginx -d ドメイン -d サブドメイン
このとき nginxのconfファイルがあるとエラーになるのでいったんリネームするなりしておく
/etc/nginx/conf.d/ の中にほにゃらら.confがない状態に
この辺何かを勘違いしている気がする
nginxのconfファイルを設定
なんかいい感じに
nginx -tで設定ファイルの記述が正しいかテストできる
webブラウザから https://ドメイン名(misskeyのURLとして設定したやつ) でアクセス
misskeyの管理者を作りましょうの画面がでればOK
管理者を作成してから設定したこと:
リモートのファイルをキャッシュする
無効にした
新規登録を制限する
誰でも新規登録できるようにする をオフ
こうすると新規登録時に招待コードが必要になる
招待コードは管理者の設定画面から都度発行できるみたい
連合に参加する(リレーサーバーの追加)
リレーサーバーの規約をよく読んでつかわせてもらう
カスタム絵文字をつくる
たのしそう!!!
他のインスタンスから絵文字をインポートすることもできる が権利関係には注意
疑問:
misskeyのURLにはサブドメインを登録したつもりだったが、もとのドメインにアクセスしてもmisskeyの画面がでてきちゃった
google domainのDNSレコードをサブドメインのやつだけにして無理やり無効化
無効化できてるのかはわからん
たぶんnginxの設定をどうにかする必要がある
nginxのconfファイルをいじる必要あり
このへんを参考にIPアドレス直打ちを拒否する設定に
misskeyの管理者ユーザと普段使いのユーザは別にすべき?
とりあえず分けたけど一緒でもいいのかも
あとから管理者権限を別のユーザにうつすことはできるのか
DB操作になるよね たぶん
ユーザ切り替えをすればよいため放置
追記:misskeyのバージョンアップ(v12→v13)により、misskey上で各ユーザーに管理者ロールを付与することができるようになった。のでこれで解決ですね
cronとかスケジューラーの設定
docker-compose up -d の自動化?
lets encryptの自動更新
これがしんぱい
90日で更新が切れるようになっている
Expiry Date: 2023-03-24 12:40:05+00:00 (VALID: 89 days)
インストール時にcronを作ってくれているので更新できる 多分
リレーがうまくいってない?
ドメインが新しいサイトとは通信しない設定になっているサーバも結構あるみたい
misskey.ioとか
追記:misskey.ioとは1ヶ月後に疎通できるようになりました。 :yattane:
連合タイムラインに新規投稿は降ってくるけど 過去の投稿数とかフォローフォロワー数の表示が極端に少ない
これは仕様
リモートのユーザー情報はリモート先で見るしかない