“
在公司午休想刷两集剧,打开手机才想起来:家里宽带没有公网 IP,NAS 上的 Emby、Jellyfin 只能在家里看。frp 要自己写配置、自己管证书;Cloudflare Tunnel 方便,但流量要过别人家的服务器,国内访问速度也看运气;直接把端口映射出去,又担心哪天被扫到弱口令。
有没有一个东西:家里的 NAS 主动连出去,外网用自己的域名 + HTTPS 访问,打开之前还要先登录一次?今天介绍的 Pangolin 就是干这个的。
📦 Pangolin · 项目速览
GitHubgithub.com/fosrl/pangolin
文档docs.pangolin.net
版本1.25.1(实测)
Star2 万+
端口80 / 443 / UDP 51820
定位自托管版 Cloudflare Tunnel
Pangolin 是一个开源、可自托管的“隧道式反向代理”,可以理解为能装在自己 VPS 上的 Cloudflare Tunnel。它由三部分组成:VPS 上跑的 Pangolin 面板 + Gerbil(WireGuard 隧道)+ Traefik(反代和证书),家里 NAS 上跑一个站点连接器(Newt / Pangolin CLI)。NAS 主动把隧道连到 VPS,所以家里不需要公网 IP,也不用在路由器上开任何端口。
⚠️ 注意
Pangolin 需要一台有公网 IP 的 VPS 和一个自己的域名(把 *.你的域名 解析到 VPS),VPS 要放行 TCP 80/443 和 UDP 51820/21820。这篇演示统一用 example.com 代替真实域名。
✦ 不用公网 IP
NAS 主动出站建 WireGuard 隧道,路由器一个端口都不用开
✦ 自动 HTTPS
每个服务一个子域名,Traefik 自动申请 Let's Encrypt 证书
✦ 访问前先登录
自带单点登录,还能加 PIN 码、密码、邮箱白名单,Emby 不再直接暴露在公网
✦ 访问规则
按 IP、IP 段、路径放行或拦截,比如家里网段直接放行、陌生 IP 必须登录
✦ 多站点管理
老家 NAS、公司小主机都可以作为站点接进来,一个面板统一管理
✦ 全中文界面
面板自带简体中文,在线状态、流量一目了然
✦ 可视化操作
创建站点、添加服务都在网页上点,不用手写 frp 那种配置文件
整个部署分两头:VPS 上装 Pangolin 服务端,NAS 上装站点连接器。
一、VPS:部署 Pangolin 服务端
先在域名商那里加两条解析:pangolin.example.com 和 *.example.com 都指向 VPS 的公网 IP。然后在 VPS 上建目录:
新建 docker-compose.yml:
再新建 config/config.yml,把域名换成你自己的,secret 用 openssl rand -hex 32 生成:
💡 小贴士
Traefik 还需要 config/traefik/traefik_config.yml 和 dynamic_config.yml 两个文件,内容比较长,直接照官方文档 Manual Install → Docker Compose 一节复制,把里面的 pangolin.example.com 和邮箱换掉即可。嫌麻烦的话,官方也提供一键安装脚本,会帮你生成这些文件。
启动并查看首次登录用的令牌:
二、初始化面板
浏览器打开 https://pangolin.example.com/auth/initial-setup,填入刚才日志里的令牌,创建管理员账号:

▲ 填入设置令牌,创建管理员账号
登录后会让你先建一个“组织”,名字随便起,ID 用英文:

▲ 新建组织
三、NAS:添加站点并运行连接器
接下来创建站点,类型选“新节点(推荐)”,名字写 NAS-Home:

▲ 创建站点,类型选新节点
往下拉会看到这个站点的身份 ID 和密钥,操作系统选 Docker、方法选 Docker Compose,面板会直接生成好配置:

▲ 面板自动生成 Docker Compose 配置
⚠️ 注意
密钥只在这个页面显示一次,先复制下来再点“创建站点”。
在 NAS(飞牛、群晖都行)上新建一个 docker-compose.yml,把面板给的内容粘进去:
docker compose up -d 跑起来后,日志里出现 Tunnel connection to server established successfully! 就说明隧道通了,回到面板,站点状态会变成“在线”:

▲ 站点在线,代理显示 Pangolin CLI
💡 小贴士
新版面板生成的连接器镜像是 fosrl/pangolin-cli,老教程里写的 fosrl/newt 也能用,两者都是站点连接器。
把 Emby / Jellyfin 发布出去
进入“公共资源 → 添加资源”,类型 HTTP(S),子域名写 jellyfin,目标选刚才的站点 NAS-Home,地址填 Jellyfin 在内网的 IP 和端口 8096(Emby 一样是 8096):

▲ 创建公共资源,目标指向 NAS 上的 8096
💡 小贴士
我这次演示时连接器和 Jellyfin 在同一台机器上,所以地址填的是 127.0.0.1。你在 NAS 上部署时填 NAS 的内网 IP,比如 192.168.1.10。
创建好后,资源列表里会显示访问地址,认证状态是“受到保护”:

▲ 资源列表
访问之前先登录
资源默认开启“平台单点登录 SSO”,也就是说,别人打开 jellyfin.example.com 时,看到的不是 Emby,而是 Pangolin 的登录页。你也可以改成 PIN 码、共享密码或者邮箱白名单:

▲ 认证设置:SSO、PIN 码、密码、邮箱白名单
外面的人打开链接,会先看到这个页面:

▲ 访问 jellyfin.example.com 先要登录
登录后才会进入 Jellyfin,后面就是熟悉的媒体库了:

▲ 通过隧道打开的 Jellyfin
家里网络直接放行
每次在家看片还要登录一次有点烦,可以在“访问规则”里加一条:IP 范围 192.168.1.0/24 旁路认证。规则从上往下匹配,家里网段直接进,外面的 IP 照样要先登录:

▲ 访问规则:家里网段旁路认证
⚠️ 注意
Emby / Jellyfin 的手机 App 和电视 App 不支持网页登录这一步,开了 SSO 以后 App 会连不上。要用 App 的话,可以把这个资源的 SSO 关掉,靠 Emby 自己的账号密码把关;或者只给家人的 IP 加放行规则。
家人怎么用
把家人拉进组织之后,他们登录面板首页会看到“资源启动器”,所有你开放给他们的服务都在这里,点一下就能打开:

▲ 资源启动器
Pangolin 适合“家里没有公网 IP,但手上有一台 VPS”的玩家:比 frp 多了图形界面、自动证书和登录保护,比 Cloudflare Tunnel 多了一份数据自主。缺点也要说清楚:VPS 的带宽决定了你在外面看片的画质,小水管的机器看 4K 原盘会比较吃力;另外 App 和网页 SSO 的兼容需要自己按上面的方法调一下。
HuanHQ技术栈
NAS · 自部署 · 家庭影音 · 开源工具觉得有用的话,点个赞和在看,关注一下吧
博客 www.huanhq.com
评论 (0)