Kasm Workspaces

Kasm Workspaces 是在浏览器里运行完整应用/桌面/浏览器的 云工作空间平台

你会看到:

  • 浏览器里再打开一个 Chrome / Linux 桌面
  • 像用本地电脑一样操作
  • 所有计算都在服务器

Kasm 的核心能力

  • 浏览器里跑浏览器(最常用 Chrome / Chromium / Firefox)、OS 桌面(Ubuntu / XFCE、Kali Linux 等)、应用(GUI 软件、Terminal 等)
  • 多用户(账号)登录且完全隔离(每个用户一个容器)
  • 支持自动销毁
  • WebRTC 显示协议提供低延迟画面流

部署步骤

docker-compose.yaml
services:
kasm:
image: lscr.io/linuxserver/kasm:latest
container_name: kasm
privileged: true
environment:
- KASM_PORT=443
volumes:
- ./data:/opt
- ./profiles:/profiles
ports:
- 3000:3000
- 443:443
restart: unless-stopped

启动后,首先使用 https://<IP>:3000 进行初始化,初始化时需要设置管理员账号密码信息。初始化成功后,通过 https://<IP>:443 连接 Workspaces。

常用配置

在 Workspaces 中使用中文输入法

默认大多数的 Workspace 容器启动时都是没有中文输入的。如果要提供中文输入,可以使用系统提供的 IME Input Mode 。它可以将本地电脑的输入映射到 Kasm Workspaces 中。只需在对应的 Workspace 中开启 IME 配置即可。

  1. 使用管理员登录 Kasm。定位到 Workspaces ,编辑对应的 Workspace(如 Kali Linux),找到 Docker Run Configuration Override (JSON)

    填入以下内容(如果有其他内容,插入以下内容),开启 IME

    {
    "environment": {
    "KASM_IME": "1"
    }
    }

  2. 销毁之前的 Workspace Session,运行新的 Workspace Session,打开左侧的配置菜单,找到 Advanced Settings ,将 IME Input Mode 配置为 On

    即可在 Workspace 中使用中文

用户数据持久化方案

在 Kasm 中,实现 Workspace 用户数据(如 Chrome 书签、桌面配置、文档等)持久化的标准方案是使用 Persistent Profiles(持久化配置层)

核心原理

Kasm 会将容器内的用户目录(通常是 /home/kasm )映射到宿主机的特定路径(即 docker-compose.yaml 中定义的 /profiles 目录)。当用户结束会话时,Kasm 会将该目录打包;下次启动时,再自动解压回容器。

开启 Persistent Profiles

  1. 确认宿主机存储路径,在 docker-compose.yaml 中,已经配置了持久化卷 /opt/kasm-workspaces/profiles:/profiles ,这表示所有持久化数据将保存在宿主机的 /opt/kasm-workspaces/profiles 目录下。
  2. 在 Kasm 管理后台开启功能(Web UI 操作)
    1. 登录管理后台 :使用 [email protected] (管理员账户)登录。
    2. 导航到 Settings -> Storage Providers ,点击 Add Storage Provider 添加存储,本示例使用本地存储(Local)
      • Name : local-storage
      • Provider Type : 保持为 Custom
      • Default Target : /profiles
      • Volume Configuration (JSON):
        {
        "driver": "local",
        "driver_opts": {
        "o": "bind",
        "type": "none",
        "device": "/profiles"
        }
        }
      • Mount Configuration (JSON) : 保持默认或确保它是空的 JSON 对象
  3. 点击左侧菜单 Workspaces -> Workspaces 。找到 Chrome 或 Ubuntu ,点击 Edit
  4. 导航到 Storage Mapping 页面,Add Storage Mapping ,选择之前创建的 local-storage 并添加
  5. Details 页面中,下翻页面找到 Persistent Profile Path ,在其中填入 /profiles/{user_id} ,启用 Enforce Workspace Persistent Profile

    Kasm 会自动将 {user_id} 替换为登录用户的 ID(例如 admin )。这样即便有多个用户,他们的数据也会分开放,互不干扰。

  6. 删除并开启新的 Session,如 Chrome 浏览器,在其中保存书签,删除 Session,重新启动 Session,看看之前保存的书签是否存在。或者检查宿主机的目录 /opt/kasm-workspaces/profiles/ 中是否有文件存在。配置了 Persistent Profile 后,在 Kasm Workspaces 中启动 Session 也会显示已经启用了 Persistent Profile