542a3d8ce0
POST /api/devices/:ip/deep-check runs deep-check-device.sh on the CT122 host via SSH (reaches its own LAN IP), returns mDNS/SSDP/port scan results. "Deep check" button on unknown device rows in the dashboard shows results inline below the row. Verified end-to-end via SSH before wiring into the API: correctly identified Home Assistant via SSDP (friendlyName/manufacturer/model), and confirmed both a shell-injection attempt and an out-of-subnet IP get rejected cleanly by the forced command's input validation. Closes #15 (all four pieces: OUI, mDNS, manual labels, deep check). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
95 lines
2.8 KiB
YAML
95 lines
2.8 KiB
YAML
# Declares what the dashboard monitors. No secrets here — credentials come from
|
|
# environment variables (see .env.example) so this file can be committed safely.
|
|
proxmox:
|
|
host: 192.168.1.144
|
|
node: pve
|
|
|
|
# Target for the on-demand "deep check" device investigation (SSDP/mDNS/port
|
|
# scan). This is CT122's OWN host, since multicast needs real network access
|
|
# — see docs/device-discovery.md. Same monitor_ed25519 key as sshHosts below,
|
|
# but a separate authorized_keys entry on CT122 itself with a parameterized
|
|
# forced command (reads $SSH_ORIGINAL_COMMAND for the target IP).
|
|
deepCheck:
|
|
host: 192.168.1.103
|
|
username: root
|
|
|
|
# Bare-metal boxes Proxmox can't see. Connects with the dedicated
|
|
# `monitor` SSH key (see docs/ssh-collector-key-setup.md), read-only commands only.
|
|
sshHosts:
|
|
- id: omv
|
|
displayName: omv
|
|
group: Bare Metal
|
|
host: 192.168.1.180
|
|
username: root
|
|
diskPaths:
|
|
- path: /
|
|
label: os
|
|
- path: /srv/mergerfs/media
|
|
label: media
|
|
- id: ripper
|
|
displayName: ripper
|
|
group: Bare Metal
|
|
host: 192.168.1.171
|
|
username: jhodgkin
|
|
diskPaths:
|
|
- path: /
|
|
label: os
|
|
|
|
# LAN device discovery reads devices-raw.json (produced by scripts/discover-devices.sh
|
|
# via a systemd timer on the deploy host, see docs/device-discovery.md) and labels any
|
|
# IP found here as "known" instead of "unknown". Keyed by IP since these are all DHCP
|
|
# reservations, not truly static — update if a reservation ever changes.
|
|
knownDevices:
|
|
- ip: 192.168.1.144
|
|
name: pve (Proxmox host)
|
|
- ip: 192.168.1.180
|
|
name: omv (NAS)
|
|
- ip: 192.168.1.171
|
|
name: ripper (DVD ripper)
|
|
- ip: 192.168.1.103
|
|
name: homelab-monitor (this dashboard, CT122)
|
|
- ip: 192.168.1.226
|
|
name: audiobookshelf (CT100)
|
|
- ip: 192.168.1.119
|
|
name: nextcloud (CT101)
|
|
- ip: 192.168.1.185
|
|
name: nginxproxymanager (CT102)
|
|
- ip: 192.168.1.125
|
|
name: immich (CT103)
|
|
- ip: 192.168.1.243
|
|
name: jellyfin (CT104)
|
|
- ip: 192.168.1.245
|
|
name: rclone (CT105)
|
|
- ip: 192.168.1.168
|
|
name: booklore (CT106)
|
|
- ip: 192.168.1.200
|
|
name: actualbudget (CT107)
|
|
- ip: 192.168.1.135
|
|
name: graylog (CT108)
|
|
- ip: 192.168.1.172
|
|
name: zabbix (CT109)
|
|
- ip: 192.168.1.215
|
|
name: cloudflared (CT110)
|
|
- ip: 192.168.1.246
|
|
name: pve-runner / lisilou-portfolio (CT111)
|
|
- ip: 192.168.1.237
|
|
name: thatguylaserworks (CT112)
|
|
- ip: 192.168.1.149
|
|
name: n8n (CT113)
|
|
- ip: 192.168.1.236
|
|
name: keycloak (CT114, being decommissioned)
|
|
- ip: 192.168.1.184
|
|
name: postgresql (CT115)
|
|
- ip: 192.168.1.186
|
|
name: gitea (CT116)
|
|
- ip: 192.168.1.247
|
|
name: gitea-runner (CT117)
|
|
- ip: 192.168.1.187
|
|
name: homeassistant (CT118)
|
|
- ip: 192.168.1.183
|
|
name: mosquitto (CT119)
|
|
- ip: 192.168.1.241
|
|
name: vaultwarden (CT120)
|
|
- ip: 192.168.1.208
|
|
name: authentik (CT121)
|