跳至正文
东倒西歪玩AI
东倒西歪玩AI
  • 首页
  • 首页
关

搜索

  • https://www.facebook.com/
  • https://twitter.com/
  • https://t.me/
  • https://www.instagram.com/
  • https://youtube.com/
Subscribe
未分类

Selkies 实测:用 Docker 搭一个浏览器里的远程 Chromium

作者 ddxw
2026年6月13日 1 分钟阅读
0

我一直想在服务器上放一个随时能打开的远程浏览器:不需要安装专用客户端,输入一个 HTTPS 地址就能用;浏览器环境和本地电脑分开,临时测试网页、登录低频账号或跑一些简单操作都比较方便。

这次测试用的是 LinuxServer.io 的 Chromium 容器。它的图形界面基于 Selkies,通过浏览器把服务器上的 Linux 桌面和 Chromium 画面传回来。鼠标、键盘和剪贴板也能在网页里使用,体验上比传统 VNC 更接近现代网页应用。

我的部署结构

实际链路比较简单:

本地浏览器
    ↓ HTTPS 域名
Caddy 反向代理
    ↓ 127.0.0.1:10000
容器 HTTPS 端口 3001
    ↓
Selkies + Chromium

容器内的 HTTPS 端口是 3001,我把它映射到宿主机的 10000 端口,再由 Caddy 提供正式域名入口。分辨率固定为 1280×720,帧率限制在 30fps,并设置 restart: unless-stopped,这样容器异常退出或服务器重启后可以自动恢复。

现在官方示例使用的镜像地址是 lscr.io/linuxserver/chromium:latest。下面是按这次测试参数整理的 Compose 示例,密码放在环境变量里,不要直接写进公开文件。

services:
  chromium:
    image: lscr.io/linuxserver/chromium:latest
    container_name: chromium
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Shanghai
      - CUSTOM_USER=browser
      - PASSWORD=${CHROMIUM_PASSWORD}
      - SELKIES_MANUAL_WIDTH=1280
      - SELKIES_MANUAL_HEIGHT=720
      - SELKIES_FRAMERATE=30
      - SELKIES_USE_CPU=true|locked
    volumes:
      - ./config:/config
    ports:
      - 127.0.0.1:10000:3001
    shm_size: "1gb"
    restart: unless-stopped

我特意把宿主机端口绑定到 127.0.0.1,避免 10000 端口直接暴露到公网。Caddy 再反向代理到容器的自签名 HTTPS:

browser.example.com {
    reverse_proxy https://127.0.0.1:10000 {
        transport http {
            tls_insecure_skip_verify
        }
    }
}

Caddy 会自动处理 WebSocket 升级,不需要另外写一套 WebSocket 规则。示例里的域名要换成自己的,容器密码也应使用单独生成的强密码。

没有 GPU,能不能用

这台服务器没有 /dev/dri 设备,所以 Selkies 只能使用 CPU 做 H.264 软件编码。1280×720、30fps 用来打开后台页面、查资料和做轻量网页操作基本可用,但滚动复杂网页、播放视频或遇到大量动画时,延迟和卡顿会明显增加。

Selkies 的体验主要取决于三件事:服务器和用户之间的网络距离、编码方式,以及页面本身的动态程度。服务器越远,往返延迟越高;没有硬件编码时,CPU 还要负责把桌面画面压成视频流。网页本身越“热闹”,需要传输和编码的变化也越多。

如果主机有 Intel 或 AMD 核显,可以把 /dev/dri 映射进容器,并按 LinuxServer 当前文档配置 Wayland 和编码节点。正确启用 Zero Copy 后,渲染和编码都能留在 GPU 上,CPU 占用和延迟会下降。没有 GPU 时,最直接的办法还是降低分辨率和帧率。

Cloudflare 不一定能让它更快

我测试时还试过让域名经过 Cloudflare 代理。普通网页走 CDN 往往会更快,但 Selkies 传输的是持续更新的桌面画面和长连接,Cloudflare 增加的中转节点未必有帮助。我的跨网络体验没有明显改善,有时链路反而更长。

如果目标是降低操作延迟,通常更有效的办法是选择离自己更近的服务器,或者直接使用质量稳定的网络入口。Cloudflare 可以继续承担 DNS、证书和访问控制等工作,但不要把它当成远程桌面的视频加速器。

安全问题比画质更重要

LinuxServer 在文档里明确提醒:这个容器默认没有认证,而且网页界面中包含终端,容器用户可以无密码使用 sudo。拿到访问权限的人不只是能打开 Chromium,还可能在容器里安装软件、读取挂载目录并探测内网。

因此,公开部署时至少要做到:

  • 不要把 3000、3001 或宿主机映射端口直接暴露到公网;
  • 使用独立强密码,并在 Caddy、VPN或身份代理层增加更可靠的访问控制;
  • 只挂载确实需要的目录,不要随手挂载 Docker Socket;
  • 不需要文件传输、终端和剪贴板时,考虑使用容器提供的加固选项关闭;
  • 除非旧内核确实存在兼容问题,否则不要为了省事使用 seccomp=unconfined。

容器里的 Basic Auth 适合可信内网中的基础防护。如果要长期放在公网,我更倾向于让它只通过 VPN、Tailscale 或带多因素认证的身份代理访问。

实际使用感受

Selkies 的优点很明确:打开浏览器就能访问,界面比传统 VNC/Xpra 更现代,键鼠、剪贴板和声音等能力也更贴近网页使用习惯。拿它做临时远程浏览器、轻量后台操作或隔离测试环境,确实方便。

它也不是一台“云端本地电脑”。没有 GPU、服务器距离较远时,卡顿仍然很现实。复杂网页、视频播放和高频滚动都容易暴露 CPU 编码和网络延迟的问题。如果追求接近本地桌面的流畅度,就需要更近的服务器和合适的硬件编码。

我的结论是:Selkies 很适合做一个随用随开的在线 Chromium,但要把预期放对。轻量操作不错,重度浏览一般;部署并不难,真正需要认真处理的是网络路径、GPU 编码和公网安全。

参考资料

  • LinuxServer.io Chromium 容器
  • Selkies 项目
  • Selkies 官方文档
作者

ddxw

关注我
其他文章
上一个

VPS Hermes Agent 配置 SuperGrok

下一个

Linux 服务器连接公网安全配置

暂无评论!成为第一个。

发表回复 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Copyright 2026 — 东倒西歪玩AI. All rights reserved. Blogsy WordPress Theme