为什么要在飞牛NAS上部署Kasm Workspaces?
如果你拥有一台飞牛NAS(fnOS),除了文件存储和影音娱乐,它其实还具备强大的虚拟化潜力。Kasm Workspaces 是一个开源的容器化桌面流式传输平台,允许你在浏览器中直接运行完整的桌面环境或单个应用程序,无需安装任何客户端。结合飞牛NAS的硬件资源,你可以轻松拥有一个随时可访问的云端桌面,用于远程办公、开发测试或运行特定软件。
相比传统虚拟机,Kasm Workspaces 基于 Docker 运行,启动快、资源占用低,且支持 GPU 加速。本文将手把手教你如何在飞牛NAS上部署 Kasm Workspaces,并配置常用功能。
前期准备
在开始部署前,请确保你的飞牛NAS满足以下条件:
1. 飞牛NAS 系统版本为最新(建议 v0.8.0 以上)。
2. 已安装 Docker 和 Docker Compose(飞牛NAS 默认集成,可在应用中心确认)。
3. 拥有至少 4GB 可用内存和 10GB 可用存储空间(推荐 8GB 内存以流畅运行桌面)。
4. 网络环境正常,能够访问 Docker Hub 或使用国内镜像加速。
第一步:通过 Docker Compose 部署 Kasm
Kasm Workspaces 官方推荐使用 Docker Compose 进行部署。登录飞牛NAS的 SSH 终端(或通过“系统管理-终端”功能),执行以下步骤。
- 创建专用目录并进入:
mkdir -p /docker/kasm && cd /docker/kasm
- 下载官方 Compose 文件:
wget https://raw.githubusercontent.com/kasmtech/workspaces-images/develop/docker-compose.yaml
如果下载缓慢,可使用国内镜像替换 URL 中的 raw.githubusercontent.com 为 ghproxy.com/raw.githubusercontent.com。
- 编辑环境变量文件(可选但推荐):
创建一个
.env 文件来配置管理员密码和端口:
cat > .env << EOF
KASM_PORT=443
KASM_ADMIN_PASSWORD=YourStrongPassword123
EOF
将 YourStrongPassword123 替换为你的自定义密码,端口 443 可根据需求改为其他端口(如 8443)。
- 启动服务:
docker compose up -d
首次启动会拉取多个镜像,包括数据库、应用服务器和默认工作区,耗时约 5-10 分钟。等待全部容器状态显示为 healthy。
第二步:访问与初始配置
- 在浏览器中输入
https://你的飞牛NAS_IP:443(如果修改了端口则改为对应端口)。注意必须使用 HTTPS 协议,因为 Kasm 强制 TLS。
- 首次访问会显示证书警告,选择“继续前往”即可(这是自签名证书,后续可替换为域名证书)。
- 使用默认管理员账号
[email protected] 和密码 admin 登录。登录后系统会要求你修改密码,使用之前 .env 文件中设置的密码。
- 进入管理界面后,在左侧菜单选择“Workspaces” -> “Workspaces Registry”,点击“Sync”按钮同步官方应用商店。这会下载可用的桌面环境列表(如 Ubuntu、Chrome、VSCode 等)。
第三步:创建并启动你的第一个云端桌面
- 在管理界面中,进入“Workspaces” -> “My Workspaces”。
- 点击“Add Workspace”,在“Registry Images”标签下选择你想要的环境。推荐先选择“Kasm Web Desktop (Ubuntu Jammy)”作为基础桌面。
- 保持默认设置,点击“Save”保存。此时工作区已创建但未运行。
- 返回“My Workspaces”,点击对应工作区的“Start”按钮。系统会分配一个容器,并显示连接地址(通常为
https://你的IP:端口/#/workspace/xxx)。
- 点击“Connect”按钮,在浏览器中即可看到完整的 Ubuntu 桌面界面。你可以像使用本地电脑一样进行文件操作、安装软件。
第四步:优化配置与功能扩展
4.1 持久化用户数据
默认情况下,工作区内的数据在容器重启后会丢失。要持久化数据,需要修改 Docker Compose 文件:
- 编辑
docker-compose.yaml,在 services -> workspace-api 下添加卷挂载:
volumes:
- /docker/kasm/userdata:/opt/kasm/current/conf/userdata
- 在文件末尾的
volumes 字段中添加:
volumes:
userdata:
driver: local
driver_opts:
type: none
o: bind
device: /docker/kasm/userdata
- 执行
docker compose down && docker compose up -d 重建容器。
4.2 启用 GPU 加速(适合 Intel/AMD 核显)
飞牛NAS 通常搭载 Intel 核显,可用于硬件加速视频转码或图形渲染。在 docker-compose.yaml 的 workspace-api 服务中添加:
devices:
- /dev/dri:/dev/dri
environment:
- KASM_GPU_DEVICE=/dev/dri
重启后,在桌面内安装 glmark2 等测试工具即可验证加速效果。
4.3 使用反向代理实现域名访问
如果你有公网域名,可以通过反向代理(如 Nginx Proxy Manager)将 Kasm 的端口映射到子域名,同时自动申请 SSL 证书。Nginx 配置示例:
server {
listen 443 ssl;
server_name kasm.yourdomain.com;
location / {
proxy_pass https://192.168.1.100:443; # 替换为飞牛内网IP和端口
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
注意 Kasm 使用 WebSocket 进行流传输,必须配置 Upgrade 头。
常见问题与解决
启动工作区时提示“资源不足”:检查 Docker 资源限制,或在飞牛NAS的“系统管理-设置”中为 Docker 分配更多内存。
浏览器连接后黑屏:关闭浏览器硬件加速,或尝试更换浏览器(推荐 Chrome/Edge 最新版)。同时检查防火墙是否放行了 443 端口。
无法同步应用商店:确保飞牛NAS能够访问外网。如果使用代理,需在 Docker 环境变量中配置 HTTP_PROXY。
总结
通过以上步骤,你已经在飞牛NAS上成功部署了 Kasm Workspaces,获得了功能完整的云端桌面系统。这个部署方案充分利用了NAS的闲置计算资源,让你能随时通过任何设备(包括手机和平板)访问 Linux 桌面环境。后续你可以根据需求安装更多应用(如 Chromium 浏览器、WPS Office、开发工具),甚至将工作区分享给团队成员。Kasm 的容器化架构也意味着你可以在不影响NAS主系统的情况下进行各种实验,非常适合折腾和远程办公。