anon.li について
anon.liは、メールエイリアス、エンドツーエンド暗号化ファイル共有、暗号化フォームを提供するオープンソースのプライバシーサービスです。MCPインターフェースからエイリアス、受信者、暗号化ファイル投函のメタデータを管理できます。
主な機能
- 01メールエイリアスの作成と管理
- 02エイリアスの受信者設定
- 03暗号化ファイル投函メタデータの管理
- 04ブラウザーでのファイルとフォーム内容の暗号化
活用シーン
- 01サービスごとに別のエイリアスを使用
- 02エイリアスメールの受信者管理
- 03ファイル投函メタデータの確認
MCP 対応
anon.liのMCPインターフェースはOAuthを使い、メールエイリアス、受信者、暗号化ファイル投函のメタデータを管理します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://anon.li/api/mcpclaude mcp add --transport http anondotli-anon-li https://anon.li/api/mcp{"mcpServers":{"anondotli-anon-li":{"type":"http","url":"https://anon.li/api/mcp"}}}Cursor で開く{"servers":{"anondotli-anon-li":{"type":"http","url":"https://anon.li/api/mcp"}}}VS Code で開く{"mcpServers":{"anondotli-anon-li":{"type":"http","url":"https://anon.li/api/mcp"}}}{"mcpServers":{"anondotli-anon-li":{"serverUrl":"https://anon.li/api/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
オープンソースのメールエイリアス、エンドツーエンド暗号化ファイル共有、暗号化フォーム。デフォルトでプライバシーを保護します。
👋 ようこそ!動画で概要をご覧になりたい場合は、YouTubeの2分間の紹介動画をご覧ください。
anon.liを選ぶ理由
機密ファイルや本当のメールアドレスをブラックボックスの企業に渡すことにうんざりして、anon.liを作りました。
- メールプロバイダーを変えずに、本当の受信トレイを守るメールエイリアス。 Gmail、Proton、Fastmailをそのまま使えます。私たちは間に入り、スパムをブロックします。
- AES-256-GCMで暗号化したファイル共有。設計上、私たちがファイルを読むことはできません。 ファイルがネットワークに送信される前に、ブラウザーで暗号化されます。復号キーはURLフラグメントに保存されるため、サーバーに送信されることはありません。
- 暗号化フォーム。データベースに平文を保存せずに、機密性の高い回答を収集できます。 フォームの回答と添付ファイルは、フォームの所有者またはチーム向けに、回答者のブラウザーで暗号化されます。
- オープンソースのウェブアプリケーション(AGPL v3)。実装を検証できます。 このリポジトリで、ブラウザーの暗号化、アクセス制御、REST API、MCP サーバー、アプリケーションのデータモデルを監査できます。
製品
Alias - 匿名メール転送
サービスごとに固有のエイリアスを作成できます。実際の身元を明かさずに、エイリアスから返信できます。メールはホスト型メールボックスに保存されず、転送のためにサーバーを経由します。
- Freeプランではランダムエイリアス10個+カスタムエイリアス1個、Proプランではランダムエイリアス無制限+カスタムエイリアス100個
- SRSを使った匿名返信
- 受信者ごとのPGP暗号化(任意)
- 有料プランではカスタムドメインに対応
- 保管庫内の暗号化されたラベルとメモ
- ワンクリックで無効化し、スパムを即座に停止
Drop - エンドツーエンド暗号化ファイル共有
ファイルを安全に共有できます。すべてのファイルはブラウザーでAES-256-GCMを使って暗号化されます。
- ゼロ知識アーキテクチャ
- 自動有効期限(1〜30日)
- ダウンロード回数制限とパスワード保護
- ファイルプレビューは暗号化されたファイルの全バイトを公開するため、ダウンロード回数に含まれます
- 1回の転送につき最大250GB(Pro)
- 受信者はアカウントを作成せずにダウンロード可能
Form - エンドツーエンド暗号化データ収集
回答者のブラウザーで回答を暗号化するフォームを作成できます。アプリケーションには暗号文と暗号化された所有者キーが保存されます。認可された所有者は、保管庫のロックを解除した後、ローカルで回答を復号します。
- テキスト、選択肢、評価、スケール、ファイルアップロードの各フィールド
- 所有者ごとの暗号化キーとチーム共有の暗号化キー
- データ保持期間と送信数の制限をサーバー側で適用
- ブラウザーで暗号化したCSV/ZIPエクスポート
重要
このリポジトリには、Next.jsウェブアプリケーションとコントロールプレーンが含まれています。本番環境のSMTP/Haraka配信パイプライン(エイリアスメールの受信と転送を担います)は別サービスであり、ここには含まれていません。Aliasの管理はローカルで実行・開発できますが、エンドツーエンドのメール転送には、互換性のある独自のメール転送システムが必要です。
クイックスタート
anon.li は各種サービスと連携するアプリケーションであり、必要なインフラがない場合は意図的にすぐにエラーになります。ローカル開発には、Bun >= 1.4.3、Node.js 24、および以下のサービスの認証情報が必要です。
| サービス | 用途 | 必須 |
|---|---|---|
| PostgreSQL | アプリケーションデータと暗号化されたメタデータ | はい |
| プライベートな Cloudflare R2 互換バケット | Drop/Form の暗号文 | はい |
| Upstash Redis REST | レート制限、ロック、Webhook の冪等性 | はい |
| Resend | 認証メールとトランザクションメール | はい |
| Cloudflare Turnstile | ボット対策 | はい |
| Stripe | 決済クライアントと Webhook | はい |
| NOWPayments | 暗号資産決済 | いいえ |
| GitHub/Google OAuth | オプションのログインプロバイダー | いいえ |
| PostHog | プロダクト分析とエラー報告 | いいえ |
PostgreSQL、R2 の S3 互換代替環境、および Upstash 互換の Redis REST エンドポイントは、docker compose up -d(または podman compose)でローカル実行できます。対応する .env の値、Turnstile テストキー、Stripe CLI Webhook、現在の制限事項については、ローカル開発ガイドを参照してください。
git clone https://github.com/anondotli/anon.li.git
cd anon.li
bun install # also generates the Prisma client
cp .env.example .env
# Fill every required value in .env, then apply the committed migrations
bun run db:migrate:deploy
# Start the development server
bun dev
http://localhost:3000 を開きます。空欄のオプションプロバイダー変数は無効として正規化され、必須変数は起動時に検証されます。.env.example に記載されているとおり、AUTH_SECRET、CRON_SECRET、IP_HASH_PEPPER、REPORT_ENCRYPTION_KEY、DKIM_ENCRYPTION_KEY には、それぞれ個別に生成した値を使用してください。
prisma/schema.prisma を変更した場合は、bun run db:migrate --name concise_migration_name でマイグレーションを作成し、コミットしてください。使い捨てデータベース以外では bun run db:push を使用しないでください。このコマンドは、マイグレーション SQL にのみ存在するオブジェクト(部分ユニークインデックス domains_domain_verified_key など)をスキップし、マイグレーション履歴も残さないため、そのデータベースには db:migrate:deploy を適用できなくなります。
プルリクエストを作成する前に、CI で実行されるものと同じチェックを実行してください。
bun run audit
bun run check # lint, type-check, dead-code check, tests, and production build
本番環境へのデプロイ
本番データベースは、コミット済みの Prisma マイグレーションで更新する必要があります。本番環境では prisma db push を使用しないでください。レビュー済みのマイグレーション履歴を迂回してしまいます。
bun install --frozen-lockfile
bun run build
bun run db:migrate:deploy
bun run start
デプロイプラットフォームで、.env.example に記載されたすべての必須変数を設定してください。マイグレーションを適用する前にデータベースをバックアップし、新しいアプリケーションバージョンを起動する前に、リリースごとに一度 bun run db:migrate:deploy を実行してください。ビルドコマンドによって Prisma クライアントは自動的に再生成されます。すべての公開サービスのオリジンには HTTPS を使用してください。プレーンな HTTP が許可されるのは、ループバックの開発用エンドポイントのみです。
Vercel へのデプロイでは、CRON_SECRET と Upstash Redis も必要です。本番環境のスケジュールは、Hobby プランに対応する日次/週次の式に意図的に限定されています。スケジュール、ロールアウトのチェック、障害対応については、cron 運用ランブックを参照してください。
クライアント IP のレート制限では、信頼するエッジは 1 つのみです。Vercel は自動検出されます。Cloudflare の背後にあるセルフホストのオリジンでは、TRUSTED_PROXY_PROVIDER=cloudflare を設定し、オリジンへの直接トラフィックを Cloudflare のネットワークに制限してください。そうしないと、転送ヘッダーが偽装される可能性があります。
Cloudflare R2 の初回セットアップ
anon.li Drop は、サーバー側の中継によるボトルネックを避けるため、S3 署名付き URL を介してブラウザーと R2 の間で blob データを直接アップロードおよびダウンロードします。ダウンロード URL の有効期間は短く、マルチパートアップロード URL はアップロード ID、パート番号、正確な暗号化済みバイト数に紐付けられ、最長 7 日間有効なため、非常に大きな転送も完了できます。
- R2 バケットを作成し、プライベートのままにします。パブリックな
r2.devURL を無効にし、パブリックなカスタムドメインも設定しないでください。オブジェクトへのパブリックアクセスを許可すると、Drop の有効期限、取り消し、受信者、ダウンロード制限の各チェックを回避できてしまいます。 - バケットへのオブジェクト読み書きアクセス権を持つ R2 API 認証情報を作成し、
.envにR2_ACCESS_KEY_ID、R2_SECRET_ACCESS_KEY、R2_BUCKET_NAME、およびアカウントの S3 API エンドポイント(R2_ENDPOINT=https://<account_id>.r2.cloudflarestorage.com)を設定します。 - バケットの CORS ルールを設定し、アプリケーションのオリジンからの
GET、HEAD、PUTを許可して、ETagレスポンスヘッダーを公開します。ブラウザーからの転送は引き続き R2 に直接送信され、R2 はインターネットへのデータ送信料金を請求しません。
Cloudflare の署名付き URL は、カスタムドメインではなく S3 API ドメインでサポートされています。プライベートバケットへのアクセスは、デプロイ時の好みではなく、セキュリティ要件として扱ってください。
アーキテクチャと信頼境界
Browser (plaintext + keys)
├─ HTTPS → Next.js app (auth, policy, metadata, presigned capabilities)
└─ presigned HTTPS → private R2 bucket (ciphertext only)
Next.js app
├─ PostgreSQL (accounts, policy metadata, ciphertext metadata, wrapped keys)
└─ Redis REST (rate limits, locks, webhook idempotency)
External providers: Resend, Stripe, Turnstile, optional NOWPayments/PostHog/OAuth
Separate deployment: inbound/outbound alias mail transport
- Drop と Form のコンテンツは、ブラウザー内で Web Crypto により暗号化されます。共有リンクのキーは URL フラグメントに保持されるため、ブラウザーから HTTP リクエストで送信されることはありません。
- アプリケーションサーバーは、認証、認可、クォータ、有効期限、ダウンロード回数、暗号化されたキーの配布を担う信頼された存在です。通常の Drop/Form の平文キーを受け取ってはなりません。
- R2 はプライベートのままにする必要があります。クライアントに署名付き URL が渡されるのは、アプリケーションのポリシーチェック後に限られ、有効期間が短く、操作ごとに限定されています。
- PostgreSQL はアカウントデータ、ポリシーメタデータ、暗号文メタデータ、ラップされたキーを保存します。Redis は可用性と不正利用に影響を受けやすいため、Redis が利用できない場合、セキュリティ上重要な制限はフェイルクローズします。
- エイリアス転送はゼロ知識ではありません。互換性のあるメール転送サービスは、メッセージを転送する間、その内容を必然的に扱います。本番環境での保持モデルについては、セキュリティドキュメントをご覧ください。
技術スタック
Next.js 16(App Router)・React 19・PostgreSQL + Prisma・Better Auth(マジックリンク、メールアドレスとパスワード、TOTP 2FA)・Cloudflare R2・Stripe・Upstash Redis・Resend・Tailwind CSS + shadcn/ui
リンク
- ライブサイト:anon.li
- セキュリティアーキテクチャ:anon.li/security
- API ドキュメント:anon.li/docs/api
- サービス稼働状況:status.anon.li
- コントリビューション:CONTRIBUTING.md
- ソースコード:github.com/anondotli/anon.li
- 脆弱性の報告:[email protected]
法務およびライセンス
管轄区域:リヒテンシュタイン・プライバシーポリシー・利用規約・AUP・DMCA
GNU Affero General Public License v3.0 - Copyright © 2026 anon.li.
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。