daytona-dev
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseSkill: Daytona Dev Environment
Skill:Daytona开发环境
Launch the iPolloWork Electron app in a Daytona cloud sandbox. The real desktop
app runs on Daytona's XFCE/noVNC desktop stack and is accessible through your
browser.
在Daytona云沙箱中启动iPolloWork Electron应用。真实的桌面应用运行在Daytona的XFCE/noVNC桌面栈上,可通过浏览器访问。
Prerequisites
前提条件
- Daytona CLI installed: or download from GitHub releases
brew install daytonaio/cli/daytona - Logged in:
daytona login - Using the right Daytona organization for your workspace:
daytona organization use "<org-name>"
- 已安装Daytona CLI:或从 GitHub releases 下载
brew install daytonaio/cli/daytona - 已登录:
daytona login - 为工作区使用正确的Daytona组织:
daytona organization use "<org-name>"
Quick Start
快速开始
1. Create and start the sandbox
1. 创建并启动沙箱
bash
bash .devcontainer/test-on-daytona.sh [branch-or-commit]The helper uses the VNC snapshot, starts noVNC/Vite/Electron, and prints the
URLs. If the snapshot is missing, create it with
.
bash .devcontainer/create-daytona-ipollowork-snapshot.shUse the Daytona setup as four reusable pieces. Prefer the focused skills when a
request names one piece directly:
- for the real Electron/noVNC/CDP sandbox.
test-on-daytona.sh - for the observe -> act -> assert -> evidence loop.
daytona-flow-validator - for the cloud Den server sandbox.
test-server-on-daytona.sh - for Electron connected to a Daytona Den server.
daytona-electron-den - for standalone Chrome in the sandbox, separate from Electron.
daytona-chrome-cdp - for provider keys and eval-only secrets.
ipollowork-eval-secrets:/daytona-secrets - for screenshots, validation notes, and recordings.
ipollowork-eval-artifacts:/daytona-artifacts
Focused skills:
- for cloud server and Den flows.
daytona-cloud-server - for two-sandbox Electron + Den validation.
daytona-electron-den - for pass/fail validation and evidence.
daytona-flow-validator - for normal Chrome browser automation in Daytona.
daytona-chrome-cdp - for adding or verifying secrets.
daytona-secrets-volume - for real Electron UI validation.
daytona-electron-test - for screenshots, recordings, and PR evidence.
daytona-recording-artifacts
Or SSH in after the helper prints the sandbox name:
bash
daytona ssh <sandbox>
cd /workspacebash
bash .devcontainer/test-on-daytona.sh [branch-or-commit]该辅助脚本会使用VNC快照,启动noVNC/Vite/Electron,并打印URL。如果快照缺失,可通过创建。
bash .devcontainer/create-daytona-ipollowork-snapshot.sh将Daytona设置拆分为多个可复用模块。当请求直接指定某一模块时,优先使用对应的专项技能:
- 用于真实的Electron/noVNC/CDP沙箱。
test-on-daytona.sh - 用于观察 -> 执行 -> 断言 -> 取证的循环流程。
daytona-flow-validator - 用于云端Den服务器沙箱。
test-server-on-daytona.sh - 用于连接到Daytona Den服务器的Electron应用。
daytona-electron-den - 用于沙箱中的独立Chrome,与Electron分离。
daytona-chrome-cdp - 用于提供商密钥和仅评估用的密钥。
ipollowork-eval-secrets:/daytona-secrets - 用于截图、验证笔记和录制文件。
ipollowork-eval-artifacts:/daytona-artifacts
专项技能:
- 用于云端服务器和Den流程。
daytona-cloud-server - 用于双沙箱Electron + Den验证。
daytona-electron-den - 用于通过/失败验证及取证。
daytona-flow-validator - 用于Daytona中的常规Chrome浏览器自动化。
daytona-chrome-cdp - 用于添加或验证密钥。
daytona-secrets-volume - 用于真实Electron UI验证。
daytona-electron-test - 用于截图、录制文件和PR取证。
daytona-recording-artifacts
或者在辅助脚本打印沙箱名称后,通过SSH连接:
bash
daytona ssh <sandbox>
cd /workspace2. Get the noVNC URL
2. 获取noVNC URL
bash
daytona preview-url ipollowork-dev -p 6080Open that URL in your browser. You'll see the real Electron iPolloWork app.
bash
daytona preview-url ipollowork-dev -p 6080在浏览器中打开该URL,即可看到真实的Electron iPolloWork应用。
4. Get other URLs
4. 获取其他URL
bash
undefinedbash
undefinedDen Web dashboard (if Den stack is running)
Den Web控制台(若Den栈正在运行)
daytona preview-url ipollowork-dev -p 3005
daytona preview-url ipollowork-dev -p 3005
CDP debugging endpoint
CDP调试端点
daytona preview-url ipollowork-dev -p 9825
undefineddaytona preview-url ipollowork-dev -p 9825
undefinedWhat's Running
运行中的服务
| Service | Port | Description |
|---|---|---|
| noVNC | 6080 | See and interact with the Electron app in your browser |
| Vite HMR | 5173 | Hot module replacement for the React UI |
| CDP | 9825 | Chrome DevTools Protocol — for automation |
| Den Web | 3005 | Admin dashboard (only if MySQL is available) |
| Den API | 8788 | Control plane (only if MySQL is available) |
| 服务 | 端口 | 描述 |
|---|---|---|
| noVNC | 6080 | 在浏览器中查看并交互Electron应用 |
| Vite HMR | 5173 | React UI的热模块替换 |
| CDP | 9825 | Chrome DevTools Protocol — 用于自动化 |
| Den Web | 3005 | 管理控制台(仅当MySQL可用时) |
| Den API | 8788 | 控制平面(仅当MySQL可用时) |
Running with Den (full stack)
结合Den运行(全栈)
The devcontainer's includes MySQL. If you're using Daytona's raw sandbox mode (no Docker Compose), the Den stack won't start because there's no MySQL. Two options:
docker-compose.yml开发容器的包含MySQL。如果使用Daytona的原生沙箱模式(无Docker Compose),由于没有MySQL,Den栈将无法启动。有两种选择:
docker-compose.ymlOption A: Daytona sandbox + production Den
选项A:Daytona沙箱 + 生产环境Den
Just point the app to the production Den:
- Open the app via noVNC
- Sign in normally (uses production )
app.ipolloworklabs.com - All cloud features work
只需将应用指向生产环境Den:
- 通过noVNC打开应用
- 正常登录(使用生产环境)
app.ipolloworklabs.com - 所有云功能均可使用
Option B: Daytona sandbox + local Den
选项B:Daytona沙箱 + 本地Den
If you need a local Den (for testing customization, restrictions, etc.):
- Use the approach (requires Docker-in-Docker)
docker-compose.yml - Or run Den on your local machine and tunnel to the sandbox
如果需要本地Den(用于测试自定义功能、限制等):
- 使用方式(需要Docker-in-Docker)
docker-compose.yml - 或在本地机器上运行Den并通过隧道连接到沙箱
Common Commands
常用命令
bash
undefinedbash
undefinedList running sandboxes
列出运行中的沙箱
daytona list
daytona list
SSH into sandbox
SSH连接到沙箱
daytona ssh ipollowork-dev
daytona ssh ipollowork-dev
Check logs
查看日志
daytona exec ipollowork-dev 'tail -50 /tmp/electron.log'
daytona exec ipollowork-dev 'tail -50 /tmp/vite.log'
daytona exec ipollowork-dev 'tail -50 /tmp/start-vnc.log'
daytona exec ipollowork-dev 'tail -50 /tmp/electron.log'
daytona exec ipollowork-dev 'tail -50 /tmp/vite.log'
daytona exec ipollowork-dev 'tail -50 /tmp/start-vnc.log'
Inspect Electron CDP targets
检查Electron CDP目标
daytona exec ipollowork-dev 'curl -s http://127.0.0.1:9825/json/list'
daytona exec ipollowork-dev 'curl -s http://127.0.0.1:9825/json/list'
Capture a persistent screenshot artifact
捕获持久化截图制品
daytona exec ipollowork-dev 'bash .devcontainer/capture-daytona-screenshot.sh'
daytona exec ipollowork-dev 'bash .devcontainer/capture-daytona-screenshot.sh'
Restart just the Electron app
仅重启Electron应用
daytona exec ipollowork-dev 'bash -lc "pkill -f electron || true; pkill -f electron-dev || true"'
daytona exec ipollowork-dev 'bash -lc "cd /workspace && bash /opt/ipollowork-daytona/start-daytona-electron.sh --detach"'
daytona exec ipollowork-dev 'bash -lc "pkill -f electron || true; pkill -f electron-dev || true"'
daytona exec ipollowork-dev 'bash -lc "cd /workspace && bash /opt/ipollowork-daytona/start-daytona-electron.sh --detach"'
Stop the sandbox (preserves state)
停止沙箱(保留状态)
daytona stop ipollowork-dev
daytona stop ipollowork-dev
Start it again
重新启动沙箱
daytona start ipollowork-dev
daytona start ipollowork-dev
Delete (destroys everything)
删除沙箱(销毁所有内容)
daytona delete ipollowork-dev
undefineddaytona delete ipollowork-dev
undefinedUpdating the Code
更新代码
Inside the sandbox, the repo is at . To pull latest:
/workspacebash
daytona ssh ipollowork-dev
cd /workspace
git pull origin dev
pnpm install在沙箱内,代码仓库位于。如需拉取最新代码:
/workspacebash
daytona ssh ipollowork-dev
cd /workspace
git pull origin dev
pnpm installThen restart Vite/Electron
然后重启Vite/Electron
undefinedundefinedTroubleshooting
故障排查
Electron shows blank window:
Vite might not be running. Check . Restart with:
tail /tmp/vite.logbash
cd /workspace/apps/app && IPOLLOWORK_DEV_MODE=1 nohup npx vite --host 0.0.0.0 --port 5173 > /tmp/vite.log 2>&1 &noVNC shows black screen:
Xvfb/XFCE may have crashed. Restart the desktop stack:
bash
bash /opt/ipollowork-daytona/start-daytona-vnc.sh"no space left on device" when creating sandbox:
Use . The default Daytona disk can be 3 GB, which is not enough for
iPolloWork dependencies and sidecar prep. Also don't use — it
uploads the entire repo (with worktrees, node_modules). Use individual
flags for just the files needed.
--disk 10--context .--contextElectron can't connect to localhost:5173:
Vite must listen on , not just . The start script handles this, but if running manually use .
0.0.0.0localhostnpx vite --host 0.0.0.0Electron显示空白窗口:
Vite可能未运行。查看。通过以下命令重启:
tail /tmp/vite.logbash
cd /workspace/apps/app && IPOLLOWORK_DEV_MODE=1 nohup npx vite --host 0.0.0.0 --port 5173 > /tmp/vite.log 2>&1 &noVNC显示黑屏:
Xvfb/XFCE可能已崩溃。重启桌面栈:
bash
bash /opt/ipollowork-daytona/start-daytona-vnc.sh创建沙箱时提示“no space left on device”:
使用参数。Daytona默认磁盘可能为3GB,不足以容纳iPolloWork依赖项和辅助服务准备。另外不要使用 —— 它会上传整个仓库(包含工作树、node_modules)。应使用单独的标志仅上传所需文件。
--disk 10--context .--contextElectron无法连接到localhost:5173:
Vite必须监听,而不仅仅是。启动脚本已处理此问题,但如果手动运行,请使用。
0.0.0.0localhostnpx vite --host 0.0.0.0