Files
homelab-monitor/config/hosts.yaml
T
jhodgkin 542a3d8ce0
CI / web (push) Successful in 18s
CI / api (push) Successful in 24s
Wire up on-demand deep-check: API route + dashboard button
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>
2026-07-12 23:15:24 -06:00

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)