From e29fb72f3239e0d5317da659ec96de812247ce67 Mon Sep 17 00:00:00 2001 From: Luke Hoersten Date: Fri, 31 Jul 2026 14:31:51 -0500 Subject: 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. --- homebridge/defaults/main.yaml | 2 ++ homebridge/tasks/main.yaml | 50 +++++++++++++++++++----------- homebridge/templates/homebridge.service.j2 | 14 +++++++++ 3 files changed, 48 insertions(+), 18 deletions(-) create mode 100644 homebridge/templates/homebridge.service.j2 (limited to 'homebridge') 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 -- cgit v1.2.3