Dit document beschrijft hoe je een server in slaapstand (hibernate) zet via Home Assistant, met behulp van een shell_command en SSH-sleutels.
- Home Assistant geïnstalleerd met toegang tot de Terminal & SSH add-on
- Ubuntu Server waarop SSH-toegang mogelijk is
- Gebruiker met sudo-rechten op de server
- Geen wachtwoordzin op de SSH-sleutel vereist voor automatisering
-
Open de Terminal & SSH add-on in Home Assistant.
-
Navigeer naar de configuratiemap:
cd /config -
Maak de
.sshmap aan en stel de juiste rechten in:mkdir -p .ssh chmod 700 .ssh
-
Genereer het SSH-sleutelpaar (druk telkens op
Entervoor de standaardwaarden):ssh-keygen -t rsa -b 4096 -f /config/.ssh/id_rsa -N ""Hiermee worden twee bestanden aangemaakt:
/config/.ssh/id_rsa(privésleutel)/config/.ssh/id_rsa.pub(publieke sleutel)
-
Bekijk de inhoud van de publieke sleutel:
cat /config/.ssh/id_rsa.pub
-
Kopieer de volledige output van dit commando.
-
Log in op je server als de juiste gebruiker:
ssh youruser@nothomeassistant
-
Maak op de server (indien nodig) de
.sshmap aan en stel de juiste rechten in:mkdir -p ~/.ssh chmod 700 ~/.ssh
-
Voeg de gekopieerde publieke sleutel toe aan
authorized_keys:echo "PLAK_HIER_DE_INHOUD_VAN_ID_RSA.PUB" >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys
-
Log uit van de server.
-
Open je
configuration.yamlbestand in Home Assistant. -
Voeg de volgende configuratie toe:
shell_command: hibernate_server: "/usr/bin/ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i /config/.ssh/id_rsa youruser@192.168.198.35 'sudo systemctl hibernate'"
-
Ga naar Instellingen > Systeem > Herstarten.
-
Kies Volledige herstart.
Na de herstart kun je het commando testen vanuit Developer Tools of een knop in de UI. Als alles correct is ingesteld, zal de server in slaapstand gaan na het uitvoeren van het shell_command.
-
Zorg dat de gebruiker
yourusersudo mag uitvoeren zonder wachtwoord voor hethibernate-commando. Voeg eventueel toe aan/etc/sudoers.d/hibernate:youruser ALL=NOPASSWD: /bin/systemctl hibernate
-
Test eerst of
sudo systemctl hibernatewerkt op de server zelf voordat je dit via Home Assistant probeert.