docs: restructure comparison table with concise cells

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

Yechan Kim committed Apr 2, 2026 at 22:41 UTC dfa83edb7a1f6731e117e10559f2d2db375bb9a6
2 files changed +22 -20
README.md
+11 -10
@@ -18,16 +18,17 @@
18
19 ## Comparison
20
21 -| Feature | Portal | ngrok | Cloudflare Tunnel | frp |
22 -|---------|--------|-------|-------------------|-----|
23 -| End-to-end encryption | **Yes** — TLS terminates on your side | Optional — TLS passthrough available, but edge termination by default | No — Cloudflare always decrypts at edge | Tunnel TLS only — client↔server encryption, not end-to-end |
24 -| Account required | **No** — SIWE-based ownership | Yes | Yes | No |
25 -| Self-hostable relay | **Yes** | Enterprise only | No | Yes |
26 -| MITM detection | **Yes** — built-in TLS exporter check | No | No | No |
27 -| Multi-relay failover | **Yes** | Managed by ngrok | Yes — built-in multi-DC | No |
28 -| Custom domain | **Yes** | Paid plans only | Yes | Yes |
29 -| Open source | **Yes** — MIT | No | Client only (cloudflared, Apache 2.0) | Yes — Apache 2.0 |
30 -| Transport | Raw TCP / UDP | HTTP/S, TCP, TLS | HTTP/S, TCP, UDP (private network) | HTTP/S, TCP, UDP |
21 +| | Portal | ngrok | Cloudflare Tunnel | frp |
22 +|---|---|---|---|---|
23 +| End-to-end encryption | **Yes** | Optional | No | No |
24 +| TLS termination | Client-side | Edge (default) | Edge (always) | Server-side |
25 +| MITM detection | **Built-in** | No | No | No |
26 +| Self-hostable | **Yes** | Enterprise only | No | Yes |
27 +| Multi-relay failover | **Yes** | Managed | Built-in multi-DC | No |
28 +| Custom domain | **Yes** | Paid plans | Yes | Yes |
29 +| Transport | Raw TCP / UDP | HTTP/S, TCP, TLS | HTTP/S, TCP, UDP | HTTP/S, TCP, UDP |
30 +| Open source | **MIT** | No | Client only (Apache 2.0) | Apache 2.0 |
31 +| Account required | **No** (SIWE) | Yes | Yes | No |
32
33 ## Quick Start
34
README.zh-CN.md
+11 -10
@@ -18,16 +18,17 @@
18
19 ## 对比
20
21 -| 功能 | Portal | ngrok | Cloudflare Tunnel | frp |
22 -|------|--------|-------|-------------------|-----|
23 -| 端到端加密 | **是** — TLS 在你这一侧终止 | 可选 — 支持 TLS 透传,但默认在边缘终止 | 否 — Cloudflare 始终在边缘解密 | 仅隧道 TLS — 客户端↔服务器加密,非端到端 |
24 -| 需要账号 | **否** — 基于 SIWE 的所有权验证 | 是 | 是 | 否 |
25 -| 可自托管中继 | **是** | 仅企业版 | 否 | 是 |
26 -| MITM 检测 | **是** — 内置 TLS exporter 检查 | 否 | 否 | 否 |
27 -| 多中继故障切换 | **是** | 由 ngrok 管理 | 是 — 内置多数据中心 | 否 |
28 -| 自定义域名 | **是** | 仅付费方案 | 是 | 是 |
29 -| 开源 | **是** — MIT | 否 | 仅客户端(cloudflared,Apache 2.0) | 是 — Apache 2.0 |
30 -| 传输协议 | 原生 TCP / UDP | HTTP/S, TCP, TLS | HTTP/S, TCP, UDP(私有网络) | HTTP/S, TCP, UDP |
21 +| | Portal | ngrok | Cloudflare Tunnel | frp |
22 +|---|---|---|---|---|
23 +| 端到端加密 | **是** | 可选 | 否 | 否 |
24 +| TLS 终止位置 | 客户端 | 边缘(默认) | 边缘(始终) | 服务器端 |
25 +| MITM 检测 | **内置** | 否 | 否 | 否 |
26 +| 可自托管 | **是** | 仅企业版 | 否 | 是 |
27 +| 多中继故障切换 | **是** | 托管 | 内置多数据中心 | 否 |
28 +| 自定义域名 | **是** | 付费方案 | 是 | 是 |
29 +| 传输协议 | 原生 TCP / UDP | HTTP/S, TCP, TLS | HTTP/S, TCP, UDP | HTTP/S, TCP, UDP |
30 +| 开源 | **MIT** | 否 | 仅客户端(Apache 2.0) | Apache 2.0 |
31 +| 需要账号 | **否**(SIWE) | 是 | 是 | 否 |
32
33 ## 快速开始
34