banner
约 1,800 字
6 分钟

NAS安装Edge浏览器,docker版本,超级简单

-
-
无标签

摘要

本文介绍在 NAS 上利用 Docker 部署 LinuxServer 的 Microsoft Edge 镜像,以实现远程访问内网网页。部署关键在于设置 `shm_size` 为 1GB 防止崩溃,并开启 `seccomp:unconfined`。该方案吃 CPU,弱鸡机器体验不佳。同时,由于暴露面大,安全风险较高,建议使用 HTTPS 和强密码,并避免登录敏感账号。

前言

可能有人会问:都 2026 年了,为什么还要在 NAS 里装个浏览器? 直接在电脑、手机上看网页不就行了?

其实有个很实在的场景:NAS 所在的局域网里,某些设备和网页只有"内网"能访问。比如你的路由器管理后台、NAS 自带的一些服务、内网设备的管理界面——它们要么只对内网开放、要么在你外出时根本访问不到。这时候,如果 NAS 里能跑一个"常驻"的浏览器,你人在外面也能通过它去操作那些只对内网可见的页面,相当于一台24 小时在线、挂在家庭内网里的"云浏览器"

我用 LinuxServer 出品的 Docker 版 Microsoft Edge 在 NAS 上装了一个。不过要泼盆冷水:我这台 NAS 的 CPU(i3 级别、性能偏弱)跑它还是挺卡的,只适合临时使用,当主力浏览器不现实。如果你的 NAS 性能尚可,体验会好很多。

为什么不用别的方案

在决定装这个之前,可以先把几个常见替代方案的边界捋清楚,这样你能判断自己是不是真的需要它:

方案

能做什么

做不到什么

端口映射到公网

直接访问某个内网服务

每个服务都要开一个端口,暴露面大;加密和鉴权全靠服务自己

VPN / 异地组网

把设备"搬进"内网

每台客户端都要装、要配;临时借用别人的电脑就很麻烦

反向代理

把某个 HTTP 服务暴露出去

只能代理"服务",代理不了"在一个真浏览器里点来点去"

云浏览器(本文)

在浏览器里操作任何内网页面

性能受 NAS 限制;等于把一整个浏览器放上了网,安全要求高

关键差别在最后一行:云浏览器给的不是"连接",而是"操作"。有些内网设备的管理后台必须用真浏览器(要执行 JS、要处理证书、要两步验证),你在外面用手机浏览器直连是打不开的,但远程操作这台常驻浏览器就没问题。

它是怎么实现的

先理解原理,后面调参数才知道为什么。

LinuxServer 这个镜像底层用的是 KasmVNC:容器里跑了一个虚拟的 X 桌面和一个 Edge 进程,KasmVNC 把「桌面画面」实时编码成视频流,通过 WebSocket 推到你的浏览器;你的鼠标点击和键盘输入再回传进容器。

所以你在网页上看到的那块"屏幕",本质是一路视频流。这也解释了它两个最典型的性能特征:

  • 吃 CPU:画面一直在编码,NAS 的 CPU 弱就会卡;

  • 吃共享内存:浏览器靠 /dev/shm 做渲染进程之间的数据交换,Docker 默认只给 64MB,浏览器一开重一点的页面就会崩,所以 compose 里必须把 shm_size 调大。

安装开始

  1. 在 Docker 里执行下面的 Compose:

YAML
version: "3.7"

services:
  msedge:
    image: lscr.io/linuxserver/msedge:latest
    container_name: msedge
    security_opt:
      - seccomp:unconfined   # 浏览器需要,否则沙箱可能报错
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Shanghai
      - LC_ALL=zh_CN.UTF-8
      - CUSTOM_USER=修改为你的用户名
      - PASSWORD=修改为你的密码
      - EDGE_CLI=https://www.baidu.com   # 启动默认打开的网址
    volumes:
      - ./config:/config
      - ./fonts:/usr/share/fonts          # 中文字体映射
    ports:
      - 11124:3000    # HTTP
      - 11125:3001    # HTTPS
    deploy:
      resources:
        limits:
          cpus: '1'        # 限制最多用1核
          memory: 1G       # 限制最多1G内存
    shm_size: "1gb"        # 共享内存,浏览器吃这个
    restart: unless-stopped

说明:

  • CUSTOM_USER / PASSWORD 务必改掉默认值,这是浏览器 Web 界面的登录凭据,别裸奔;

  • EDGE_CLI 是启动后默认打开的网址,可以设成你自己的内网服务地址;

  • cpus/memory/shm_size 这几项是资源限制,防止浏览器把 NAS 吃垮(尤其像我这种弱鸡机器)。

几个参数为什么要这么写

参数

作用

为什么要动它

security_opt: seccomp:unconfined

放开容器的系统调用过滤

浏览器的沙箱会用到一些被 Docker 默认 seccomp 策略拦截的 syscall,不放开可能直接起不来

shm_size: "1gb"

扩大 /dev/shm

默认 64MB 对大页面不够用,症状是标签页频繁"崩溃"

PUID / PGID

容器内进程的运行身份

LinuxServer 镜像的统一约定,决定 ./config 里文件归谁所有;和宿主用户不一致会出现权限报错

cpus / memory 上限

给容器戴紧箍咒

浏览器是最容易失控的容器之一,没上限可能把 NAS 上的其他服务一起拖死

如果你是 4 核以上、8G 内存的机器,可以把 cpus 放到 '2'memory 放到 2G,卡顿会明显改善。shm_size 建议不要低于 1gb,这一项对稳定性的影响比 CPU 还大。

  1. 保存后构建并启动:

构建启动
  1. 浏览器访问它(注意用对端口):

访问界面

⚠️ 两个易踩的坑

  1. http(11124 端口)访问会提示错误,请改用 https(即 3001 对应的 11125 端口)访问;

  2. 如果误把 Edge 窗口全关了,在桌面右键Edge 就能重新打开。

重新打开Edge

第一个坑的原因是 KasmVNC 的 Web 界面强制走加密通道,明文端口只是给调试用的。因为用的是自签证书,浏览器会提示"不安全",点继续访问即可;想彻底消除这个提示,可以在反代那层配置正式证书。

  1. 打开后如果是空白页/乱码,说明容器里缺少中文字体。解决:从本机随便复制一个中文字体(如微软雅黑 msyh.ttf)到映射的 ./fonts 目录即可:

字体问题

字体复制进去后需要重启容器才生效。映射 ./fonts/usr/share/fonts 的好处是:以后换字体只要往目录里丢文件,不用重建镜像。

  1. 配置正常后,可以登录同步你自己的微软/Edge 账号,书签、密码、设置就都跟过来了:

登录同步

官方资料

这个镜像是 LinuxServer.io 维护的,官方文档写得挺全,进阶配置(KasmVNC 参数、双因子等)可以参考:

官方文档

⚠️ 安全提醒:这个容器等于一台"裸奔的电脑"

这一点必须单独讲讲,因为它比性能问题严重得多。

云浏览器和普通内网服务不是一个量级的暴露面。普通服务被攻破,损失是那一个服务;而这个容器被拿到,等于对方获得了一台能上网、能登录任何网站的浏览器——里面有你的书签、cookies、甚至已登录的账号会话。

所以如果你打算从公网访问它,下面几条建议是底线而不是可选项

  1. 改掉默认凭据,用足够长的随机密码;

  2. 不要直接端口映射到公网,走反向代理 + HTTPS(可以参考我写的 Lucky 那篇,配合 IP 白名单);

  3. 有条件就再叠一层 二次验证

  4. 别在这个浏览器里登录网银、支付类账号,它的会话数据留在 NAS 的容器卷里,多一处地方就多一分风险;

  5. 如果只是自己偶尔用,用完可以把容器停掉,按需启动。

常见问题

Q:卡得厉害,有救吗?

先确认瓶颈在哪。打开宿主机 htop 看 CPU,如果某个核跑满,那就是编码瓶颈,无解——只能升级硬件或降低使用强度(少开标签页、避开视频网站)。如果 CPU 不高但依然卡,检查 shm_size 是不是给够了。

Q:标签页频繁崩溃?

九成是 shm_size 太小。容器默认 64MB,而浏览器动辄要几百 MB,症状就是页面莫名其妙地整个崩掉。

Q:想换成 Chrome 或 Firefox 行不行?

可以,LinuxServer 有对应镜像,把 image 换成 lscr.io/linuxserver/chromium:latestlscr.io/linuxserver/firefox:latest,其余配置基本通用。换之前记得把 ./config 目录清掉,避免旧配置冲突。

Q:能听到网页声音吗?

默认没有音频设备,需要额外映射宿主机的音频设备并授权,实际体验一般,不建议在这上面看视频。

Q:容器一直重启?

先看日志 docker logs msedge。最常见的原因是 seccomp:unconfined 没加,或者 ./config 目录权限不对(PUID/PGID 和实际属主不一致)。

结尾与建议

在 NAS 里跑一个 Docker 版 Edge,核心价值就是给内网服务加一个"远程入口"——你不在家时,通过这台常驻 NAS 的浏览器,也能去操作路由器、NAS 后台、各种内网页面,比在外面干着急强。

几点建议:

  • 别在弱性能 NAS 上硬扛,浏览器很吃 CPU/内存,跑不动就别勉强,临时应急用用就好;

  • 需要"云浏览器"做更多自动化(批量登录、挂机等),这个方案也能当基础,但性能和稳定性看机器;

  • 记得改默认密码,且这个浏览器里的所有操作都可能留下记录,别在它里面登录过于敏感的东西。

如果你正好需要"人在外面访问家里内网页面",这个方案值得一试。有问题欢迎评论区交流。

END

相关文章

暂无相关文章