✦ Spica
GitHub

Fediverse / ActivityPub

あなたのノートは、
あなたのサーバーに。

Spica は、ActivityPub で Fediverse(連合) につながる分散型SNSのソフトウェアです。 誰かの巨大なサービスに預けるのではなく、自分のサーバーで自分のノートを抱える。 それでいて、Misskey や Mastodon の人とも当たり前にやりとりできます。

AGPL-3.0 ActivityPub (W3C) Node.js v22.13+ SQLite だけで動く PWA
◍

ひとつの会社のものではない

サーバーはそれぞれ独立して、ゆるくつながっています。どれかが止まっても、あなたの居場所は残ります。

⌂

データは自分の手元に

ノートもフォローも、自分のサーバーに保存されます。持ち出し(エクスポート)と、引っ越しの用意があります。

✦

オープンソース

ソースコードは AGPL-3.0 で公開。誰でも自由に立てて、直して、配れます。読めない部分はありません。

Features

Spica でできること

SNS として普通に使えることから、運営の道具まで。実際に動いているものを並べました。

投稿

ノート

3000 字まで。CW・公開範囲(連合 / ローカル / フォロワー)・画像 4 枚と ALT・アンケート・引用。 出したあとから編集もできます(相手のサーバーにも「編集した」と伝わります)。

リアクション

絵文字で応える

定型の絵文字のほか、サーバーのカスタム絵文字でも。よく使うものは最近使った順に先頭へ並びます。 付けたリアクションは相手のサーバーにも届きます。

読み方

タイムライン

ホーム / ローカル / 連合 / タグ。新しいノートはその場で届きます(読み込み直しは要りません)。 j k キーでノートを送る、キーボード派の操作も。

集める

リスト・アンテナ・チャンネル

フォローを分けずに見たい人だけを並べる(リスト)、言葉で集める(アンテナ)、 みんなで同じ話題を置く(チャンネル)。

あとで

ブックマーク・下書き・予約

あとで読む。あとで書く。決まった時刻に出す。書きかけのまま閉じても消えません。

通知

通知

フォロー・返信・メンション・リアクション・リノート別に入切できます。まとめて出すか、1 件ずつかも選べます。 アプリのアイコンのバッジにも未読が出ます。

DM

メッセージ

1 対 1 のやりとり。受け取る相手は許可制で、既定では誰からも受け取りません。 (サーバーの管理者が有効にしたときだけ使えます)

メディア

ドライブ

上げた画像・動画の整理。画像は位置情報を落として WebP に変換します。 S3 / Cloudflare R2 に置くことも、サーバーの中に置くこともできます。

セキュリティ

安全

パスキー(指紋・顔・PIN)・2 段階認証・ログイン中の端末の確認・引っ越し・ JSON / ZIP のエクスポートと取り込み。

運営

管理パネル

通報の対応、凍結、ロール、お知らせ、絵文字と招待、リレー、メール、配信キュー、メンテナンスまで。 1 人で回せるように作っています。

アプリ

ホーム画面に追加

PWA として入れれば、アプリのように起動してプッシュ通知を受け取れます。 見た目はライト / ダーク、アクセント 6 色、文字の大きさも選べます。

つながり

Fediverse と相互運用

Misskey 互換 API もあるので、Misskey 系のアプリから読み書きできます。 WebFinger / NodeInfo / HTTP Signatures / リレーにも対応しています。

How it works

しくみは、いたって単純です

Spica は「サービス」ではなく、サーバーを立てるためのソフトウェアです。だから、居場所はあなたが選べます。

サーバーはそれぞれ独立していて、あなたのアカウントは、あなたが選んだサーバーにあります。 フォローも、リアクションも、返信も、サーバーをまたいで届きます。相手が Misskey でも Mastodon でも同じです。

これが Fediverse と呼ばれている形です。ひとつの巨大な広場ではなく、たくさんの小さな居場所が ゆるくつながっている。Spica はそのための、軽くて丈夫な土台です。

正直な補足: 連合の見え方は、相手のソフトで少しずつ違います(👍 が ☆ に見える、引用の形が違う、など)。 Spica は、その差ができるだけ小さくなる方に寄せています。

Get started

はじめかた

自分のサーバーを立てるのがいちばん自由です。すでに公開しているサーバーに参加する、でも構いません。

STEP 1

サーバーを選ぶ

自分で立てるなら、Node.js が動く場所をひとつ用意するだけ(VPS・自宅サーバー・Raspberry Pi など)。 立てるのが難しければ、公開しているサーバーを探して参加するのでも大丈夫です。

立てかたを見る
STEP 2

アカウントを作る

最初のアカウントは「はじめての設定」で作ります。パスワードの代わりにマスターキーを使う方式のほか、 メール+パスワードやパスキーにも切り替えられます。

STEP 3

アプリとして入れる

ブラウザのメニューから「ホーム画面に追加」でアプリのように使えます。通知を許可しておくと、 閉じていても通知が届き、アイコンに未読の数が出ます。

Run your own

サーバーを立てる

PostgreSQL も Redis も必須ではありません。Node.js と SQLite だけで動くので、小さなマシンでも大丈夫です。

  • Node.js v22.13 以上(v24 推奨)
  • DB サーバー不要(SQLite / FTS5 を内蔵)
  • VPS・自宅サーバー・Raspberry Pi でも
  • PostgreSQL への切り替えもできます
  • 失敗した配送は自動で再送(指数バックオフ)
  • 1 人でも回せるメンテナンス用のコマンドつき

ローカルで試す

git clone https://github.com/Keychrom/Spica.git
cd Spica
npm install
cp .env.example .env
npm run dev          # → http://localhost:5173

本番の設置(Nginx・SSL・常駐化・バックアップ)は README の「サーバー設置・導入ガイド」にまとめてあります。

導入手順を読む

正直な話: このプロジェクトは 1 人の学生がメインで開発しています。大人数でのテストはできていないので、 規模を大きくすると不安定になることがあります。まずは身内・コミュニティ規模でどうぞ。

FAQ

よくある質問

Misskey や Mastodon と、何が違いますか?

どれも ActivityPub でつながる仲間で、目的は同じです。Spica は「リアクション・引用・編集・CW を全部持ちながら、 Node.js と SQLite だけで動く軽さ」に寄せています。連合の細かい差(リアクションの見え方など)は Misskey や Mastodon と揃えていて、Misskey 互換 API があるので Misskey 系のアプリからも使えます。

無料ですか?

ソフトウェアは無料で、AGPL-3.0 のオープンソースです。かかるのは、サーバーを動かす場所の実費 (VPS 代・電気代など)だけです。

サーバーを立てるのは難しいですか?

Node.js を用意して、コマンド 5 行です。データベースは標準で SQLite なので、別途立てる必要はありません。 慣れてきたら PostgreSQL に切り替えることもできます。

大人数で使えますか?

いまのところ、大人数での運用テストはできていません。まずは身内や小さなコミュニティに向いています。 どこが弱いのかは、リポジトリの docs/SCALE.md に正直に書いています。

別のサーバーに引っ越せますか?

はい。引っ越し(Move)に対応しています。ノートは JSON / ZIP で持ち出せて、取り込みもできます。

データは誰のものですか?

あなたのサーバーに保存されます。持ち出せる形でエクスポートできるので、やめるときも置いていかなくて大丈夫です。

メッセージ(DM)は使えますか?

サーバーの管理者が有効にしたときだけ使えます(既定ではオフ)。受け取る相手は自分で選ぶ許可制で、 知らない人からのメッセージは届きません。

Open source

開発に参加する

読む・立てる・直す・配る、どれも自由です。フィードバックも歓迎しています。

ソースコード

本体は GitHub にあります。スターや Issue、Pull Request はありがたいです。

Keychrom/Spica

このサイト

ビルド不要の静的な HTML と CSS だけで作っています。アプリと同じデザイントークンを使っているので、 アプリの見た目を変えたらここも揃います。

応援してくださる方へ: Spica は広告も出資者もない個人開発です。サーバー代と開発の時間は、 寄付でまかなっています。くわしくは 寄付のページ へ。

小さなサーバーを、ひとつ。

自分のペースで、自分の居場所から。Spica はそのための土台です。