Docker 玩法

飞牛NAS部署 Kasm Workspaces:云端桌面

为什么要在飞牛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 终端(或通过“系统管理-终端”功能),执行以下步骤。

  1. 创建专用目录并进入:
mkdir -p /docker/kasm && cd /docker/kasm
  1. 下载官方 Compose 文件:
wget https://raw.githubusercontent.com/kasmtech/workspaces-images/develop/docker-compose.yaml

如果下载缓慢,可使用国内镜像替换 URL 中的 raw.githubusercontent.comghproxy.com/raw.githubusercontent.com

  1. 编辑环境变量文件(可选但推荐): 创建一个 .env 文件来配置管理员密码和端口:
cat > .env << EOF
KASM_PORT=443
KASM_ADMIN_PASSWORD=YourStrongPassword123
EOF

YourStrongPassword123 替换为你的自定义密码,端口 443 可根据需求改为其他端口(如 8443)。

  1. 启动服务:
docker compose up -d

首次启动会拉取多个镜像,包括数据库、应用服务器和默认工作区,耗时约 5-10 分钟。等待全部容器状态显示为 healthy

第二步:访问与初始配置

  1. 在浏览器中输入 https://你的飞牛NAS_IP:443(如果修改了端口则改为对应端口)。注意必须使用 HTTPS 协议,因为 Kasm 强制 TLS。
  2. 首次访问会显示证书警告,选择“继续前往”即可(这是自签名证书,后续可替换为域名证书)。
  3. 使用默认管理员账号 [email protected] 和密码 admin 登录。登录后系统会要求你修改密码,使用之前 .env 文件中设置的密码。
  4. 进入管理界面后,在左侧菜单选择“Workspaces” -> “Workspaces Registry”,点击“Sync”按钮同步官方应用商店。这会下载可用的桌面环境列表(如 Ubuntu、Chrome、VSCode 等)。

第三步:创建并启动你的第一个云端桌面

  1. 在管理界面中,进入“Workspaces” -> “My Workspaces”。
  2. 点击“Add Workspace”,在“Registry Images”标签下选择你想要的环境。推荐先选择“Kasm Web Desktop (Ubuntu Jammy)”作为基础桌面。
  3. 保持默认设置,点击“Save”保存。此时工作区已创建但未运行。
  4. 返回“My Workspaces”,点击对应工作区的“Start”按钮。系统会分配一个容器,并显示连接地址(通常为 https://你的IP:端口/#/workspace/xxx)。
  5. 点击“Connect”按钮,在浏览器中即可看到完整的 Ubuntu 桌面界面。你可以像使用本地电脑一样进行文件操作、安装软件。

第四步:优化配置与功能扩展

4.1 持久化用户数据

默认情况下,工作区内的数据在容器重启后会丢失。要持久化数据,需要修改 Docker Compose 文件:

  1. 编辑 docker-compose.yaml,在 services -> workspace-api 下添加卷挂载:
volumes:
  - /docker/kasm/userdata:/opt/kasm/current/conf/userdata
  1. 在文件末尾的 volumes 字段中添加:
volumes:
  userdata:
    driver: local
    driver_opts:
      type: none
      o: bind
      device: /docker/kasm/userdata
  1. 执行 docker compose down && docker compose up -d 重建容器。

4.2 启用 GPU 加速(适合 Intel/AMD 核显)

飞牛NAS 通常搭载 Intel 核显,可用于硬件加速视频转码或图形渲染。在 docker-compose.yamlworkspace-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主系统的情况下进行各种实验,非常适合折腾和远程办公。

💬 评论区
leave a comment

no comments yet