Single-User Instance
1インスタンス1ユーザーの設計パターンに関する仕様です。 個人で運用する分散SNSインスタンスの設計指針を定義します。
概要
Single-User Instanceは、1つのインスタンスを1人のユーザーが所有・運用するモデルです。 データの自己管理、プライバシーの確保、運用コストの最小化を目的としています。
メリット
- データ主権 - 自分のデータは自分で管理
- プライバシー - 管理者=ユーザーなのでデータ漏洩リスクが低い
- シンプルな運用 - マルチユーザー機能が不要
- 低コスト - 1ユーザー分のリソースで十分
- カスタマイズ性 - 自分好みに設定可能
アーキテクチャ
アクター構成
Single-User Instanceには通常1つのメインアクターが存在します:
{
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Person",
"id": "https://alice.example/users/alice",
"preferredUsername": "alice",
"name": "Alice",
"inbox": "https://alice.example/users/alice/inbox",
"outbox": "https://alice.example/users/alice/outbox",
"followers": "https://alice.example/users/alice/followers",
"following": "https://alice.example/users/alice/following"
}
WebFinger
@alice@alice.example のようなアドレスでユーザーを特定できます。
Single-User Instanceでは、任意のユーザー名でも同じアクターを返すことが推奨されます。
GET /.well-known/webfinger?resource=acct:alice@alice.example
{
"subject": "acct:alice@alice.example",
"links": [
{
"rel": "self",
"type": "application/activity+json",
"href": "https://alice.example/users/alice"
}
]
}
認証
Single-User Instanceでは、複雑なユーザー管理は不要です。 シンプルなパスワード認証やマジックリンク認証が適しています。
推奨される認証方式
| 方式 | 説明 | 適用場面 |
|---|---|---|
| パスワード認証 | シンプルなパスワードベース認証 | 基本的な保護 |
| マジックリンク | メールで送られるワンタイムリンク | パスワード不要の運用 |
| Passkey/WebAuthn | 生体認証やハードウェアキー | 高セキュリティ |
セッション管理
ログイン状態はセッションCookieで管理します。 Single-User Instanceでは、長期間のセッション有効期限を設定しても問題ありません。
初期セットアップ
インスタンスの初回起動時に、オーナーアカウントを作成します。 以降の新規ユーザー登録は無効化されます。
セットアップフロー
- インスタンスをデプロイ
- 初回アクセス時にセットアップ画面を表示
- ユーザー名、表示名、パスワードを設定
- キーペア(公開鍵/秘密鍵)を自動生成
- セットアップ完了、以降は通常のログイン画面
インスタンス情報
NodeInfoを通じてインスタンス情報を公開します。 Single-User Instanceであることを示すメタデータを含めることができます。
{
"version": "2.1",
"software": {
"name": "yurucommu",
"version": "1.0.0"
},
"protocols": ["activitypub"],
"usage": {
"users": {
"total": 1,
"activeMonth": 1,
"activeHalfyear": 1
},
"localPosts": 42
},
"openRegistrations": false,
"metadata": {
"singleUser": true
}
}
セキュリティ考慮事項
HTTP Signatures
ActivityPubの連合通信にはHTTP Signaturesを使用します。 秘密鍵は安全に保管する必要があります。
HTTPS必須
本番環境では必ずHTTPSを使用してください。 ActivityPubの仕様上、HTTPSが推奨されています。
レート制限
単一ユーザーでも、外部からのリクエストにはレート制限を設けてください。 DoS攻撃の防止に役立ちます。
運用ガイドライン
バックアップ
定期的なバックアップを推奨します:
- データベース(D1)のエクスポート
- メディアファイル(R2)のバックアップ
- 秘密鍵の安全な保管
更新
セキュリティアップデートは速やかに適用してください。 Single-User Instanceは管理者=ユーザーなので、更新タイミングを柔軟に決められます。