Home Assistant: Difference between revisions
imported>Mweinelt No edit summary |
imported>Mweinelt Configure home-assistant's http component in reverse proxy example |
||
Line 7: | Line 7: | ||
<syntaxHighlight lang=nix> | <syntaxHighlight lang=nix> | ||
services.home-assistant.config | |||
server_host = "::1"; | |||
trusted_proxies = [ "::1" ]; | |||
use_x_forwarded_for = true; | |||
}; | |||
services.nginx = { | services.nginx = { | ||
recommendedProxySettings = true; | recommendedProxySettings = true; | ||
virtualHosts." | virtualHosts."home.example.com" = { | ||
forceSSL = true; | forceSSL = true; | ||
enableACME = true; | enableACME = true; | ||
Line 16: | Line 22: | ||
''; | ''; | ||
locations."/" = { | locations."/" = { | ||
proxyPass = "http:// | proxyPass = "http://[::1]:8123"; | ||
proxyWebsockets = true; | proxyWebsockets = true; | ||
}; | }; |
Revision as of 14:00, 13 June 2021
Home Assistant is an open source home automation software that puts local control and privacy first. Powered by a worldwide community of tinkerers and DIY enthusiasts.
Home Assistant with nginx as a reverse proxy
If you run a public Home Assistant instance it is a good idea to enable SSL/TLS. The following configuration generates a certificate using letsencrypt:
services.home-assistant.config
server_host = "::1";
trusted_proxies = [ "::1" ];
use_x_forwarded_for = true;
};
services.nginx = {
recommendedProxySettings = true;
virtualHosts."home.example.com" = {
forceSSL = true;
enableACME = true;
extraConfig = ''
proxy_buffering off;
'';
locations."/" = {
proxyPass = "http://[::1]:8123";
proxyWebsockets = true;
};
};
};
Adding postgresql support
Home-assistant supports PostgreSQL as a database backend for, among other things, its logger and history components. It's a lot more scalable and typically provides faster response times than the SQLite database, that is used by default.
Remember to make backups of your database, for home-assistant is becoming more and more stateful and has moved away from a completely declarative YAML configuration for new and core components.
services.home-assistant = {
package = (pkgs.home-assistant.override {
extraPackages = py: with py; [ psycopg2 ];
});
config.recorder.db_url = "postgresql://@/hass";
};
services.postgresql = {
enable = true;
ensureDatabases = [ "hass" ];
ensureUsers = [{
name = "hass";
ensurePermissions = {
"DATABASE hass" = "ALL PRIVILEGES";
};
}];
};
Run home-assistant from github repository
When developing home-assistant for some test dependencies additional libraries are needed. A nix-shell expression for this is available here.
Add custom lovelace modules
This pull request describes how to add custom lovelace modules.
Add custom components
In order to install a custom component, you have to place it in /var/lib/hass/custom_components
. This can be achieved using systemd tmpfiles like so (for sonoff custom component):
systemd.tmpfiles.rules = [
"C /var/lib/hass/custom_components/sonoff - - - - ${sources.sonoff-lan}/custom_components/sonoff"
"Z /var/lib/hass/custom_components 770 hass hass - -"
];