セルフホスト型のパーソナル・マイクロブログ。あなたのタイムラインを共有・議論しつつ、データの所有権はあなたの手に。
Memos のようなツールは思いつきを素早く記録するのに最適です。Ech0 は「その先」のためのツールです — 個人のタイムラインに公開し、他の人がフォローしたり交流したりできるようにします。 自分のサーバーで運用してコンテンツの完全なコントロールを保ちながら、任意のコメントや共有によってつながりを残せます。 軽量で、デプロイが簡単、そして完全にオープンソースです。
こんな人にぴったり:
- 自分のドメインで公開・準公開のタイムラインを運用したい
- 短い投稿、リンク、メディアをひとつのシンプルな UI から発信したい
- データの所有権を保ちつつ、RSS や任意のコメントも欲しい
- 重厚な SNS ではなく、軽い社会的つながりのある個人スペースが欲しい
おそらく合わない:
- 双方向リンクのナレッジベース型ワークフロー(Obsidian 風 PKM など)
- チーム前提の共同編集ドキュメント環境(Notion 風など)
- 公開やタイムライン機能のない完全プライベートなメモ専用アプリ
docker run -d \
--name ech0 \
-p 6277:6277 \
-v /opt/ech0/data:/app/data \
-e JWT_SECRET="Hello Echos" \
sn0wl1n/ech0:latestその後 http://ip:6277 を開きます:
- 最初のアカウントを登録します。
- 最初のアカウントが Owner(管理者権限)になります。
- デフォルトでは、投稿は権限のあるアカウントに制限されます。
Docker Compose や Helm を使った手順は かんたんデプロイ を参照してください。
クリックして全機能を表示
- ☁️ 軽量で効率的なアーキテクチャ:低リソース・小サイズのイメージで、個人サーバーから ARM デバイスまで対応。
- 🚀 すばやいデプロイ:すぐ使える Docker デプロイ。インストールから初回起動までコマンド 1 つ。
- 📦 自己完結したディストリビューション:完全なバイナリとコンテナイメージ。追加のランタイム依存なし。
- 💻 クロスプラットフォーム:Linux、Windows、ARM デバイス(例:Raspberry Pi)に対応。
- 🗂️ VireFS 統合ストレージ層:VireFS によりローカルストレージと S3 互換オブジェクトストレージを統一管理。
- ☁️ S3 オブジェクトストレージ対応:S3 互換オブジェクトストレージをネイティブサポート。
- 📦 データ主権:コンテンツとメタデータはユーザーの手元に。RSS 出力にも対応。
- 🔄 データ移行ワークフロー:履歴データの移行インポートとアーカイブ用スナップショットエクスポート。
- 🔐 自動バックアップ:Web、CLI、TUI からのエクスポート/バックアップに加え、バックグラウンド自動バックアップ。
- ✍️ Markdown 執筆体験:markdown-it ベースの編集/レンダリングエンジン。プラグイン拡張とライブプレビュー対応。
- 🏷️ タグ管理:タグによる分類、絞り込み、検索。
- 🃏 リッチメディアカード:ウェブサイトリンクや GitHub プロジェクトなどをカード表示。
- 🎥 動画コンテンツ解析:Bilibili と YouTube の埋め込み再生。
- 📁 ビジュアル・ファイルマネージャー:ファイルアップロード、閲覧、アセット管理機能を内蔵。
- 💬 組み込みコメントシステム:コメントとモデレーション設定。
- 🃏 コンテンツ・インタラクション:いいねや共有などの社会的アクション。
- 🔑 OAuth2 / OIDC 認証:OAuth2 と OIDC による外部 ID 連携。
- 🙈 Passkey によるパスワードレスログイン:生体認証またはハードウェアセキュリティキー。
- 🔑 アクセストークン管理:スコープ付きトークンの発行と取り消し。API 呼び出しや外部連携に。
- 👤 マルチアカウント権限管理:マルチユーザー協業と権限制御。
- 🧱 Busen データバスアーキテクチャ:自社開発 Busen による疎結合なモジュール通信と確実なメッセージ配送。
- 📊 構造化ロギング:システムログを統一的な構造化フォーマットで出力。
- 🖥️ リアルタイム・ログコンソール:Web 上でログをリアルタイム表示し、デバッグ・障害調査に活用可能。
- 📟 TUI 管理画面:サーバー運用に最適なターミナル UI。
- 🧰 CLI ツールチェーン:自動化やスクリプト連携用の CLI。
- 🔗 オープン API と Webhook:外部連携・自動化ワークフロー向けの完全な API と Webhook。
- 🤖 MCP(Model Context Protocol):内蔵 MCP Server が中核機能(投稿、ファイル、統計など)を ほぼ全カバーで AI レイヤーに公開。Streamable HTTP、Tools & Resources、スコープ付き JWT を採用。
- 🌍 クロスデバイス対応:レスポンシブデザインでデスクトップ、タブレット、モバイルに対応。
- 🌐 i18n 多言語対応:UI の多言語切り替えに対応。
- 👾 PWA 対応:Web アプリとしてインストールでき、ネイティブアプリ風の体験。
- 🌗 テーマとダークモード:ダークモードとテーマ拡張に対応。
- 🎉 完全オープンソース:AGPL-3.0 で公開。トラッキング、サブスク、SaaS 依存はありません。
Docker Compose、スクリプトインストール、Kubernetes (Helm) の詳細な手順、そして既存インスタンスのアップグレード手順は DEPLOYMENT.md にまとめています。
最短で起動したい場合は、上の 60 秒で試す のコマンド一つで十分です。
FAQ を展開
-
Ech0 とは? Ech0 は、個人の思考、文章、リンクを素早く公開・共有するための軽量なオープンソース・セルフホスト・プラットフォームです。シンプルな UI と気が散らない体験を提供し、データは常にあなたの管理下に置かれます。
-
Ech0 は何ではない? Ech0 は伝統的なプロのノートアプリ(Obsidian や Notion など)ではありません。中心的なユースケースは、ソーシャルフィードやマイクロブログ・ストリームに近いものです。
-
Ech0 は無料? はい。Ech0 は AGPL-3.0 のもと完全に無料・オープンソースです。広告、トラッキング、サブスクリプション、サービスロックインはありません。
-
データのバックアップとインポートは? Ech0 は「スナップショット・エクスポート」と「マイグレーション・インポート」によるリストア/移行をサポートしています。デプロイ層では、マウントしたデータディレクトリ(例:
/opt/ech0/data)を定期的にバックアップしてください。デフォルトではコアデータはローカル DB に保存されます。オブジェクトストレージを有効化している場合、メディアアセットは設定したストレージバックエンドに書き込まれます。 -
Ech0 は RSS をサポート? はい。Ech0 は RSS 配信に対応しており、RSS リーダーから更新を購読できます。
-
「管理者に連絡してください」と表示されて投稿できないのは? 投稿はデフォルトで権限のあるアカウントに制限されています。初期化時、最初のアカウントが Owner(管理権限あり)になります。一般ユーザーは権限のあるアカウントから明示的に許可されるまで投稿できません。初回セットアップであれば 60 秒で試す を参照し、Owner となっているアカウントを確認してください。
-
詳細な権限マトリクスがないのはなぜ? Ech0 は現在、運用をシンプルかつ予測可能に保つため、軽量なロールモデル(Owner / Admin / 一般ユーザー)を採用しています。権限モデルはコミュニティのフィードバックに基づき今後も進化します。
-
他の人の Connect アバターが表示されないのは?
システム設定 - サービス URLに現在のインスタンス URL を設定してください。例:https://memo.vaaat.com(http://またはhttps://を含めること)。 -
設定の MetingAPI とは? 音楽カードが再生用ストリーム情報を解決するために使う API エンドポイントです。自前または信頼できるエンドポイントを指定できます。空欄の場合は、Ech0 のデフォルト・リゾルバが使われます。本番環境では自前のエンドポイントを推奨します。
-
新たに追加した Connect の一部しか表示されないのは? バックエンドはすべての Connect エントリのインスタンス情報を取得しようとします。インスタンスがダウンしていたり到達不能だったりする場合は破棄され、有効でアクセス可能な Connect データのみがフロントエンドに返されます。
-
コメントを有効化するには? パネルのコメント管理でコメントを有効にし、必要に応じてモデレーションと CAPTCHA を設定してください。Ech0 は CAPTCHA 検証用に
gocapを内蔵しているため、独立した CAPTCHA サービスのデプロイは不要です。 -
S3 ストレージの設定方法は? ストレージ設定でプロバイダー、Endpoint、Bucket、Access Key、Secret Key などを入力します。endpoint は
http://やhttps://なしの形式を推奨します。ブラウザがメディアを直接取得する場合、選択したポリシー(public-read 相当、または同等の CDN/Gateway 構成)でオブジェクトが読み取り可能であることを確認してください。 -
Passkey ログインを有効化するには?
SSO - PasskeyでWebAuthn RP IDとWebAuthn Originsを設定し、保存して「Passkey 準備完了」と表示された後、ブラウザのプロンプトに従って生体認証またはセキュリティキーをバインドします。 -
サードパーティ統合に関する公式声明 Ech0 が公式に承認していないサードパーティ統合プラットフォームやサービスは、公式サポートの対象外です。これらの利用に起因するセキュリティインシデント、データ損失、アカウントの問題、その他のリスクは、利用者およびサードパーティの責任となります。
-
サードパーティ統合(AI/自動化)からコメントを投稿するには? Ech0 は CAPTCHA とフォームトークン検証をバイパスする専用の統合用コメントエンドポイント
POST /api/comments/integrationを提供しています。「アクセストークン」管理から、scopecomment:writeと audienceintegrationを持つアクセストークンを作成し、Authorization: Bearer <token>ヘッダーに付与してください。リクエストボディとレスポンスについては、インスタンスが提供する OpenAPI ドキュメント(/swagger/index.html、ローカル開発では通常http://localhost:6277/swagger/index.html)を参照してください。このエンドポイントには独立したレートリミットが設定されており、コメントはsource=integrationでタグ付けされ、管理画面で識別できます。 -
ローカル/S3 ストレージのデータ配置、
keyのマッピング規則、S3 やローカル ⇄ オブジェクト間の移行についての詳細は? リポジトリ内ドキュメント ストレージ移行ガイド を参照してください。フラットなkeyの値が、ディスク上のパスや S3 オブジェクトキーにどうマップされるか(schema.ResolveとPathPrefixを含む)、保存されるFile.urlのスナップショットが UI とどう対応するか、静的な/api/filesアクセスと認証付きstreamルートの違い、S3 プロバイダーの切り替えやローカル⇄オブジェクトストレージ間のデータ移行に関する実務的なガイダンスを記載しています。
- バグを見つけた場合は Issues で報告してください。
- 新機能や改善のアイデアは Discussions で歓迎します。
- 公式 QQ グループ:
1065435773
Ech0 Hub は、登録された公開 Ech0 インスタンスのタイムラインを集約する公開ディレクトリです。あなたの公開インスタンスを登録する手順については、hub/README.md を参照してください。
| 公式 QQ コミュニティ | その他のグループ |
|---|---|
![]() |
なし |
運営
開発
ローカル開発のセットアップ、環境要件、フロントエンド/バックエンド連携については docs/dev/development.md を参照してください。より高レベルなアーキテクチャと規約については CLAUDE.md と CONTRIBUTING.md をご覧ください。
🌟 Ech0 が気に入ったら、ぜひプロジェクトに Star を付けてください!🚀
Ech0 は完全にオープンソースかつ無料です。継続的なメンテナンスと改善はコミュニティの支援に支えられています。プロジェクトがあなたのお役に立っているなら、ご支援いただけると嬉しいです。下の QR コードから寄付し、メモに GitHub のユーザー名を残していただければ、スポンサーウォール に追加されます。
| プラットフォーム | QR コード |
|---|---|
| Afdian | ![]() |
スポンサー、コントリビューター、ユーザーの皆さんに心より感謝します — 完全なスポンサーリストは SPONSOR.md を参照してください。
███████╗ ██████╗ ██╗ ██╗ ██████╗
██╔════╝ ██╔════╝ ██║ ██║ ██╔═████╗
█████╗ ██║ ███████║ ██║██╔██║
██╔══╝ ██║ ██╔══██║ ████╔╝██║
███████╗ ╚██████╗ ██║ ██║ ╚██████╔╝
╚══════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝


