Open8

おうちMisskeyサーバーを建てて運用する

tkktkk

Misskeyがどんな感じなのか触ってみたくなり、せっかくなので自宅のサーバーで運用してみます。

tkktkk

構成イメージ

自宅のProxmoxに立ち上げた仮想マシンにmisskeyをセットアップし、インスタンスをCloudflare tunnels経由でインターネットに公開する。

tkktkk

Misskeyのセットアップ

いくつかオプションが案内されているなかのdocker-compose版を選択。

https://misskey-hub.net/ja/docs/for-admin/install/guides/docker/

イメージのビルド

苦労ポイント。

イメージのビルドに結構計算リソースを使った。vCPU: 1, Memory: 1024MBだと完走しなかった。一時的にvCPU: 2, Memory: 2048MBにスペックアップしてビルドした。

あとエラーになってしまうので以下の変更をDockerfileに入れた。

diff --git a/Dockerfile b/Dockerfile
index 922ce4dca..72470babc 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -6,6 +6,8 @@ ARG NODE_VERSION=20.10.0-bullseye

 FROM --platform=$BUILDPLATFORM node:${NODE_VERSION} AS native-builder

+ENV NODE_OPTIONS "--max-old-space-size=65536"
+
 RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
        --mount=type=cache,target=/var/lib/apt,sharing=locked \
        rm -f /etc/apt/apt.conf.d/docker-clean \

configの作成 & 起動

ここはドキュメント通り。迷うところはあまりなかった。

tkktkk

Cloudflare Tunnelのセットアップ

ドメインも取っておくこと。

https://www.cloudflare.com/ja-jp/products/tunnel/

基本は接続するマシンのポートなどを控えて、手順通りセットアップするだけ。メニューの階層がいまいち分からずコンソールの操作に一番時間がかかった気がする。

Webコンソールへのアクセス

2024/02/26時点では以下のようにアクセスできた。https://dash.cloudflare.com/ からスタート。

  1. サイドバーのZero Trustを選択
  2. この時点でワークスペースの作成?を求められるかも
  3. サイドバーのNetworksを選択
  4. サイドバーのTunnelsを選択

セットアップ

Webコンソールの Create a tunnel から作成するとあとはサーバーへのセットアップ方法まで画面の指示に従って進めるだけなので非常に簡単だった。

tkktkk

ここまででMisskeyのサーバー自体のセットアップは完了。

tkktkk

おうちMisskeyをにぎやかにするためにやったこと

リレーの追加

立ち上げた直後はmisskey.ioなどと違ってグローバルタイムラインにポストが全く流れないので、少し寂しいかも。

インスタンスのポストを中継して他インスタンス配信するという役割のリレーを登録するとグローバルタイムラインがにぎやかになる。リレーサーバーの管理者に承認してもらわないと、ポストの配信を受けられない。このあたりはサーバー管理者の良識が問われる所なのかなと。

自分は以下のリレーサーバーを登録している。

リレーサーバーはどこのインスタンスのポストを配信するのかもそうだが、それだけではなく更にポストの種類を絞って配信することができる。例えば前述のhashtag-relayなんかはハッシュタグを含むポストだけ配信するリレーサーバー。リレーサーバーの運用なんかも気になってきた。

リモートフォロー

インスタンスによってはリモートフォローに時間がかかることが結構ある。特にmisskey.ioは調子の差が激しい。このあたりはトラフィックの量なんだろうなと思う。

tkktkk

運用して気になっていること

ディスク容量

前述のリレーサーバー2つと数件のmisskey.ioのリモートフォローで2ヶ月程度運用したところ、20GBくらいディスクを消費した。減る感じはしない。misskey.ioなどの巨大インスタンスの運用の大変さがここだけでもわかる。

一定期間経過した過去の投稿は削除するような機能は無いのかなと思っている。

Cloudflare Tunnel

セットアップが簡単で正常動作中は特に不満は無い。

しかし定期的に自宅サーバーとTunnelの接続が切れる?のかMisskeyのサーバーにインターネットからアクセスできなくなる。1 - 2日に1回くらいの間隔で発生する。再起動しないと解消しない。

LAN内ならアクセスできるので、Tunnelとの接続に問題が出ているのは間違いない。

記事を失念してしまったのだが、同様の構成を取っている方も同じ現象を踏んでいたっぽい。

こういう事象を踏んでしまうと本番運用はどうなんだろうとは思ってしまう。実際に運用している人の話を聞いてみたい...

tkktkk

サーバーの状況

ゴールデンタイム(20時ごろ)でこんな感じ。そんなに計算資源は使っている感じは無い。やはりディスクサイズどうしよう問題。