src.nth.io/

summaryrefslogtreecommitdiff
path: root/homebridge
diff options
context:
space:
mode:
authorLuke Hoersten <[email protected]>2026-07-31 14:31:51 -0500
committerLuke Hoersten <[email protected]>2026-07-31 14:31:51 -0500
commite29fb72f3239e0d5317da659ec96de812247ce67 (patch)
tree2919a743b4b103276bd4d893e0019928ef006f1b /homebridge
parent8fa841b96947c05196cd3b102e3d2b68b7352a42 (diff)
homebridge: rebuild on apt nodejs and npm
26.04 ships nodejs 22, so no repo.homebridge.io vendor repo (its package bundled a private node runtime). npm installs homebridge, the role provides the unit, and the previously undefined dir and package vars get defaults.
Diffstat (limited to 'homebridge')
-rw-r--r--homebridge/defaults/main.yaml2
-rw-r--r--homebridge/tasks/main.yaml50
-rw-r--r--homebridge/templates/homebridge.service.j214
3 files changed, 48 insertions, 18 deletions
diff --git a/homebridge/defaults/main.yaml b/homebridge/defaults/main.yaml
index 24722a1..dbcf0c6 100644
--- a/homebridge/defaults/main.yaml
+++ b/homebridge/defaults/main.yaml
@@ -2,3 +2,5 @@
homebridge_pin: "031-45-154"
homebridge_port: "51900"
+homebridge_dir: "/var/lib/homebridge"
+homebridge_npm_packages: []
diff --git a/homebridge/tasks/main.yaml b/homebridge/tasks/main.yaml
index fd6e2c1..b9a4f70 100644
--- a/homebridge/tasks/main.yaml
+++ b/homebridge/tasks/main.yaml
@@ -1,31 +1,38 @@
---
-- name: add homebridge apt key
+# 26.04 ships nodejs 22 in apt, so no repo.homebridge.io vendor repo (its
+# package bundled a private node runtime). homebridge itself is an npm
+# package; apt npm puts global installs under /usr/local.
+- name: install nodejs
become: yes
- get_url:
- url: "https://repo.homebridge.io/KEY.gpg"
- dest: "/etc/apt/trusted.gpg.d/homebridge.asc"
- mode: "0644"
+ apt:
+ name:
+ - "nodejs"
+ - "npm"
-- name: add homebridge apt repo
+- name: add homebridge user
become: yes
- apt_repository: repo="deb [signed-by=/etc/apt/trusted.gpg.d/homebridge.asc] https://repo.homebridge.io stable main"
+ user: name="homebridge" shell="/bin/false" system="yes" create_home="no"
-- name: apt install homebridge
+- name: create homebridge dir
become: yes
- apt: name="homebridge"
- notify: restart homebridge service
+ file:
+ path: "{{homebridge_dir}}"
+ state: "directory"
+ owner: "homebridge"
+ group: "homebridge"
+ mode: "0755"
-- name: install homebridge apt deps
+- name: npm install homebridge
become: yes
- apt: name="{{homebridge_apt_packages}}"
+ npm: name="homebridge" global="yes"
notify: restart homebridge service
-# - name: install platform accessories
-# become: yes
-# npm: name="{{item}}" global="yes"
-# loop: "{{homebridge_npm_packages}}"
-# notify: restart homebridge service
+- name: install platform accessories
+ become: yes
+ npm: name="{{item}}" global="yes"
+ loop: "{{homebridge_npm_packages}}"
+ notify: restart homebridge service
# - name: configure homebridge
# become: yes
@@ -34,6 +41,13 @@
# dest: "{{homebridge_dir}}/config.json"
# notify: restart homebridge service
+- name: install systemd service
+ become: yes
+ template:
+ src: "homebridge.service.j2"
+ dest: "/lib/systemd/system/homebridge.service"
+ notify: restart homebridge service
+
- name: ensure homebridge is started
become: yes
- systemd: name="homebridge.service" enabled="yes" state="started"
+ systemd: name="homebridge.service" enabled="yes" state="started" daemon_reload="yes"
diff --git a/homebridge/templates/homebridge.service.j2 b/homebridge/templates/homebridge.service.j2
new file mode 100644
index 0000000..90e9485
--- /dev/null
+++ b/homebridge/templates/homebridge.service.j2
@@ -0,0 +1,14 @@
+[Unit]
+Description=Homebridge
+Wants=network-online.target
+After=network-online.target
+
+[Service]
+Type=simple
+User=homebridge
+ExecStart=/usr/local/bin/homebridge -U {{homebridge_dir}}
+Restart=on-failure
+RestartSec=10
+
+[Install]
+WantedBy=multi-user.target