家里的 NAS 上跑了 Immich、Jellyfin、各种 Docker 面板,出门想访问,是每个自托管玩家迟早要面对的难题。直接把端口映射出去风险太大,frp/ngrok 要有一台公网服务器还得自己配一遍,Tailscale 这类纯 VPN 又得在每台设备上装客户端。
Pangolin 想做的是把这件事”一站式”解决:它把反向代理和VPN合并成一个开源平台,基于 WireGuard,让你既能通过浏览器免客户端访问 Web 应用,也能通过客户端访问 SSH、RDP 乃至整个内网网段,而且全程带身份验证和细粒度权限控制。

是什么
Pangolin 是一个基于身份的开源远程访问平台,底层跑在 WireGuard 上。它不只是一个反向代理,也不是一个传统 VPN,而是两者的结合体:对外暴露 Web 服务时像反向代理一样自动签发 SSL、做负载均衡和健康检查;对内访问私有资源时又像 VPN 一样打通隧道。
它由几个组件拼起来:
- Pangolin:核心服务端,提供 dashboard、反向代理、资源策略和访问控制。
- Newt:隧道客户端(site connector),跑在你的 NAS 或家里设备上,以二进制或容器形式部署,主动向外建立隧道。
- Gerbil:可选的隧道层,同样基于 WireGuard,负责把 Newt 连回 Pangolin 服务端(不装也能当普通反代用)。
- Traefik:底层反向代理,自动处理路由和 Let’s Encrypt 证书。
为什么需要它
自托管服务的远程访问,常见几个坑:
- 裸端口映射:把 NAS 的 5000、8080 直接暴露在公网,等于给全网发邀请函,一旦有漏洞就被扫。
- frp/ngrok:能解决内网穿透,但要在服务端自己配反代、自己管证书,Web 访问体验一般。
- 纯 VPN(如 Tailscale):能进内网,但访问每个 Web 服务还是得开着 VPN 客户端,分享给家人朋友也不方便。
Pangolin 的卖点是零信任 + 浏览器访问:给某个 Web 应用开一条带登录认证的代理链接,对方用浏览器打开就能用,不用装任何东西;而 SSH、数据库这类非 Web 资源,再通过客户端按需连接。关键是权限细到”应用/服务”级别,不像传统 VPN 一进内网就看到全网。
它怎么工作
核心思路是”服务端在公网,客户端在内网主动连出去”:
- 你在一台有公网 IP 的小 VPS 上部署 Pangolin(以及可选的 Gerbil 隧道、Traefik)。
- 家里的 NAS 上跑 Newt 容器,它用出站隧道主动连回 Pangolin,不需要 NAS 有公网 IP,也不用开任何入站端口。
- 在 dashboard 里添加两种资源:
- Resource(反向代理):把一个内网 Web 服务(如 Immich)映射成一个带认证的域名,浏览器直接访问。
- Private Resource(私有资源):暴露 SSH、RDP 或整个网段,访问时需要在设备上装 Pangolin 客户端。

怎么部署(基于官方文档)
下面按官方 Quick Install 的步骤梳理,实际命令以文档为准。
前提条件
- 一台有公网 IP 的 Linux 服务器(root 权限,推荐 Ubuntu 20.04+ / Debian 11+);
- 一个域名,A 记录指向这台服务器;
- 一个邮箱(用于 Let’s Encrypt 证书和管理员登录);
- 防火墙开放 80/443 TCP 和 51820/21820 UDP。
服务端安装
SSH 进 VPS,下载并运行官方安装脚本:
curl -fsSL https://static.pangolin.net/get-installer.sh | bash
sudo ./installer
脚本会问你几个问题:选 Community Edition 还是 Enterprise Edition、根域名(如 example.com)、dashboard 域名(默认 pangolin.example.com)、Let’s Encrypt 邮箱,以及是否安装 Gerbil 隧道(默认装)。确认后它会自动拉起 pangolin / gerbil / traefik 三个容器,约 2–3 分钟。
初始化
安装完访问 https://pangolin.example.com/auth/initial-setup,从容器日志里取初始化 token:
sudo docker compose logs pangolin
粘贴 token 创建管理员账号,再建一个组织(Organization),就能开始加资源了。
把 NAS 接进来(Newt)
在 dashboard 里创建一个 Site(站点),Pangolin 会生成好 Newt 的部署命令。把这段命令复制到 NAS 上用 Docker 跑起来,Newt 就会主动连回服务端。之后在这个 Site 下添加 Resource,填内网地址(如 http://192.168.1.10:2283),外部就能通过域名访问了。

有什么坑
- 需要一台公网 VPS:这是最大前提,本身有成本(Pangolin 软件免费,VPS 要钱)。如果你本来就有代理节点或小机器,正好复用。
- 首次证书稍慢:第一个 SSL 证书校验可能要几分钟,浏览器先报不安全是正常的,等会再刷。
- Gerbil 是可选的:如果你只想要带认证的反向代理、不打算用隧道打通内网,可以只跑 Pangolin,它就是一个标准的反代。
- 排错看容器日志:底层是 Traefik,访问异常先看
pangolin和traefik两个容器的日志。 - 权限模型要规划:零信任的好处是细粒度,但意味着你要在 dashboard 里认真配置每个用户/角色能访问哪些资源,别一股脑全开。
授权与费用
Pangolin 采用双重授权:社区版基于 AGPL-3,免费且开源;企业版基于 Fossorial Commercial License,个人、爱好者和年营收低于 10 万美元的企业可免费使用。官方也提供完全托管的 Pangolin Cloud,不想自己维护可以直接用。
总结
对既有 NAS、又有公网 VPS 的自托管玩家,Pangolin 是个挺省心的方案:一块脚本装好服务端,家里跑个 Newt 容器,就能把 Immich、Jellyfin 这类服务用带登录的链接安全分享出去,还顺带解决了”不开放任何入站端口”的安全诉求。
它不是最轻量的方案(Tailscale 装俩客户端更快),但胜在浏览器即访问 + 零信任权限,特别适合要把服务分享给家人、又不想把整张内网交出去的场景。GitHub 上 21.6k Star,社区活跃,值得一试。
- 项目地址:https://github.com/fosrl/pangolin
- 官网:https://pangolin.net/
- 文档:https://docs.pangolin.net/
- License:AGPL-3(社区版免费)
- Star:21.6k
