Troubleshooting
Troubleshoot by request path first: Dash startup, reverse proxy, node reporting, historical data, traffic accounting, and Windows updates are separate paths.
Dash Does Not Start
View recent logs:
journalctl -u dash.service -n 200 --no-pager
Common causes:
- Config file was not found.
app.listenis missing.app.public_urlis missing.app.public_urlcontains a path prefix.auth.jwt_signing_keyis missing.monitor_dash_pwdis missing or contains invalid characters.- PostgreSQL connection failed.
- PostgreSQL
goose_db_versiondoes not match the binary. notify-config.keyis missing, too permissive, or does not match channel ciphertext.- Redis connection failed, ACL denies
PING/INFO server, or Redis is below 6.2.0. - TimescaleDB is unavailable.
Validate migration manually:
env DASH_HOME=/opt/Ithiltir-dash \
/opt/Ithiltir-dash/bin/dash migrate \
-config /opt/Ithiltir-dash/configs/config.local.yaml \
-debug
Check Redis separately with dash check-redis --addr 127.0.0.1:6379. Add --password-file <path> when required; the file must not have a trailing newline. This command does not read the Dash config file. A schema behind the binary must be migrated; a schema ahead of the binary cannot be used with that old binary.
Dash Update Requires Recovery
When status contains recovery_required, run:
sudo /opt/Ithiltir-dash/bin/dash update recover
Before migration, recovery can restore the old release. After migration starts, recovery completes forward. Do not delete transaction.env or update.block manually.
Page Loads but API Fails
Check the reverse proxy:
curl -i https://dash.example.com/api/version
curl -i https://dash.example.com/theme/active.css
curl -I https://dash.example.com/deploy/linux/install.sh
If / works but /api returns 404, the reverse proxy is probably forwarding only the SPA and not backend paths.
Node Does Not Come Online
Node service state:
systemctl status ithiltir-node.service
journalctl -u ithiltir-node.service -n 200 --no-pager
Check target config:
/var/lib/ithiltir-node/current/ithiltir-node report list
Check Dash report endpoint reachability:
curl -i https://dash.example.com/api/node/identity -H 'X-Node-Secret: <secret>' -d '{}'
Common causes:
- Secret mismatch.
- Target URL is not
/api/node/metrics. app.public_urlis not reachable from the node.- HTTPS certificate problem.
- Reverse proxy does not forward
/api/node/*. - System time is not synchronized.
/metrics Returns 503
Local mode may return 503 before the first successful sample. Wait one collection interval.
./node local 127.0.0.1 9100 --debug
curl http://127.0.0.1:9100/metrics
curl http://127.0.0.1:9100/static
Historical Metrics Are Missing
Check:
- Whether the user is logged in.
- Whether
history_guest_access_modeisby_node. - Whether node
is_guest_visibleis true. - Whether the node already has historical data.
Daily Traffic API Returns 409
/api/statistics/traffic/daily requires:
usage_mode=billing
Otherwise it returns:
{ "code": "traffic_daily_requires_billing", "message": "daily traffic requires billing mode" }
Manual traffic rebuild also requires Billing; Lite returns traffic_rebuild_requires_billing. Rebuild state resets to idle after Dash restart.
P95 Is null
P95 fields have values only when p95_status=available. Common states:
disabled: P95 is disabled for the node.lite_mode: global traffic mode is notbilling.insufficient_samples: not enough samples.snapshot_without_p95: the monthly snapshot has no P95 value.
Windows Node Does Not Update
Confirm the service starts the runner:
Get-Service ithiltir-node
Running ithiltir-node.exe push directly does not apply updates. The runner sets ITHILTIR_NODE_RUNNER=1 and replaces the binary.
Notification Channel Cannot Be Edited
An invalid stored channel remains listed with config=null and can only be deleted and recreated. If Dash itself cannot start, restore the configs/notify-config.key that matches the PostgreSQL backup; never overwrite it with a new key.