セルフホスト型サービス
lin-snow/Ech0 avatar
lin-snow/Ech0

Ech0を自分のタイムラインとして運用するための設計確認

Ech0、個人のアイデアを共有するための、オープンソースの自己ホスト型軽量パブリッシング プラットフォーム。

スター 2,057フォーク 159GoAGPL-3.0

ひと目でわかる

これは何?
Go製のセルフホスト型マイクロブログEch0について、公開範囲、保存、認証、移行、統合、AGPL条件を整理します。
誰に向いている?
Ech0は、短い投稿やリンク、メディアを自分のサーバーから公開し、RSSやコメントを使いながらデータを自分で管理したい個人に合います。Dockerの起動例だけでなく、最初のアカウントがOwnerになる仕組み、公開権限、JWT_SECRET、保存先、バックアップ、認証連携を先に点検してください。
商用利用できる?
厳しい条件付きでできます。AGPL-3.0 はネットワーク型コピーレフトのライセンスで、改変版をホスティングサービスなどとしてネットワーク越しに利用させる場合、その利用者にソースコードを同じライセンスで提供する必要があります。
今もメンテナンスされている?
されています。最後のコミットは 2 日前です。
何の言語で書かれている?
主に Go です(GitHub の言語統計による)。

回答はプロジェクトの GitHub データ(最終同期:2026年9月15日)と当サイトの分析に基づくもので、法的助言ではありません。

オープンソース詳細解説

メモを公開タイムラインへ変える位置付け

lin-snow/Ech0は、READMEで共有、議論、所有ができるセルフホスト型の個人マイクロブログと説明されています。素早い記録を目的とするメモツールとは違い、Ech0は他の人がフォローし、反応できる個人タイムラインへ投稿を出すことを主な用途にしています。Goで実装され、ライセンスはAGPL-3.0です。

READMEは対象外の用途も示しています。Obsidian型の双方向知識ベース、Notion型のチーム向け文書ワークスペース、タイムラインや公開機能を持たない純粋なメモアプリを求める場合は、選択理由が弱くなります。素材時点のGitHub情報ではstarsは2,052、forksは158、open issuesは2で、既定ブランチはmainです。公開数値は利用規模や品質を保証しません。

Docker一つの起動例とOwner権限

クイックスタートでは、sn0wl1n/ech0:latestイメージを使い、6277番ポートを公開して、/opt/ech0/dataをコンテナの/app/dataへマウントします。JWT_SECRETも環境変数として渡します。起動後にhttp://ip:6277を開き、最初に登録したアカウントがOwnerになり、既定では特権アカウントだけが公開できるとREADMEは説明しています。

この初回登録ルールは、公開サーバーで先に確認すべき点です。誰が最初のアカウントを作るか、一般ユーザーの投稿がどの範囲で非公開になるか、Ownerを失った場合にどう戻すかを決めてから外部へ公開します。Docker Compose、スクリプト、Helmの手順はDEPLOYMENT.mdへ案内されているため、単一コマンドの例と本番の構成を混同しないでください。

VireFS、S3、カプセルによるデータ管理

Ech0はVireFSを使い、ローカルストレージとS3互換オブジェクトストレージのマウントと管理を一つの層にまとめるとREADMEは説明しています。機能一覧には、RSS出力、履歴データの移行インポート、ダッシュボードとCLIからのスナップショットおよびカプセルの書き出しが含まれます。カプセルは書いた内容を自己完結した形で持ち運び、別インスタンスへ取り込んだり静的サイトに変換したりする用途が示されています。

自動バックアップはWeb、CLI、TUIから実行でき、バックグラウンドの自動処理にも対応するとされます。移行時には、投稿、メタデータ、メディア、設定、認証情報を同じデータとして扱わず、何がエクスポート対象かを検証します。READMEにストレージ性能の数値はないため、投稿量とメディア容量を自社データで測る必要があります。

投稿編集とメディアの境界

編集機能はmarkdown-itを基盤とし、プラグイン拡張とライブプレビューを備えます。タグで投稿を整理し、WebサイトやGitHubプロジェクトのカードを表示できます。BilibiliとYouTubeの動画の埋め込み解析もREADMEの機能一覧にあります。画像、音声、動画は投稿へ添付でき、ギャラリーや内蔵プレーヤーで表示されます。

ファイルマネージャーはアップロード、閲覧、アセット管理を担います。コメント、いいね、共有も内蔵されていますが、公開コメントを許す場合はモデレーション設定、通知、通報後の対応を運用表に置く必要があります。外部サービスのカードや動画を埋め込むと、閲覧者のブラウザが外部へ接続する可能性もあるため、投稿者が使えるURLと公開方針を確認してください。

認証、ロール、トークンの確認

認証方法としてOAuth2とOIDC、パスキーによるパスワードレスログインが挙げられています。パスキーは生体認証またはハードウェアセキュリティキーを使えます。API連携向けには、範囲を付けたアクセストークンの生成と失効、複数アカウントの権限管理があります。READMEはOwner、Admin、一般ユーザーという軽量なロールモデルを説明しています。

WebAuthnを使う場合は、SSO設定でRP IDとOriginsを正しく構成し、ブラウザで登録します。第三者ログイン、パスキー、トークンのどれを使うかで、アカウント回復と失効の手順が変わります。詳細な権限マトリクスはREADMEにないため、投稿公開、ファイル取得、管理画面、API呼び出しを実際のロールごとに試してください。

API、Webhook、MCP、Copilotの使い分け

Ech0は外部自動化向けのAPIとWebhookを備えるとREADMEに記載されています。内蔵MCPサーバーはStreamable HTTP、Tools & Resources、スコープ付きJWTを使い、投稿、ファイル、統計など中核機能のほぼ全範囲をAI層へ公開すると説明されています。Copilotには、最近の投稿をまとめるRecapと、ベクトルRAG検索およびSSE応答で自分のコンテンツを尋ねるChatがあります。

統合用のPOST /api/comments/integrationはcomment:writeスコープとintegration audienceを持つBearerトークンを受け付け、専用のレート制限とsource=integrationの識別を使うとREADMEは説明しています。この経路は通常のCAPTCHAやフォームトークン検証と違うため、トークンの発行者、保管場所、利用ログ、失効を先に決めます。MCPやCopilotは便利さの説明だけで安全性を証明しないため、渡すデータの範囲を狭くしてください。

AGPL-3.0と公開サーバーの責任

Ech0はAGPL-3.0-or-laterでライセンスされています。READMEはトラッキング、サブスクリプション、SaaSへの依存がない完全なオープンソースだと説明しています。AGPLの説明では、公開サーバー上で利用者に修正版を使わせる場合、その修正版のソースコードを公衆が取得できるようにする義務が示されています。

修正版を運用する場合は、NOTICE、AGPLコンプライアンスガイド、配布物に含まれる依存物を確認します。READMEはプロプライエタリな利用について商用ライセンスへ案内していますが、個別の法務判断を代替するものではありません。セキュリティ態勢、サポート契約、保証条件もライセンス表示だけでは分からないため、公式の完全な文書と社内の公開手続きを照合してください。

編集部の結論

Ech0は、短い投稿やリンク、メディアを自分のサーバーから公開し、RSSやコメントを使いながらデータを自分で管理したい個人に合います。Dockerの起動例だけでなく、最初のアカウントがOwnerになる仕組み、公開権限、JWT_SECRET、保存先、バックアップ、認証連携を先に点検してください。MCPやCopilotを使う場合は、トークンの範囲と投稿データの扱いを追加で確認します。AGPL-3.0の義務と性能、サポート条件はREADMEだけで完結しないため、固定版で移行と復旧を試してから公開範囲を決めるのが適切です。

公式情報源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
コミュニティノート

コミュニティノート