Newer Linux distributions are trending towards using systemd
for managing daemons. Typically, systems based on Fedora, ArchLinux, or Debian (8 or later) use systemd
. This includes Ubuntu releases including and after 15.04, CentOS, and Red Hat. If you are unsure if your system is using systemd
, you may check with the following command:
ps -p 1 -o comm=
If the preceding command returns the string systemd
, continue with the instructions below.
A service file is needed to control Home Assistant with systemd
. The template below should be created using a text editor. Note, root permissions via sudo
will likely be needed. The following should be noted to modify the template:
-
ExecStart
contains the path tohass
and this may vary. Check withwhereis hass
for the location. -
For most systems, the file is
/etc/systemd/system/[email protected]_USER.service
with YOUR_USER replaced by the user account that Home Assistant will run as (normallyhomeassistant
). -
If unfamiliar with command-line text editors,
sudo nano -w [filename]
can be used with[filename]
replaced with the full path to the file. Ex.sudo nano -w /etc/systemd/system/[email protected]_USER.service
. After text entered, press CTRL-X then press Y to save and exit.
Python virtual environment
If youāve setup Home Assistant in virtualenv
following our manual installation guide for Raspberry Pi (or the Python installation guide), the following template should work for you. If Home Assistant install is not located at /srv/homeassistant
, please modify the ExecStart=
line appropriately. YOUR_USER
should be replaced by the user account that Home Assistant will run as (e.g homeassistant
).
The file will be called /etc/systemd/system/[email protected]_USER.service
[Unit]
Description=Home Assistant
After=network-online.target
[Service]
Type=simple
User=%i
WorkingDirectory=/home/%i/.homeassistant
ExecStart=/srv/homeassistant/bin/hass -c "/home/%i/.homeassistant"
RestartForceExitStatus=100
[Install]
WantedBy=multi-user.target
Now head down to the Next Steps section
Docker
If you want to use Docker, the following template should work for you.
[Unit]
Description=Home Assistant
Requires=docker.service
After=docker.service
[Service]
Restart=always
RestartSec=3
ExecStart=/usr/bin/docker run --name=home-assistant-%i -v /home/%i/.homeassistant/:/config -v /etc/localtime:/etc/localtime:ro --net=host homeassistant/home-assistant
ExecStop=/usr/bin/docker stop -t 2 home-assistant-%i
ExecStopPost=/usr/bin/docker rm -f home-assistant-%i
[Install]
WantedBy=multi-user.target
Next Steps
You need to reload systemd
to make the daemon aware of the new configuration.
sudo systemctl --system daemon-reload
To have Home Assistant start automatically at boot, enable the service.
sudo systemctl enable [email protected]_USER
To disable the automatic start, use this command.
sudo systemctl disable [email protected]_USER
To start Home Assistant now, use this command.
sudo systemctl start [email protected]_USER
You can also substitute the start
above with stop
to stop Home Assistant, restart
to restart Home Assistant, and āstatusā to see a brief status report as seen below.
$ sudo systemctl status [email protected]_USER
ā [email protected] - Home Assistant for YOUR_USER
Loaded: loaded (/etc/systemd/system/[email protected]_USER.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2016-03-26 12:26:06 CET; 13min ago
Main PID: 30422 (hass)
CGroup: /system.slice/system-home\x2dassistant.slice/[email protected]_USER.service
āā30422 /usr/bin/python3 /usr/bin/hass
āā30426 /usr/bin/python3 /usr/bin/hass
[...]
To get Home Assistantās logging output, simple use journalctl
.
sudo journalctl -f -u [email protected]_USER
Because the log can scroll quite quickly, you can select to view only the error lines:
sudo journalctl -f -u [email protected]_USER | grep -i 'error'
When working on Home Assistant, you can easily restart the system and then watch the log output by combining the above commands using &&
sudo systemctl restart [email protected]_USER && sudo journalctl -f -u [email protected]_USER
Automatically restarting Home Assistant on failure
If you want to restart the Home Assistant service automatically after a crash, add the following lines to the [Service]
section of your unit file:
Restart=on-failure
RestartSec=5s