Autostart Using Systemd - Community Guides - Home Assistant Community
Autostart Using Systemd - Community Guides - Home Assistant Community
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 to hass and this may vary. Check with whereis hass for the location.
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/home-
assistant@YOUR_USER.service. After text entered, press CTRL-X then press Y to save and exit.
[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
https://community.home-assistant.io/t/autostart-using-systemd/199497/print 1/19
9/13/24, 4:05 PM Autostart using systemd - Community Guides - Home Assistant Community
[Install]
WantedBy=multi-user.target
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
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.
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.
https://community.home-assistant.io/t/autostart-using-systemd/199497/print 2/19
9/13/24, 4:05 PM Autostart using systemd - Community Guides - Home Assistant Community
Because the log can scroll quite quickly, you can select to view only the error lines:
When working on Home Assistant, you can easily restart the system and then watch the log output by
combining the above commands using &&
Restart=on-failure
RestartSec=5s
21 Likes
Auto-start on Raspberry pi
https://community.home-assistant.io/t/autostart-using-systemd/199497/print 3/19
9/13/24, 4:05 PM Autostart using systemd - Community Guides - Home Assistant Community
Basic setup
Installing Home Assistant Core 2023.2.2 in a Python vEnv on Raspberry Pi 3B+ step by step
I'm really looking forward to the launch of hass I've been waiting a very long time for the launch is this
normal?
https://community.home-assistant.io/t/autostart-using-systemd/199497/print 4/19
9/13/24, 4:05 PM Autostart using systemd - Community Guides - Home Assistant Community
Autorestart of HA on reboot
0.1088 problems
Power cut kills Hassio - any fix while away from machine?
Custom Component: systemd (Run HA as a systemd notify daemon, with watchdog support!)
How come I have to run these commands to start the Home Assistant?
Installing HA v0.41.0 in virtualenvt not create hass file for autostart using systemd
Unable to get hassio tab on Web UI by running home assistant in python virtual environment
https://community.home-assistant.io/t/autostart-using-systemd/199497/print 5/19
9/13/24, 4:05 PM Autostart using systemd - Community Guides - Home Assistant Community
Thank you for this! These steps should absolutely be included in the manual installation guide. Or at least
include a link to this post.
2 Likes
Thanks for the guide. Home Assistant doesn’t start and I believe it has got to do with the folder structure.
Here’s the output for sudo systemctl status home-assistant@homeassistant
I have confirmed the Home Assistant install with whereis hass so I believe this is correct
https://community.home-assistant.io/t/autostart-using-systemd/199497/print 6/19
9/13/24, 4:05 PM Autostart using systemd - Community Guides - Home Assistant Community
system:
As in /etc/systemd/system/home-assistant@YOUR_USER.service
Description=Home Assistant
After=network-online.target
[Service]
Type=simple
User=%i
WorkingDirectory=/home/%i/.homeassistant
ExecStart=/opt/homeassistant/bin/hass -c "/home/%i/.homeassistant"
[Install]
WantedBy=multi-user.target
1 Like
Thanks for this great guide! It works perfect except … for locally executed command lines.
My HA is installed in Python virt.environment on Debian. I have a pretty simple CPUtemp sensor ( platform:
command_line) with
command: cat /sys/class/thermal/thermal_zone0/temp
This runs as expected when HA is manually invoked:
https://community.home-assistant.io/t/autostart-using-systemd/199497/print 7/19
9/13/24, 4:05 PM Autostart using systemd - Community Guides - Home Assistant Community
But today I implemented the ‘systemd’ script to autostart the HA and … I started to receive this strange error
message every minute:
It looks like HA (run by systemd) is invoking the command line with sh shell and not bash. Why? What am I
doing wrong?
I already checked the passwd file for homeassistant user and it is correctly set to /bin/bash. How can I
troubleshoot this further?
Now I see that systemd works properly and starts Home Assistant from bash. But then, Home Assistant (for
unknown reason) fires its own command line scripts from (much limited) sh shell. Gosh, why?
Or more precisely, why this happen only when HA is autostarted by this systemd script?
I am facing the same issue with the same setup (HA installed in virtual environment) : when starting Home
Automation manually with hass, I can run shell_commands without issue.
But when starting with the autostart systemd script, the commands are not successfull. In my case I am trying to
send an infrared signal to my amp with ir-ctl and tried to send the command directly or via a script
https://community.home-assistant.io/t/autostart-using-systemd/199497/print 8/19
9/13/24, 4:05 PM Autostart using systemd - Community Guides - Home Assistant Community
I’m having problems enabling the service. I installed in a python virtual environment.
Hass won’t execute out of a command line in its directory. Which is consistent with my assumption that hass is
a python script.
Thanks.
Here’s my resolution:
[Unit]
Description=Home Assistant
After=network-online.target
[Service]
Type=simple
User=%i
WorkingDirectory=/home/%i/.homeassistant
ExecStart=/home/pi/homeassistant/bin/python3 /home/pi/homeassistant/bin/hass
[Install]
https://community.home-assistant.io/t/autostart-using-systemd/199497/print 9/19
9/13/24, 4:05 PM Autostart using systemd - Community Guides - Home Assistant Community
WantedBy=multi-user.target
1 Like
Perfect guide !
Thanks
Thanks for the guide. It worked great after a few modifications for my environment.
If your configuration uses a serial port for ZWave make sure that the HomeAssistant account in the systemctl
file has access, or the daemon will start but not be able to communicate with the ZWave devices. Here is a link
that explains Automatic ACL assignment at boot time. The HomeAssistat install scripts create the file
/etc/udev/rules.d/90-extraacl.rules. This file gives permission to the USB serial ports for the user that ran the
install scripts. If you run under a different user, the file will have to be edited to grant permission to that user.
The instructions ought to include that if you already had a working installation and you’re just trying to get
Docker to start HA automatically on boot (because, say, as in my case, it used to start automatically but no
longer does and you can’t figure out why), you have to change the path to the config folder from
/home/%i/.homeassistant/ to whatever your correct current config path is. Otherwise you start over with
a fresh blank config.
I second @KupieTools
Broke my entire install… Got a fresh HA without supervisor (don’t know why, but that’s problematic to restore
a snapshot…). I don’t know how I’m gonna get out if this one. I ought to be more careful doing stuff I don’t
know enough about ^^
Edit: Nevermind, I was lucky enough to give the wrong folder so I did not overwrite anything so all is well.
Beware if you’re not sure what you’re doing^^
if you have a component that accesses network at startup, After=network-online.target may not be
sufficient. In my case, dns resolution was failing for my component when it accessed network at startup,
probably because systemd was starting hass too early.
The following helped me: https://unix.stackexchange.com/a/356189/62292
My systemd file is:
[Unit]
Description=Home Assistant
After=NetworkManager-wait-online.service
Requires=NetworkManager-wait-online.service
[Service]
Type=simple
User=%i
WorkingDirectory=/home/%i/.homeassistant
ExecStart=/srv/homeassistant/bin/hass -c "/home/%i/.homeassistant"
https://community.home-assistant.io/t/autostart-using-systemd/199497/print 11/19
9/13/24, 4:05 PM Autostart using systemd - Community Guides - Home Assistant Community
[Install]
1 Like
Help please. After some system changes I find that I cannot get the Supervisor container to start after a reboot.
[Unit]
Description=Hass.io supervisor
Requires=docker.service
After=docker.service dbus.socket
[Service]
Type=simple
Restart=always
RestartSec=5s
[Install]
WantedBy=multi-user.target
and tried
sudo systemctl daemon-reload
https://community.home-assistant.io/t/autostart-using-systemd/199497/print 12/19
9/13/24, 4:05 PM Autostart using systemd - Community Guides - Home Assistant Community
and
curl -Lo installer.sh https://raw.githubusercontent.com/home-assistant/supervised-
installer/master/installer.sh
bash installer.sh
But still end up having to start the supervisor container manually. I see other posts that indicate some portion of
the install might need to be re issued but have not been able to pick that apart and apply it to the current HA.
My enviro
core-2021.2.3
supervisor-2021.02.11
Docker 20.10.4
Raspbian GNU/Linux 10
TIA
1 Like
and
Funny coincidence, Same time you sent that - I was just watching the system restart and for a bit Supervisor
was running and then fell over. I can restart the container and all is well>?>? Maybe there is another sequence
issue. I dunno. Very frustrate. This all started with trying out TailScaled in place of Wireguard
https://community.home-assistant.io/t/autostart-using-systemd/199497/print 13/19
9/13/24, 4:05 PM Autostart using systemd - Community Guides - Home Assistant Community
What triggered my problem with HA not starting up after reboot is Ubuntu apt upgrade/update
1 Like
Same problem after Raspbian update (PI 3). In hassio-supervisor service container don’t start with key --attach
(in file /usr/sbin/hassio-supervisor last line with docker start --attach hassio_supervisor).
Docker version 20.10.4
Downgrading docker-ce to 19.03.15 did not help.
Everything worked on docker version 20.10.4 after reinstalling the Home Assistant Supervised:
home-assistant/supervised-installer
Installer for a generic Linux system. Contribute to home-assistant/supervised-installer
development by creating an account on GitHub.
Thanks for pointing that out - iPhone doesn’t make up for me not wearing my glasses!
I’ll give that a try.
After trying it - No joy. I tried it a second time after re-running the installer as well
I tried commenting the line and no joy. I tried re-running the install script no luck. Re-commented the line and
no luck. Finally read the log file and found a complaint regarding HACS having an invalid token. I tried
removing and reloading HACS and get the ever helpful “unknown error” when re-installing.
I’ve made too many mistakes trying changes and doing things to the system and now doubt that I can ever trust
it again. At this point I am still open for ideas but as soon as I get time I guess I will try rebuilding the system
and then recopying to the SSD.
https://community.home-assistant.io/t/autostart-using-systemd/199497/print 14/19
9/13/24, 4:05 PM Autostart using systemd - Community Guides - Home Assistant Community
The systemd setup works fine for me, however the audio messages played with aplay only work when started
from the terminal.
Here’s the test command: /usr/bin/aplay /usr/share/sounds/alsa/Front_Center.wav
It seems that aplay doesn’t have enough permissions.
Hello,
I am running HA das Docker Container. I would like to start it via systemd at the start up of my Pi. It tried the
example above but it does not work for me. Instead I have the following service file which works to start the
HA Docker container manually by sudo systemctl start home-assistant-docker.service
[Unit]
Description=Home Assistant Docker
Requires=docker.service
After=docker.service
[Service]
Restart=always
RestartSec=3
ExecStart=/usr/bin/docker start -a home-assistant
ExecStartPre=/bin/sleep 40
ExecStop=/usr/bin/docker stop -t 2 home-assistant
https://community.home-assistant.io/t/autostart-using-systemd/199497/print 15/19
9/13/24, 4:05 PM Autostart using systemd - Community Guides - Home Assistant Community
[Install]
WantedBy=mutli-user.target
P.s.
It setup a sleep of 40, because I need to wait until my Homematic CCU, which is running on the same Pi, is
loaded, because HA reads some sensor data from the HM CCU.
However, even after doing sudo systemctl --system daemon-reload and sudo systemctl enable
home-assistant-docker.service the HA Docker Container does not start when I reboot my Pi.
Hi,
It’s a breaking changed on the 2022.02.0 (not listed yet) with systemd.
RestartForceExitStatus=100
Failed to restart Home Assistant with the Gui with the 2022.2.0 version
opened 09:40PM - 02 Feb 22 UTC closed 05:24AM - 03 Feb 22 UTC roumano
1 Like
does not work in HASS OS, it is generally impossible to run a python script in the background there.
https://community.home-assistant.io/t/autostart-using-systemd/199497/print 16/19
9/13/24, 4:05 PM Autostart using systemd - Community Guides - Home Assistant Community
[Unit]
...
After=systemd-networkd-wait-online.service
Requires=systemd-networkd-wait-online.service
From my understanding, Requires being a stricter version of Wants/WantedBy which is critical to running
this on boot.
1 Like
I checked HASS and it’s definitely locatable, what could I be doing wrong? TIA
system:
WorkingDirectory=/home/%i/.homeassistant
Very helpful thanks. Worth noting that if you are installing home assistant from scratch (eg using ansible or
some other method to automate an install), the .homeassistant folder does not exist, and starting the service
will fail.
mkdir /home/YOUR_USER/.homeassistant
sudo systemctl start home-assistant@YOUR_USER
https://community.home-assistant.io/t/autostart-using-systemd/199497/print 17/19
9/13/24, 4:05 PM Autostart using systemd - Community Guides - Home Assistant Community
So when hass is started using systemd, there’s no need to enable virtualenv first?
You don’t need to have activated the venv for yourself, but whatever systemd calls, should do so for itself.
I’ve used a venv for many years to run HA, and have always launched it using a systemd .desktop file, which
calls a shell script, the first two lines of which are:
#!/bin/bash
. /srv/homeassistant/bin/activate
So even though systemd starts the HA process through the script, the script/process still sets itself up in the
venv, else who knows what python, packages, and environment HA might be inheriting!
People probably shouldn’t directly edit systemd units in specific paths - it’s easy to make an error. To create
a new one:
systemctl edit --force --full [email protected]
To add an override:
systemctl edit [email protected]
There’s no need to remember which location is for user units or system units or for packager units or for
overrides, etc. Run it as a user, get a user unit. Run it as root, get a local system unit. It’ll even use whatever
you have set in $EDITOR or $VISUAL, so vim or nano or whatever. That also automatically does the daemon-
reload afterwards if necessary, so no forgetting to run that command. I really wish this was better publicized;
it’s sooo much more convenient.
3 Likes
Can anyone point me in the right direction to get HA running at boot for my rpi4, and to keep it running even
(i.e. restart on crash)? I am a total noob with all of this stuff and I’ve wasted hours to no avail.
https://community.home-assistant.io/t/autostart-using-systemd/199497/print 18/19
9/13/24, 4:05 PM Autostart using systemd - Community Guides - Home Assistant Community
Did you read all the notes for that type of install listed at the top of the link? Especially the part that if you are a
total noob as you say, you shouldn’t attempt this? If you have a PI you should install the OS directly which has
nothing to do with Core and systemd to autostart. This question applies to Home Assistant Core installed on a
Linux OS
1 Like
https://community.home-assistant.io/t/autostart-using-systemd/199497/print 19/19