Standardize NOMAD host-run service paths

This commit is contained in:
Fizzlepoof
2026-05-15 03:08:03 +00:00
parent 5f52b2e6cf
commit b8926a3b75
5 changed files with 56 additions and 17 deletions

View File

@@ -2,16 +2,22 @@
Local static homepage for Johns morning briefing and peek-anytime news dashboard.
Canonical path:
Live runtime path:
```bash
/home/fizzlepoof/.openclaw/workspace/sgt_angel/truenas-stacks/home/doris-dashboard
/opt/doris-dashboard
```
Source path in the homelab repo:
```bash
/home/fizzlepoof/repos/truenas-stacks/home/doris-dashboard
```
Generated page:
```bash
/home/fizzlepoof/.openclaw/workspace/sgt_angel/truenas-stacks/home/doris-dashboard/public/index.html
/opt/doris-dashboard/public/index.html
```
## What it shows
@@ -29,14 +35,14 @@ Generated page:
## Generate manually
```bash
cd /home/fizzlepoof/.openclaw/workspace/sgt_angel/truenas-stacks/home/doris-dashboard
cd /opt/doris-dashboard
bin/generate_dashboard.py
```
## Preview locally
```bash
cd /home/fizzlepoof/.openclaw/workspace/sgt_angel/truenas-stacks/home/doris-dashboard/public
cd /opt/doris-dashboard/public
python3 -m http.server 8787
```
@@ -54,9 +60,10 @@ Installed in `fizzlepoof`s crontab:
```cron
# BEGIN DORIS DASHBOARD
DORIS_DASHBOARD_DIR=/home/fizzlepoof/.openclaw/workspace/sgt_angel/truenas-stacks/home/doris-dashboard
# Refresh local dashboard after digest collection windows.
5,35 6-23 * * * cd $DORIS_DASHBOARD_DIR && bin/generate_dashboard.py >> logs/generate.log 2>&1
DORIS_DASHBOARD_DIR=/opt/doris-dashboard
DORIS_DIGEST_DIR=/home/fizzlepoof/.openclaw/workspace/doris-digest
# Refresh local dashboard after digest collection windows; wrapper enforces Chicago daytime.
5,35 * * * * cd $DORIS_DASHBOARD_DIR && bin/cron_generate_dashboard.sh >> logs/generate.log 2>&1
# END DORIS DASHBOARD
```
@@ -139,7 +146,7 @@ Added sections/data:
The generated page still lives at:
```bash
/home/fizzlepoof/.openclaw/workspace/sgt_angel/truenas-stacks/home/doris-dashboard/public/index.html
/opt/doris-dashboard/public/index.html
```
And the LAN service remains:
@@ -151,7 +158,7 @@ http://10.5.1.16:8787/
Verification commands:
```bash
cd /home/fizzlepoof/.openclaw/workspace/sgt_angel/truenas-stacks/home/doris-dashboard
cd /opt/doris-dashboard
python3 -m py_compile bin/generate_dashboard.py
bin/generate_dashboard.py
curl -fsS http://127.0.0.1:8787/ | grep 'Doris Dashboard'
@@ -190,7 +197,7 @@ Implementation notes:
Verify:
```bash
cd /home/fizzlepoof/.openclaw/workspace/sgt_angel/truenas-stacks/home/doris-dashboard
cd /opt/doris-dashboard
bin/generate_dashboard.py
python3 - <<'PY'
import json
@@ -219,6 +226,16 @@ Important note:
- The interactive actions require the dashboard to be served by `bin/dashboard_server.py`, not plain `python -m http.server`.
## Runtime path sanity
The live systemd unit and crontab must point only at:
```bash
/opt/doris-dashboard
```
Do not run the dashboard from an agent workspace. Agent workspaces are for editing and staging; NOMAD host-run services belong under `/opt/<service>`.
## Cron fix — 2026-05-13
The dashboard cron now uses `bin/cron_generate_dashboard.sh`, which checks America/Chicago daytime internally. This avoids relying on `CRON_TZ`, which NOMAD's cron did not honor consistently.

View File

@@ -1,6 +1,10 @@
#!/usr/bin/env bash
set -euo pipefail
cd "$(dirname "$0")/.."
export DORIS_DASHBOARD_DIR="${DORIS_DASHBOARD_DIR:-$(pwd)}"
export DORIS_DIGEST_DIR="${DORIS_DIGEST_DIR:-/home/fizzlepoof/.openclaw/workspace/doris-digest}"
hour="$(TZ=America/Chicago date +%H)"
if (( 10#$hour < 6 || 10#$hour > 23 )); then exit 0; fi
bin/generate_dashboard.py

View File

@@ -7,9 +7,11 @@ Wants=network-online.target
Type=simple
User=fizzlepoof
Group=fizzlepoof
WorkingDirectory=/home/fizzlepoof/.openclaw/workspace/sgt_angel/truenas-stacks/home/doris-dashboard
ExecStartPre=/home/fizzlepoof/.openclaw/workspace/sgt_angel/truenas-stacks/home/doris-dashboard/bin/generate_dashboard.py
ExecStart=/usr/bin/python3 /home/fizzlepoof/.openclaw/workspace/sgt_angel/truenas-stacks/home/doris-dashboard/bin/dashboard_server.py
Environment=DORIS_DASHBOARD_DIR=/opt/doris-dashboard
Environment=DORIS_DIGEST_DIR=/home/fizzlepoof/.openclaw/workspace/doris-digest
WorkingDirectory=/opt/doris-dashboard
ExecStartPre=/opt/doris-dashboard/bin/generate_dashboard.py
ExecStart=/usr/bin/python3 /opt/doris-dashboard/bin/dashboard_server.py
Restart=on-failure
RestartSec=5