2026年2月に突如思い立って、分散型SNSに自分専用のサーバーを構築しました。紆余曲折の概要と、最終的にMisskeyにしてよかったと感じた理由について記録します。
具体的なサーバー構築の解説というよりも、なぜ最終的にMisskeyでサーバーをたてたかという経緯の説明にウエイトを置いています。(Fediverseにサーバーを構築したいけど自分にできるかな...)と迷っている方に向けて書いています。
- 1. 自分専用サーバーに憧れがあった
- 2. Concrntで大枠をつかんだ
- 3. Pleromaの設定で行き詰まる
- 4. Misskeyという(自分の)最適解
- 5. 今となっては回り道をしてよかった
- Appendix: 参考にしたウェブサイト
1. 自分専用サーバーに憧れがあった
MastodonやMisskey, Pleromaなどでは自分専用のサーバーを構築することができます。これは通称「おひとりさまサーバー」とよばれています。以前から自分専用のサーバーへの単純なあこがれもありましたし、最終的にはSNSにおいても、自分のデータのコントロールを可能な限り自分でできるようにしたいという気持ちが大きかったです。なので、自分用サーバーの構築と運用はその一つの到達点であると考えていました。
また「サーバーをこうやって構築しました」という記録やブログエントリはネット上に多いものの、自分の技術では、実際の継続・運用のハードルは高いなと感じていました。手間を削減するのであればホスティングサービスもありますが、せっかくなら最初から自分で立ち上げたいという気持ちもありました。 サーバー構築に関する知識は乏しかったので、いろいろなハードルを越える必要がありました。
具体的には:
サーバー構築で向き合うこと(とてもざっくりと)
- VS Codeによる編集環境の準備
- 独自ドメインの契約とその維持
- VPS(仮想専用サーバー)の契約・準備
- Docker Composeのインストール
- YAMLファイルの編集
- Cloudflare Tunnelの構築
- オブジェクトストレージの準備
などです。
もしサーバー構築をしたいとなったら、使っているパソコンにVSCodeをぜひインストールしてみてください。VPSのコンソールを毎回起動して直接コマンドを叩くのは、頻繁に接続して作業することになった場合に大変です。SSHのキーをセットアップすれば、数クリックでシームレスにVPSと繋がって面倒が減ります。また、インデントにとても厳格なYAMLファイルの編集のときに真価を発揮します。
今まで上記にほとんど触れていなかったので、Linuxのディレクトリの移動から覚えるというほぼゼロからのスタートでした。ですが、なんとか形になって安堵しています。
2. Concrntで大枠をつかんだ
サーバー構築の具体的なきっかけは、あるMastodonサーバーの運営終了でした。そのローカルタイムラインで移行先として「Concurrent(Concrnt)に移ります」と投稿しているユーザーがいました。この投稿をきっかけに同サービスを知りました。
ConcrntはActivityPub(MastodonやMisskeyなどが参加している分散SNSの接続プロトコル)にも対応していると知りました。さらには、自分のサーバーも作れると知って、取りかかりとして良いのではないかと感じたのです。
VPSの契約や、Dockerのインストール、スワップ領域の作成などLLM(Gemini)に聞きながら設定をしました。海外のサービスですがDigitalOceanというところで、RAM 1GBのVPSをとりあえず契約しました。同構成で料金は6ドル/月です。一般的な内容については学習データがあるようで、DockerやDigitalOceanのセッティングはLLMと対話しながらスムーズに進みました。
しかしながら、Concrntのサーバー構築は新しいサービスということもあってLLMのハルシネーションが多かったです。公式のドキュメントに忠実に従っていればよかったのですが、LLMが提示する(同モデルから提示された実際の仕様とは異なる)コードを考えずにどんどんコピペしていたら崩壊しました。
正しくセッティングができたものの、自分の技量不足でapconfig.yamlの秘密鍵をどれにしてよいかで行き詰まってしまいました。このように、LLMを使ったファイルの編集から、ActivityPubからの投稿の受信を実装するまで試行錯誤の連続でした。ですが、その過程で設定の仕組みを深く学ぶことができました。
こうしてなんとかサーバー構築はできました。ですが、既存のFediverseアカウントから引っ越しを試みたものの、こちらの設定の不備か何らかの要因で、移行機能がうまく動作しません。やはり、Fediverseの中で自分に合う場所を再考すべきなのかと思案して辿り着いたのが、比較的軽量な動作で知られるPleroma(Akkoma)という選択肢でした。
3. Pleromaの設定で行き詰まる
結論からいうと、PleromaはMisskeyより軽量だし、いいスペックの(具体的には2GB以上のRAM)VPSの契約は予算的に無理だから…と妥協をしたら失敗しました。
こちらでもGeminiといっしょにインストールをやっていたところ、提示されたクローン先が違っており(なぜか)Akkomaがインストールされました。AkkomaとはPleromaのフォークで、機能が充実しているそうです。また開発ペースも本家のPleromaより速いそうなので結果オーライでした。
インストール完了もつかの間、MastodonやMisskeyとはまた違ったUIで認知負荷がのしかかりました。また、Cloudflare R2経由でアップロードした画像ファイルがうまくプレビューされない問題が解決できなかったです。アップロード自体は成功しているものの、URLに意図しない文字列が付加されてしまい、プレビュー画像がことごとくリンク切れになってしまいました。
インストールの作業自体よりも、UIとこの問題の対処のほうで時間がかかってPleromaへの熱意は冷めてしまいました。
4. Misskeyという(自分の)最適解
こうした回り道をして、最初に憧れていたMisskeyのサーバーを立てることに決めました。
2GBのRAMがMisskey稼働の最低ラインということで、廉価なVPSを探していました。そして、WebARENAのIndigoというものを見つけました。 ストレージは競合のサービスよりは少ないものの、814円/月で2GBメモリのVPSが契約できました。この価格であれば、最初に契約したDigitalOcean(1GB RAM)の6ドル/月と遜色ありません。
思いの外Misskeyを選んでよかったことがいくつかあります。
まず、日本語のマニュアルとしては3つの中ではいちばんMisskeyが充実していたことです。インストール方法もDockerを使う方法やシェルスクリプトなど色々あります。Misskeyのサーバー構築では、公式マニュアルにあるDocker Composeでインストールする方法を参考にしました。
実際にでてきたエラーの解釈やわからない部分はGeminiとやり取りしながら設定しました。GeminiのGemという、ある分野の特化機能が付加されたものに「コーディングパートナー(プログラミングに特化)」があるためそれを使うといいかもしれません。
幸い、LLMにもMisskeyに関する学習データがそれなりにあるようで、vibe coding(ほぼLLMの言われたとおりにコピペ)でもできました。規模の経済性(厳密には少し違いますが、Misskeyというプラットフォームが持つ情報の多さという意味で)が効いているなと感じました。
5. 今となっては回り道をしてよかった
段階を踏んだ試行錯誤があったからこそですが、もっとも難しく見えたMisskeyが結果的にスムーズな流れでサーバーの構築ができたような体感でした。
Pleromaで数時間向き合ってもなお解決しなかったCloudflare R2の設定はMisskeyではあっさりとできました。 Misskeyの管理者用のコントロールパネルは、ふだん使っているMisskeyの設定画面の延長のような見た目です。 そのため、新たな学習コストを多く払わずセッティングができたので嬉しいポイントです。
もちろん、新しいコンセプトの提案や、軽量なシステムがもたらす技術的な恩恵も大切であると感じます。 ですが、最終的に「使い慣れているプラットフォームに身を落ち着ける」ことは、私がサーバーを長く、そして楽しく運用していく上でのキーポイントになりそうだなと感じています。 サーバーを構築したことはスタートラインだといえます。今後の維持が
Appendix: 参考にしたウェブサイト
VPSのスワップ領域の作成について
Linuxでスワップ領域を作成する方法 - https://qiita.com/youareyouya/items/1f76fd8de74346130395
Dockerのインストール
英語の公式ドキュメントですが、さっと読んで一つずつコピペしていくと無事インストールできました。
Install using the apt repository - https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository
Misskeyの公式マニュアル
Dockerで構築したので、マニュアルはこちらを参考にしました。
Docker Composeを使ったMisskey構築 -
https://misskey-hub.net/ja/docs/for-admin/install/guides/docker/
サーバーを構築したあとの各種設定
【鯖缶入門】Misskeyインスタンスを建てたらやっておきたい事 -
https://qiita.com/mai_llj/items/a1a4c65651af904cac60