Docker 浏览器桌面(noVNC / Selkies)
用容器在 VPS 上跑远程浏览器(Chromium + 虚拟显示器 + noVNC + Web 远程桌面),网页直接访问。代表开源项目:linuxserver/chromium、noVNC、Selkies;澄清 browserless 是自动化非手动。
#type / resource
#status / growing
#tech / ops / vps
#resource / docker
#platform / linux
#platform / server
#interface / web
#media / tool
[!info] related notes
- 概念:VPS 远程图形化浏览器
- 对比:VPS 远程浏览器方案对比
- 安全收口:远程浏览器的安全访问
- HTTPS 收口:Tailscale Serve 原理
- 部署实战:在 Oracle 上部署远程浏览器实战
这是什么
用容器在 VPS 上跑一个“远程浏览器”:容器里启动 Chromium + 虚拟显示器(Xvfb)+ noVNC(Web VNC)+ Web 远程桌面。你直接访问 http://VPS-IP:端口 就能在网页里看到并操作远程 Chromium,无需装完整桌面。
浏览器访问 http://VPS:PORT
▼
容器:noVNC(Web) → Xvfb(虚拟显示) → Chromium
▼
目标网站(看到 VPS IP)
代表开源项目
- linuxserver/chromium:单浏览器容器,自带 Web 界面与 noVNC,相对轻量,适合“只想要一个远程浏览器”。提供
amd64与arm64镜像,Oracle Ampere 等 ARM 实例可直接用。 - noVNC:浏览器里的 VNC 客户端(WebSocket→VNC),常作为其它方案的 Web 前端。
- Selkies(selkies-gstreamer):基于 WebRTC 的容器化桌面流送,延迟更低,适合对流畅度敏感的场景。
- browserless / chrome:⚠️ 澄清:它是给 Playwright/Puppeteer 做自动化的无头/有头 Chrome 服务,不是给人手动刷网页的远程桌面;手动使用体验差,别当远程浏览器用。
[!note] 它默认是 HTTP,HTTPS 需要反向代理 noVNC / websockify 默认只提供 HTTP(如
http://host:3010)。要在浏览器里用可信 HTTPS 访问,需要额外一层做 TLS 终止 + 证书:要么用 Tailscale Serve(免域名、tailnet 内),要么在前面放 Caddy/Nginx(需域名)。这层”看起来多余”,实则承担了证书与加密——并不是容器本身缺陷。完整实战见 在 Oracle 上部署远程浏览器实战。
资源需求
- 比完整桌面轻:1GB 勉强可跑单浏览器容器,2GB 舒服;
- 仍受 Chromium 内存占用制约,开多标签照样吃内存。
优缺点
- ✅ 比桌面方案轻,部署一条
docker run; - ✅ 网页直接访问,无需远程桌面客户端;
- ✅ 隔离好,容器可随时销毁重建;
- ❌ 1GB 仍偏紧;
- ❌ Web 化体验略逊于原生远程桌面(尤其视频/拖拽)。
适合场景
低配 VPS(如 1C1G Oracle)想要“一个远程浏览器”,或希望网页直达、不想装桌面。
Related notes
- 概念:VPS 远程图形化浏览器
- 对比:VPS 远程浏览器方案对比
- 更重的平台:Kasm Workspaces 远程浏览器
- 安全:远程浏览器的安全访问
- HTTPS 收口:Tailscale Serve 原理
- 部署实战:在 Oracle 上部署远程浏览器实战