Prebuilt runtime ships only dashboard/dist (no package.json) so npm run preview ENOENT-crash-loops (254). console is a local-only static backend on 127.0.0.1:17000 (dashboard is a routerless SPA); serve it with python3 -m http.server on both Linux (console.service) and macOS (console.plist) — no second caddy (avoids clashing with the system caddy on :80; console is local-only and not proxied by default). Gate the apt caddy install on caddy_enabled (true on public-IP Linux VPS for the bridge ingress; macOS installs no caddy). Verified: debian13 + ubuntu26.04 console.service active serving 17000=200; macOS python3 serves the same dist locally. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
30 lines
1.2 KiB
Django/Jinja
30 lines
1.2 KiB
Django/Jinja
<?xml version="1.0" encoding="UTF-8"?>
|
||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||
<plist version="1.0">
|
||
<dict>
|
||
<key>Label</key>
|
||
<string>plus.svc.xworkspace.console</string>
|
||
<key>ProgramArguments</key>
|
||
<array>
|
||
<string>/bin/bash</string>
|
||
<string>-c</string>
|
||
<string>
|
||
export PATH="/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:$PATH"
|
||
# 预编译 runtime 只发 dashboard/dist(无 package.json),且 dashboard 是
|
||
# 无客户端路由的单页应用,故用 python3 静态伺服 dist 即可(macOS 无 caddy)。
|
||
exec /usr/bin/env python3 -m http.server {{ xworkspace_console_port }} --bind 127.0.0.1 --directory "{{ xworkspace_console_dashboard_dir }}/dist"
|
||
</string>
|
||
</array>
|
||
<key>RunAtLoad</key>
|
||
<true/>
|
||
<key>KeepAlive</key>
|
||
<true/>
|
||
<key>WorkingDirectory</key>
|
||
<string>{{ xworkspace_console_dashboard_dir }}/dist</string>
|
||
<key>StandardOutPath</key>
|
||
<string>{{ ansible_env.HOME }}/.local/state/xworkspace/console.log</string>
|
||
<key>StandardErrorPath</key>
|
||
<string>{{ ansible_env.HOME }}/.local/state/xworkspace/console.err.log</string>
|
||
</dict>
|
||
</plist>
|