GitHub
Draft

Single-User Instance

1インスタンス1ユーザーの設計パターンに関する仕様です。 個人で運用する分散SNSインスタンスの設計指針を定義します。

概要

Single-User Instanceは、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では、長期間のセッション有効期限を設定しても問題ありません。

初期セットアップ

インスタンスの初回起動時に、オーナーアカウントを作成します。 以降の新規ユーザー登録は無効化されます。

セットアップフロー

  1. インスタンスをデプロイ
  2. 初回アクセス時にセットアップ画面を表示
  3. ユーザー名、表示名、パスワードを設定
  4. キーペア(公開鍵/秘密鍵)を自動生成
  5. セットアップ完了、以降は通常のログイン画面

インスタンス情報

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攻撃の防止に役立ちます。

運用ガイドライン

バックアップ

定期的なバックアップを推奨します:

更新

セキュリティアップデートは速やかに適用してください。 Single-User Instanceは管理者=ユーザーなので、更新タイミングを柔軟に決められます。

参考