misskeyサーバーを簡単に立てるためのdocker compose定義
Cloudflareを使うので固定IPアドレスは不要、それどころかグローバルIPアドレスさえ不要です。
用意するもの: dockerコマンドとdocker-composeコマンドが動くLinux環境(WSL可)
- misskey-default.ymlの
url:
の欄をhttp://localhost:3000
に書き換えます - docker-compose.ymlのコメントアウトされている
ports: ["3000:3000"]
の行のコメントアウトを外します docker-compose up -d --wait
を実行します- http://localhost:3000 にアクセスします
ドメイン名をexample.com
とし、これがCloudflareで管理されているものとします
- Cloudflare Tunnelsでtunnelを作成します。トークンが生成されますが、それは直接「トークンだ」と表示されるものではなく、表示されているconnector実行用コマンドに含まれる無意味な長い文字列です。
- misskey-default.ymlの
url:
の欄をhttps://example.com
に書き換えます - docker.envの
TUNNEL_TOKEN=
の欄にCloudflare Tunnelsのトークンを入力します - Cloudflare Tunnelsの設定で、Public Hostnameとして
example.com/
を、そのserviceとしてHTTP://lb
を設定します docker-compose up -d --wait
を実行します- https://example.com/ にアクセスします
- AWS S3 をはじめとするオブジェクトストレージを作成し、そのクレデンシャルを用意します
- docker.envの
AWS_ACCESS_KEY_ID=
の欄にAWSのアクセスキーを入力します - docker.envの
AWS_SECRET_ACCESS_KEY=
の欄にAWSのシークレットアクセスキーを入力します - docker.envの
AWS_DEFAULT_REGION=
の欄にAWSのリージョンを入力します。AWS S3以外のオブジェクトストレージの場合はそのままにしておきます - AWS S3以外のオブジェクトストレージの場合は、docker.envの
S3_ENDPOINT=
の欄にオブジェクトストレージのエンドポイントURLを入力します- ヒント: Cloudflare R2の場合、
https://XXXXXXXXXX.r2.cloudflarestorage.com/BUCKET_NAME
のようなURLを案内されますが、最後のBUCKET_NAME
は不要です。バケット名はこのあとBACKUP_OBJECT_S3URL
を指定するときに使います
- ヒント: Cloudflare R2の場合、
- docker.envの
BACKUP_OBJECT_S3URL=
の欄にS3://
から始まるバケット名を含むパス名を入力します - ./backup-db.shを実行すると、バケット上に指定通りのキー名でDBのバックアップが作成されます
crontab -e
で定期実行の設定を行います。例えば、毎時15分にバックアップを作成する場合は、15 * * * * /path/to/misskey-kit/backup-db.sh
とします- リストアの練習は、他のサーバーに同じ設定ファイルを置いて行うのがよいでしょう
docker compose up -d db
としてDBを起動します./restore-db.sh
としてDBをリストアします- docker-compose.ymlのコメントアウトされている
ports: ["3000:300"]
の行のコメントアウトを外し、直接アクセスできるようにしておきます docker compose up -d web
としてMisskeyを起動します- http://localhost:3000 にアクセスします。バックアップしたときの状態に戻っているはずです
./update-misskey.sh
を実行します。これは 公式Dockerhub から最新のイメージを取得し、アプリケーションインスタンスを更新します。このとき、新しいバージョンのコンテナを起動してから既存のコンテナを停止するため、サービスは無停止です- β版など、latest以外のタグを使いたい場合は、
./update-misskey.sh TAG
のようにタグ名を指定します
libjemallocは、標準のメモリ管理ライブラリよりも高効率な互換メモリ管理ライブラリです。これを使うことで、Misskeyのメモリ使用量を抑えることができます。
./install-libjemalloc.sh
を実行します。これはjemallocをインストールし、Misskeyのコンテナを再起動することなく有効になります
Misskeyをアップデートしたりしてもlibjemallocは有効のままです- dockerに作ったボリューム(misskey-lib64)をインストール先にしているためです