Homebridge is a fantastic mechanism for getting non-HomeKit-certified smart home tech talking to Apple. It’s nerd tech written for nerds, so it’s not the easiest thing in the world to get running. Here are some instructions to make things work on Debian and friends (including Raspberry Pi and Ubuntu):
Note that these instructions are going off old memory, so they may be slightly wrong – I’ll retest and fix anything that needs fixing soon!
First thing’s first – make sure everything is up to date:
sudo apt-get update sudo apt-get upgrade
Install Node.js
Next, install Node.js from the NodeSource GitHub (don’t use the repositories of your distro, as they’re probably outdated). After installation, update to the latest release and install build tools:
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash - sudo apt-get install -y nodejs sudo npm cache clean -f sudo npm install -g n sudo n stable sudo apt-get install -y build-essential
I like to reboot at this point, but that’s in no way essential.
Install Homebridge
The following installs Homebridge (note the --unsafe-perm
flag) and the Homebridge Dummy Switches plugin. The plugin isn’t critical, but I seem to remember having difficulties getting things working without at least one plugin. Besides, the Dummy Switches plugin can be fairly handy for certain types of automation..:
sudo apt-get install libavahi-compat-libdnssd-dev sudo npm install -g --unsafe-perm homebridge sudo npm install -g homebridge-dummy
Next, create a very basic config at ~/.homebridge/config.json
:
{ "bridge": { "name": "Homebridge", "username": "CC:22:3D:E3:CE:30", "port": 51826, "pin": "031-45-154" }, "description": "Homebridge Server", "platforms": [ {} ], "accessories": [ { "accessory": "DummySwitch", "name": "My First Switch" } ] }
Run Homebridge directly at the command line to test:
homebridge
An ascii-art QR code will appear; you can use this code to add Homebridge to HomeKit using the Home app. Ignore warnings about the accessory not being certified.
Create systemd service for Homebridge
The instructions below assume you used the instructions above to install Node.js and Homebridge – paths may be different if you didn’t.
Pre-requisites
The following commands create the service user and directories, then moves the existing configuration into the appropriate locations for starting Homebridge as a service. Finally, set the relevant permissions..:
sudo useradd -M --system homebridge sudo mkdir /var/lib/homebridge sudo cp ~/.homebridge/config.json /var/lib/homebridge/ sudo cp -r ~/.homebridge/persist /var/lib/homebridge sudo chmod -R 0777 /var/lib/homebridge
Systemd config files
Create /etc/default/homebridge
:
# Defaults / Configuration options for homebridge # The following settings tells homebridge where to find # the config.json file and where to persist the data # (i.e. pairing and others) HOMEBRIDGE_OPTS=-U /var/lib/homebridge # If you uncomment the following line, homebridge will log more # You can display this via systemd's journalctl: # journalctl -f -u homebridge #DEBUG=*
Create /etc/systemd/system/homebridge.service
:
[Unit] Description=Node.js HomeKit Server After=syslog.target network-online.target [Service] Type=simple User=homebridge EnvironmentFile=/etc/default/homebridge ExecStart=/usr/local/bin/homebridge $HOMEBRIDGE_OPTS Restart=on-failure RestartSec=10 KillMode=process [Install] WantedBy=multi-user.target
Finally, enable and start the service:
sudo systemctl daemon-reload sudo systemctl enable homebridge sudo systemctl start homebridge
Links and Howtos
Here’s what I used to get myself up and running:
https://github.com/nfarina/homebridge
https://github.com/nfarina/homebridge/blob/master/config-sample.json
https://gist.github.com/johannrichard/0ad0de1feb6adb9eb61a/
https://timleland.com/setup-homebridge-to-start-on-bootup/