Skip to content

Instantly share code, notes, and snippets.

@350d
Forked from johannrichard/homebridge
Last active October 10, 2020 14:05
Show Gist options
  • Star 6 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save 350d/c774e68f2986f8cf95be85ca9e7c3fcc to your computer and use it in GitHub Desktop.
Save 350d/c774e68f2986f8cf95be85ca9e7c3fcc to your computer and use it in GitHub Desktop.
Full install + Systemd Service for Homebridge
{
"bridge": {
"name": "Homebridge",
"username": "{MAC}",
"port": 51826,
"pin": "{PIN}"
},
"description": "This is an example configuration file. You can use this as a template for creating your own configuration file containing devices you actually own.",
"accessories": [],
"platforms": [
{
"platform" : "HomeBridgeControllerLink"
}
]
}
# 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=*
[Unit]
Description=Node.js HomeKit Server
After=syslog.target network-online.target
[Service]
Type=simple
User=homebridge
EnvironmentFile=/etc/default/homebridge
# Adapt this to your specific setup (could be /usr/bin/homebridge)
# See comments below for more information
#ExecStart=/usr/bin/homebridge $HOMEBRIDGE_OPTS
#ExecStart=/opt/node/bin/homebridge $HOMEBRIDGE_OPTS
ExecStart=/opt/node/lib/node_modules/homebridge/bin/homebridge $HOMEBRIDGE_OPTS
Restart=on-failure
RestartSec=10
KillMode=process
[Install]
WantedBy=multi-user.target
#!/bin/bash
apt-get update -y
apt-get upgrade -y
apt-get install -y git make
#recommended method for Pi3:
#curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
#apt-get install -y nodejs
#Pi3 + Pi ZERO W experiment:
curl -sL https://gist.githubusercontent.com/350d/c774e68f2986f8cf95be85ca9e7c3fcc/raw/install_nodejs | sudo -E bash -
apt-get install -y libavahi-compat-libdnssd-dev
npm install -g --unsafe-perm homebridge
npm install -g homebridge-controllerlink
#install Homebridge service
curl -sL https://gist.githubusercontent.com/350d/c774e68f2986f8cf95be85ca9e7c3fcc/raw/homebridge_service_install | sudo -E bash -
journalctl -f -u homebridge
#!/bin/bash
useradd -M --system homebridge
usermod -a -G video homebridge
mkdir /var/lib/homebridge
chmod 777 /var/lib/homebridge -R
wget https://gist.githubusercontent.com/350d/c774e68f2986f8cf95be85ca9e7c3fcc/raw/config.json -O /var/lib/homebridge/config.json -q
PIN=$((RANDOM%10))$((RANDOM%10))$((RANDOM%10))-$((1+RANDOM%9))$((1+RANDOM%9))-$((RANDOM%10))$((RANDOM%10))$((RANDOM%10))
sed -i -- "s,{PIN},$(echo $PIN),g" /var/lib/homebridge/config.json
sed -i -- "s,{MAC},$(echo $(cat /sys/class/net/$(ip route show default | awk '/default/ {print $5}')/address) | awk '{print toupper($0)}'),g" /var/lib/homebridge/config.json
wget https://gist.githubusercontent.com/350d/c774e68f2986f8cf95be85ca9e7c3fcc/raw/homebridge -O /etc/default/homebridge -q
wget https://gist.githubusercontent.com/350d/c774e68f2986f8cf95be85ca9e7c3fcc/raw/homebridge.service -O /etc/systemd/system/homebridge.service -q
chmod 777 /var/lib/homebridge -R
systemctl daemon-reload
systemctl enable homebridge
systemctl start homebridge
echo "Your PIN: "$PIN
PICHIP=$(uname -m)
#NODEVERSION="7.10.1"
#NODEVERSION="8.16.2"
NODEVERSION="14.13.1"
#NODE="$(curl -sL https://nodejs.org/dist/latest | grep $PICHIP'.tar.xz' | cut -d'"' -f2)"
#NODEFOLDER=$(echo $NODE | sed 's/.tar.xz//')
#wget https://nodejs.org/dist/latest/$NODE
NODEFOLDER=node-v$NODEVERSION-linux-$PICHIP
NODETARXZ=$NODEFOLDER.tar.xz
wget https://nodejs.org/dist/v$NODEVERSION/$NODETARXZ
tar xJvf $NODETARXZ
rm $NODETARXZ
rm -R -f /opt/node/
rm /usr/bin/node /usr/sbin/node /sbin/node /sbin/node /usr/local/bin/node /usr/bin/npm /usr/sbin/npm /sbin/npm /usr/local/bin/npm 2> /dev/null;
mkdir -p /opt/node
mv $NODEFOLDER/* /opt/node/
rm -R -f $NODEFOLDER
update-alternatives --install "/usr/bin/node" "node" "/opt/node/bin/node" 1
update-alternatives --install "/usr/bin/npm" "npm" "/opt/node/bin/npm" 1
@350d
Copy link
Author

350d commented Nov 11, 2017

  1. Download and install latest RASPBIAN STRETCH LITE on your Pi (use Etcher)
  2. Enable SSH in raspi-config or by creating /boot/ssh.txt file.
  3. Setup your Wifi connection for Raspberry if needed (Zero for example) by creating /boot/wpa_supplicant.conf file with content:
    ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
    update_config=1
    network={
        ssid="name"
        psk="password"
    }
  1. Run this command from console:
    curl -sL https://goo.gl/Qnx3vP | sudo -E bash -
  2. Use /var/lib/homebridge/config.json to config your Homebridge or HomeBridgeController App

@sassen
Copy link

sassen commented Feb 2, 2018

Hi,
I followed the instructions exactly, Pi Zero, Etcher, Stretch Lite etc... but got an error message. Any idea on how solve this?
screenshot 2018-02-02 09 41 55

@350d
Copy link
Author

350d commented Feb 7, 2018

@sassen I have Zero W here and everything works fine last time. I will check it with latest script later.

@Sico93
Copy link

Sico93 commented Feb 17, 2018

@sassen did you manage to get homebridge up and running?
@350d I'm having the exact same issue, running on an Zero W with the latest raspbian-stretch-lite (2017-11-29).

I followed your Instructions above exactly and I am able to reproduce the issue every time.

I Would Really love, if you could help finding a solution 👍

bildschirmfoto 2018-02-18 um 00 22 58

@bperlman
Copy link

Hi all, I'm having the same issues as @Sico93 and @sassen ... any ideas?

@350d
Copy link
Author

350d commented May 4, 2018

@Sico93 @bperlman @sassen Hello! Script was updated with new Homebridge location. You need to run one command from homebridge_full_install line 19 and it will fix your issues.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment