Webtop教程:用Docker在浏览器里跑完整Linux桌面

Webtop教程:用Docker在浏览器里跑完整Linux桌面
远程桌面的老问题
你在朋友家或者出差住酒店,想用电脑写点代码或者处理点工作上的事情。结果发现自己的电脑不在身边,借来的电脑不想装一堆软件,酒店的公共电脑又根本不敢登录自己的账号。
这时候你心里想的肯定是:要是有台远程电脑就好了。
以前的选择不外乎几种:远程桌面协议(RDP)、VNC、或者干脆开一台云服务器。这些方案要么配置麻烦,要么延迟感人,要么一个月下来费用够你买台新手机。
但现在有个新选择,一个Docker容器就能在浏览器里跑完整的Linux桌面环境。这不是概念演示,是真的能用的东西。项目叫 Webtop,来自 LinuxServer.io 团队。
Webtop是什么:Docker里的Linux桌面
简单说,Webtop 是一组 Docker 镜像,里面预装了一个完整的Linux桌面环境。这个桌面不是跑在本机上的,是跑在服务器或者nas里的容器里,然后通过浏览器访问。
技术原理不算复杂。它用了一个叫 KasmVNC 的东西来做画面传输,再加上 Selkies 这套流媒体技术,把Linux桌面的画面压缩后通过网络送到浏览器。鼠标键盘的输入反过来从浏览器传回容器。
这就好像你在浏览器里开了一个远程窗口,窗口那边是一台完整的Linux电脑。
支持哪些系统?官方提供了相当多的组合:
| 基础系统 | 可选桌面环境 |
|---|---|
| Alpine | i3, KDE Plasma (Wayland), MATE, XFCE |
| Ubuntu | i3, KDE Plasma, MATE, XFCE |
| Fedora | i3, KDE Plasma, MATE, XFCE |
| Arch | i3, KDE Plasma, MATE, XFCE |
| Debian | i3, KDE Plasma, MATE, XFCE |
| Enterprise Linux | i3, MATE, XFCE |
对于大多数用户来说,直接用默认的 Alpine + XFCE 就够了——体积小、启动快、兼容性好。当然如果你有特殊需求,比如就想用 KDE Plasma 的视觉效果,或者需要某个发行版特定的工具链,换个镜像标签就行。
Webtop安装:30秒Docker部署
比30秒还快。准备好 docker-compose.yml 文件,往服务器上一丢,执行 docker compose up -d,然后就完了。
services:
webtop:
image: lscr.io/linuxserver/webtop:latest
container_name: webtop
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Shanghai
volumes:
- ./webtop-config:/config
ports:
- "3080:3000"
- "3081:3001"
shm_size: 1gb
restart: unless-stopped
开放 3081 端口,浏览器访问 https://你服务器的IP:3081,接受那个 self-signed 证书的警告——然后你就看到桌面了。
整个过程比装一个 VSCode 插件还快。
不过有几个小细节提醒一下:
shm_size必须设置,1GB 比较稳妥。这东西相当于容器的内存盘,桌面渲染全靠它- 默认没有密码,自己用可以不管,放到公网必须加认证
/config目录要persist你的个人设置和文件,相当于这台"云电脑"的硬盘
这东西能用来做什么
我试了一段时间,发现几个特别实用的场景:
远程工作和跳板机是第一个。不用再忍受公司VPN的龟速,直接在家里或者任何有浏览器的地方打开Webtop,通过里面的终端连到公司服务器。浏览器窗口一关,数据不留痕迹。
测试不同Linux环境也很方便。想试试 Arch 滚动更新的刺激?或者验证某个工具在 Ubuntu 24.04 上的表现?开一个容器试试,不满意删掉重来,不会影响本机。
教学和演示场景下,给学生演示Linux操作,或者给同事展示某个开源项目的GUI界面,不需要让他们装虚拟机,直接发一个网页链接就行。
还有临时工作环境。在公共电脑上不想登录自己的账号?在Webtop里干活,所有的操作都在云端,本机不留任何痕迹。用完关掉,干干净凈。有些老工具在新的macOS或者Windows上兼容性一言难尽,扔到Webtop的容器里跑,反而省心。
几个需要注意的坑
没有的东西再好也有代价,Webtop也不例外。
性能是第一个。浏览器里跑桌面,画面是要压缩传输的。看视频、跑3D游戏这些场景不太适合。但日常办公、编程、浏览网页、跑命令行工具,这些完全没问题。
安全问题更值得关注。默认安装没有任何认证,端口对公网开放的话,任何人都能进来。而且容器里是passwordless的sudo,进来的人基本上想干什么干什么。
官方文档专门强调了这一点。解决办法是:
- 一定用HTTPS
- 放到反向代理后面,加上 Authelia 或者 Authentik 这种认证
- 或者至少设个 basic auth 的用户名密码
- 生产环境可以考虑加 HARDEN_DESKTOP=true 这个环境变量
最后,这东西不能替代本机电脑。做个比喻的话,它更像一辆共享单车,随时能用、随地可停,但要每天骑着它通勤,还是自己的山地车更顺手。
我的使用感受
我自己现在把 Webtop 当作一个随时可用的"备用系统"。手机、平板、任何一台能开浏览器的设备,都能立刻进入一个完整的Linux环境。
对于开发者来说,这东西的想象力空间很大。比如你可以在服务器上同时跑三个不同发行版的容器,分别测试你的代码在不同环境下的表现。比如你可以在家里nas上部署一个,随时远程上去写代码,不用背着电脑跑。
LinuxServer.io 这个团队做容器镜像的水平确实可以。镜像体积控制得不错,更新也及时,社区反馈的问题处理得挺快。
值不值得试试
如果你想要一个随时可用的Linux图形环境,不想被虚拟机或者云服务器的费用绑定,或者对浏览器远程桌面这个概念感到好奇,Webtop 值得你花5分钟试试。
如果你是那种追求极致性能、需要在本地跑重度图形应用的人,那 Webtop 不适合你。它解决的是"随时随地有个Linux桌面用"这个需求,不是"替代本机系统"。
但话说回来,这个需求其实比想象中更常见。只是以前没有这么简单粗暴的解决方案。现在有了,一个容器,一个命令,浏览器一开,Linux桌面就摆在眼前。
常见问题
Webtop和VNC有什么区别?
VNC是传统的远程桌面协议,画面是完整传输的,延迟高、带宽消耗大。Webtop用的是KasmVNC,它会压缩传输画面,只更新变化的部分,所以延迟更低,浏览器打开就能用,不需要额外客户端。
Webtop能替代本地Linux系统吗?
不能。Webtop的画面经过了压缩传输,看视频、跑3D应用会有些卡顿。它更适合命令行操作、编程、测试软件等场景。如果需要跑图形密集的应用,还是本地虚拟机更合适。
Webtop安全吗?
默认情况下不安全。容器里是passwordless的sudo,没有任何认证。建议只在内网使用,或者放到反向代理后面加上认证。官方推荐用SWAG配合Authelia做访问控制。