KOTET'S PERSONAL BLOG

#advent_calendar HostdonでひとりMastodonサーバーを立てる

Created: , Last modified:
#advent_calendar #fediverse #tech

12月2日ですね1Fediverse Advent Calendar 2022の2日目の記事として参加させていただきます。


Hostodon Hostdonの使い方を詳細に書いた記事が見つけられなかったので書く。 Hostdonを使ってみたいけど情報が無くて不安な人は参考にしてほしい。

いきさつ

前からMastodonにアカウントを作りたいと思っていた。 しかしせっかくの分散SNSだし、 所属しているサーバーが倒れたときに乗り換えたりリンクを書き換えたりするのもめんどくさいので自前のサーバーを作りたい。 そんなことを考えているうちに5年が過ぎ、Twitterがイーロンマスクに買収され2、他のSNSへのリンクが禁止になった3。 どうしよう……

というわけで慌ててMastodonを始めることになってしまった。 自分が持っているドメインであるkotet.jpでアカウントを作るためには、自前のサーバーを作らなくてはならない。 ちょっと今の自分はサーバーの運用に多くの労力を割くことができないので、ホスティングサービスがあればそれを使いたい。 そう思って探してみるとHostdonというホスティングサービスがあった。

アカウント登録

まず、トップページの「アカウント登録」を押すと仮登録フォームに飛ぶ。 仮登録フォームにメールアドレスを記入し、送信する。 するとHostdonから仮登録のお知らせメールが来るので、そのメールに貼られているリンクから本登録を行う。

本登録ではパスワードの設定や、クレジットカード情報の登録を行う。 本登録が完了すると、本登録のお知らせメールが届き、コントロールパネルが開けるようになる。

コントロールパネルからは持っているインスタンスと作成中のインスタンスが一覧で見られる。 コントロールパネル上部の「Mastodonインスタンス」→「新規作成」からインスタンスを作成できる。 自分はシンガポールリージョンを申請した。

Mastodonインスタンスの新規作成

インスタンスの新規作成ページでは、作成するインスタンスの構成を選べる。 プランによってSidekiqスレッドの数ローカルのストレージの大きさが違うらしい。 Sidekiqスレッド数は25スレッドから100スレッドまで選択肢があるが、それがどれくらいの性能を意味しているのかよくわからない……

ここで選べるのは以下の通りである。

hostdonのドメインを利用してしまうと、hostdonの利用をやめることがサーバーの閉鎖と同義になってしまう。 できれば独自ドメインを使いたい。 自分はここでmastodon.kotet.jpというドメインを使うことにして入力した。 m.kotet.jpでも良かったかもしれないが、自分はTwitterが本当にヤバいことになるまでMastodonアカウントを作れなかった人間である。 貴重な1文字サブドメインを使う勇気が出なかった……

申請を行うとインスタンス申し込み受付メールが届く。 独自ドメインを設定する場合は24時間以内に必要な操作を連絡するということなので、のんびり待つ。

ここでコントロールパネルを見ると、作成中のインスタンスに項目ができている。 自分がやったときはシンガポールリージョンにしたのに東京リージョンと表示されていた。 インスタンスが作成されたらちゃんとシンガポールリージョンになっていたので、慌てず待てば大丈夫だと思う。

追記: ライトプランの性能について

YUKIMOCHI Toot Relay Serviceという日本最大級のリレーサーバーに登録してみた。

リレーサーバーに登録し、治安が悪かったり悪意を持って運用されているっぽいサーバーを数個ブロックした。 その結果、Sidekiqの使用率はほとんどの時間15%を下回っている。 自分専用サーバーとして使い、メディアファイルの投稿も控え目ならば一番安いプランでも困ることはなさそうだ。

DNSレコードの更新

のんびり待っているとDNSレコード変更のお願いメールが届く。 DNSサーバーのCNAMEレコードをメールで指示されたとおりに書き換えて、またのんびり待つ。 自分の場合DNSレコードを変えてから7時間待った。 自分の場合状勢的にユーザーが殺到していて時間がかかったのかもしれないが、ゆっくり待つ心を準備しておいてほしい。

インスタンスの初期設定

管理者アカウント作成

待っているとインスタンス作成完了のお知らせメールが来る。 コントロールパネルを見ると、Mastodonインスタンス一覧にインスタンスが増えている。 インスタンスの管理ボタンを押すことでインスタンス管理画面に行けるが、今のところできることはないのでまずは作ったサーバーにアクセスしてみる。

普通にMastodonアカウントを作成する。 後でこれを管理者アカウントにする。 @ownerとか@adminにしてもかっこよかったかもしれないが、ざっと調べた感じ名前がドメイン名に入っていても普通に自分の名前をユーザー名にしている人が多かった。 登録したアドレスに確認メールが届くので、リンクを踏めばアカウントが有効化される。 ちなみにメールはhostdon.jpから来る。

アカウントを作ったら再びインスタンス管理画面に移る。 「各種タスクの実行」の管理者登録フォームに作ったアカウントのユーザー名を入力することで、そのユーザーを管理者にできる。

新規登録の制限

このサーバーは自分専用なので、新規登録の制限をする。 botアカウント等は作るのでMastodonの設定画面の「管理」→「サーバー設定」→「アカウント作成」から「新規登録が可能な人」を「登録には承認が必要」に設定する。 しばらくアカウントを作らないなら「誰にも許可しない」に設定してもいい。

インスタンス管理画面

インスタンス管理画面には以下のような項目がある。 あまりできることは多くない。 基本的にはお問い合わせフォームを通して操作を行うようだ。

インスタンス情報

インスタンスに関する各種情報が見られる。

ストレージ情報

ストレージに関する統計が見られる。 画像を投稿したり投稿したりしているはずだが今見たら0bytesになっている。

各種タスクの実行

管理者登録はこのパネルから行う。 その他したいことがある場合は申請フォームで運営に申請する必要があるようだ。

追記:

絵文字追加機能が追加されたようだ。

まず、作りたい絵文字の画像ファイルをtarballにする。 このときのファイル名が絵文字の名前になる。

$ tar czf emojis.tar.gz kotet.png

ファイルをアップロードすると以下のようになり、処理が始まる。 処理は数分で完了する。 完了したときはタスク完了メールが届く。

実際に追加された絵文字が以下の通り。ファイル名がkotet.pngなので:kotet:と入力することで表示できる。

カスタマイズ

現在はFaviconの変更機能がある。 あるが現在のところ不具合のため停止しているようだ。

契約設定

インスタンスの解約申請ができる。

アカウントの立ち上げ

プロフィールを設定したりした後は、サーバーの設定をいろいろ変えてみる。

リレーサーバーに接続

初期状態ではどのサーバーとも繋がっていないので、知っているアカウントのフォロー欄を見るくらいしかアカウントを探す方法がない。 そのうえ自分がフォローしたアカウントの情報しか入ってこないので、トレンドハッシュタグ機能もまともに機能しない。 いくらかリレーサーバーに接続するといいだろう。 リレーサーバーは、参加したサーバーで行われた公開投稿を、参加サーバー全体に送信してくれる。 知らないアカウントを探したり、逆に自分を見つけてもらったりするなら参加するといい。 あまり流量の大きいリレーに参加すると負荷が大きいらしい。 どれくらい負荷が大きくなるかわからないので慎重に参加している。 とりあえずハッシュタグ付きの投稿だけを選択してリレーしてくれるハッシュタグリレー等に参加している。

ハッシュタグリレーサービス

ドメインブロック

リレーに参加しているサーバーの中には、botの投稿を未収載設定せずに流したり、ユーザーがタイムライン上で喧嘩していたり等のマナーの悪いサーバーもある。 そのような投稿で連合タイムラインが押し流されてしまう場合は、ドメインブロックを利用する。 ひとりサーバーではモデレーションをしてくれる人はいない。 気分を害すようなことがあったら自衛を心がけたい。

設定画面から「モデレーション」→「既知のサーバー」を開くと、サーバーのモデレーションが行える。 そのサーバーのアカウントをフォローする可能性があるなら「重大性」を「サイレンス」に、 完全につながりを断ってしまっていいなら「停止」にする。

自分はまだ遭遇したことはないが、データをサーバーのキャッシュに入れておくだけで自国の法的に危なくなるようなサーバーもあるかもしれない。 そのような時もドメインブロックを利用する。

カスタムCSS

サーバー内で独自のCSSを適用できる。 「管理」→「サーバー設定」→「外観」からカスタムCSSを設定する。 最近Mastodonの投稿の文字数制限が5000まで拡大されたらしい。 めちゃくちゃ長い投稿が来ると邪魔なので、以下のようにすると長さを制限できる。

/* テキストの行数を制限 */
.status__content__text {
    max-height: 10em;
    overflow-y: auto;
}
/* マウスホバーで展開 */
.status__content__text:hover {
    max-height: unset;
}

感想

というわけでできたのが mastodon.kotet.jp だ。 管理者兼メインアカウントは @kotet@mastodon.kotet.jp。 自分の投稿はこのように埋め込めるが、どうもフォールバックが存在しないのでmastodon.kotet.jpの閉鎖と同時に見えなくなってしまうようだ。

HostdonはどうもAWSのような自動化されたサービスというより、人間がサーバーの運営をしてくれるMastodonサーバー運営代行サービスといった使い勝手だ。 ともかくこれでMastodonの世界と、それにつながるFediverseに入門できた。 一度ブームが過ぎ去ってしまっていろんなサーバーや関連ウェブサイトが閉鎖してリンク切れになってしまっていて悲しかったので、このサーバーは細々とでもできるだけ長く運用していきたい。