diff --git a/hosts/chelsty-ha/capabilities.yaml b/hosts/chelsty-ha/capabilities.yaml new file mode 100644 index 0000000..ba169ff --- /dev/null +++ b/hosts/chelsty-ha/capabilities.yaml @@ -0,0 +1,24 @@ +host: chelsty-ha +site: chelsty + +capabilities: + networking: + reachability: tailscale-only + tailscale_ip: 100.122.201.23 + ingress_suitability: false + bandwidth: LTE + + runtime: + container_engine: docker + os: debian + + operational: + connectivity: intermittent + availability_target: best-effort + offline_first: true + uplink: lte + + deployment: + suitability: + - homeassistant + restricted: false diff --git a/hosts/chelsty-ha/host.yaml b/hosts/chelsty-ha/host.yaml new file mode 100644 index 0000000..2a99047 --- /dev/null +++ b/hosts/chelsty-ha/host.yaml @@ -0,0 +1,20 @@ +hostname: chelsty-ha +site: chelsty + +roles: + - homeassistant + +network: + tailscale_ip: 100.122.201.23 + +runtime: + root: /opt/homelab + +deployment: + mode: pull + managed_by: saturn + + constraints: + connectivity: + intermittent: true + uplink: lte diff --git a/hosts/chelsty-ha/services.yaml b/hosts/chelsty-ha/services.yaml new file mode 100644 index 0000000..a6da182 --- /dev/null +++ b/hosts/chelsty-ha/services.yaml @@ -0,0 +1,6 @@ +host: chelsty-ha +site: chelsty + +services: + homeassistant: + role: home-automation-controller diff --git a/hosts/chelsty/capabilities.yaml b/hosts/chelsty-infra/capabilities.yaml similarity index 87% rename from hosts/chelsty/capabilities.yaml rename to hosts/chelsty-infra/capabilities.yaml index 1821f13..2b5f5d4 100644 --- a/hosts/chelsty/capabilities.yaml +++ b/hosts/chelsty-infra/capabilities.yaml @@ -1,3 +1,6 @@ +host: chelsty-infra +site: chelsty + capabilities: hardware: cpu: @@ -8,33 +11,34 @@ capabilities: total_gb: 16 acceleration: type: none - + virtualization: supported: true type: kvm - + storage: persistence: persistent type: ssd capacity_gb: 250 - + networking: reachability: tailscale-only ingress_suitability: false bandwidth: LTE - + runtime: container_engine: docker os: debian - + operational: power_constraint: low-power connectivity: intermittent availability_target: best-effort - + offline_operation_required: true + deployment: suitability: - staging - - homeassistant + - infra - edge restricted: false diff --git a/hosts/chelsty/host.yaml b/hosts/chelsty-infra/host.yaml similarity index 83% rename from hosts/chelsty/host.yaml rename to hosts/chelsty-infra/host.yaml index 7e9a303..9a6aa7d 100644 --- a/hosts/chelsty/host.yaml +++ b/hosts/chelsty-infra/host.yaml @@ -1,9 +1,10 @@ -hostname: chelsty +hostname: chelsty-infra +site: chelsty roles: - edge - hypervisor - - homeassistant + - infra - staging network: diff --git a/hosts/chelsty/networking.yaml b/hosts/chelsty-infra/networking.yaml similarity index 94% rename from hosts/chelsty/networking.yaml rename to hosts/chelsty-infra/networking.yaml index ca59ca6..d796d45 100644 --- a/hosts/chelsty/networking.yaml +++ b/hosts/chelsty-infra/networking.yaml @@ -1,4 +1,4 @@ -host: chelsty +host: chelsty-infra uplink: type: lte @@ -20,7 +20,7 @@ exposure_classes: networks: home_automation_lan: - purpose: Home Assistant, MQTT, Zigbee coordinator, and local device control. + purpose: MQTT broker, Zigbee coordinator, and local device control. offline_required: true internet_required_for_core_operation: false diff --git a/hosts/chelsty/paths.yaml b/hosts/chelsty-infra/paths.yaml similarity index 72% rename from hosts/chelsty/paths.yaml rename to hosts/chelsty-infra/paths.yaml index 59434f1..69e63d8 100644 --- a/hosts/chelsty/paths.yaml +++ b/hosts/chelsty-infra/paths.yaml @@ -1,4 +1,4 @@ -host: chelsty +host: chelsty-infra runtime_root: /opt/homelab @@ -9,12 +9,6 @@ conventions: logs: /opt/homelab/logs services: - homeassistant: - data: /opt/homelab/data/homeassistant - config: /opt/homelab/config/homeassistant - logs: /opt/homelab/logs/homeassistant - backup_priority: critical - zigbee2mqtt: data: /opt/homelab/data/zigbee2mqtt config: /opt/homelab/config/zigbee2mqtt @@ -27,13 +21,13 @@ services: logs: /opt/homelab/logs/mosquitto backup_priority: high -backup_sets: - homeassistant: - include: - - /opt/homelab/config/homeassistant - - /opt/homelab/data/homeassistant - restore_note: Restore before starting the Home Assistant container. + stability-agent: + data: /opt/homelab/state + config: /opt/homelab/config/stability-agent + logs: /opt/homelab/events + backup_priority: low +backup_sets: zigbee2mqtt: include: - /opt/homelab/config/zigbee2mqtt diff --git a/hosts/chelsty/runtime/mosquitto/docker-compose.override.yml b/hosts/chelsty-infra/runtime/mosquitto/docker-compose.override.yml similarity index 100% rename from hosts/chelsty/runtime/mosquitto/docker-compose.override.yml rename to hosts/chelsty-infra/runtime/mosquitto/docker-compose.override.yml diff --git a/hosts/chelsty/runtime/mosquitto/mosquitto.conf b/hosts/chelsty-infra/runtime/mosquitto/mosquitto.conf similarity index 100% rename from hosts/chelsty/runtime/mosquitto/mosquitto.conf rename to hosts/chelsty-infra/runtime/mosquitto/mosquitto.conf diff --git a/hosts/chelsty/runtime/stability-agent/docker-compose.override.yml b/hosts/chelsty-infra/runtime/stability-agent/docker-compose.override.yml similarity index 80% rename from hosts/chelsty/runtime/stability-agent/docker-compose.override.yml rename to hosts/chelsty-infra/runtime/stability-agent/docker-compose.override.yml index f1a826e..3e3bd82 100644 --- a/hosts/chelsty/runtime/stability-agent/docker-compose.override.yml +++ b/hosts/chelsty-infra/runtime/stability-agent/docker-compose.override.yml @@ -1,7 +1,8 @@ services: stability-agent: environment: - - NODE_NAME=chelsty + - NODE_NAME=chelsty-infra + - SITE_NAME=chelsty - REDIS_HOST=100.108.208.3 - REDIS_PORT=6379 - REDIS_ENABLED=true diff --git a/hosts/chelsty/runtime/zigbee2mqtt/configuration.yaml b/hosts/chelsty-infra/runtime/zigbee2mqtt/configuration.yaml similarity index 100% rename from hosts/chelsty/runtime/zigbee2mqtt/configuration.yaml rename to hosts/chelsty-infra/runtime/zigbee2mqtt/configuration.yaml diff --git a/hosts/chelsty/runtime/zigbee2mqtt/docker-compose.override.yml b/hosts/chelsty-infra/runtime/zigbee2mqtt/docker-compose.override.yml similarity index 100% rename from hosts/chelsty/runtime/zigbee2mqtt/docker-compose.override.yml rename to hosts/chelsty-infra/runtime/zigbee2mqtt/docker-compose.override.yml diff --git a/hosts/chelsty-infra/services.yaml b/hosts/chelsty-infra/services.yaml new file mode 100644 index 0000000..f6fe5f5 --- /dev/null +++ b/hosts/chelsty-infra/services.yaml @@ -0,0 +1,10 @@ +host: chelsty-infra +site: chelsty + +services: + mosquitto: + role: local-mqtt-broker + zigbee2mqtt: + role: zigbee-mqtt-bridge + stability-agent: + role: node-stability-monitor diff --git a/hosts/chelsty/services.yaml b/hosts/chelsty/services.yaml deleted file mode 100644 index c7b51c1..0000000 --- a/hosts/chelsty/services.yaml +++ /dev/null @@ -1,126 +0,0 @@ -host: chelsty - -exposure_classes: - local-only: - description: Reachable only from CHELSTY-local networks or container networks. - public_ingress: false - tailscale_required: false - tailscale-internal: - description: Reachable through the Tailscale mesh by approved tailnet clients. - public_ingress: false - tailscale_required: true - public: - description: Reachable from the public internet through an explicit ingress path. - public_ingress: true - tailscale_required: false - -operational_constraints: - uplink: lte - connectivity: intermittent - offline_operation_required: true - must_not_depend_on: - - saturn - - vps - - forgejo - -services: - homeassistant: - role: home-automation-controller - deployment_model: docker-compose - exposure: tailscale-internal - offline_required: true - depends_on: - local: - - mosquitto - - zigbee2mqtt - external: [] - ports: - - name: http - container_port: 8123 - protocol: tcp - runtime: - config_path: /opt/homelab/config/homeassistant - data_path: /opt/homelab/data/homeassistant - logs_path: /opt/homelab/logs/homeassistant - backup: - recommended: true - include: - - /opt/homelab/config/homeassistant - - /opt/homelab/data/homeassistant - notes: - - Back up before Home Assistant core, supervisor-equivalent, or integration upgrades. - - Keep local restore copies on CHELSTY because LTE connectivity may be unavailable during recovery. - - zigbee2mqtt: - role: zigbee-mqtt-bridge - deployment_model: docker-compose - exposure: local-only - offline_required: true - depends_on: - local: - - mosquitto - external: - - slzb-06u - coordinator: - name: slzb-06u - connection: network - usb_device: null - ports: - - name: frontend - container_port: 8080 - protocol: tcp - exposure: tailscale-internal - runtime: - config_path: /opt/homelab/config/zigbee2mqtt - data_path: /opt/homelab/data/zigbee2mqtt - logs_path: /opt/homelab/logs/zigbee2mqtt - backup: - recommended: true - include: - - /opt/homelab/config/zigbee2mqtt - - /opt/homelab/data/zigbee2mqtt - notes: - - Include configuration.yaml, database.db, coordinator backup files, and network key material. - - Restore Zigbee2MQTT state together with the SLZB-06U coordinator state when replacing hardware. - - mosquitto: - role: local-mqtt-broker - deployment_model: docker-compose - exposure: local-only - offline_required: true - depends_on: - local: [] - external: [] - ports: - - name: mqtt - container_port: 1883 - protocol: tcp - runtime: - config_path: /opt/homelab/config/mosquitto - data_path: /opt/homelab/data/mosquitto - logs_path: /opt/homelab/logs/mosquitto - backup: - recommended: true - include: - - /opt/homelab/config/mosquitto - - /opt/homelab/data/mosquitto - notes: - - Retain ACL, password, persistence, and bridge configuration if enabled. - - stability-agent: - role: node-stability-monitor - deployment_model: docker-compose - exposure: local-only - offline_required: true - depends_on: - local: - - mosquitto - external: [] - runtime: - config_path: /opt/homelab/config/stability-agent - data_path: /opt/homelab/state - logs_path: /opt/homelab/events - backup: - recommended: false - notes: - - Events and state are transient or can be reconstructed; high-frequency writes.