90
submitted 9 months ago by hai@lemmy.ml to c/selfhosted@lemmy.world

Okay, let me start by saying that I really do love Home Assistant. I believe that it is a fantastic piece of software, with very dedicated developers that are far more talented than I. Although, that being said, I strongly disagree with a number of their design choices.

My most recent problem has been trying to put Home Assistant behind a reverse proxy with a subpath. The Home Assistant developers flat out refuse any contribution that adds support for this. Supposedly, the frontend has hard-coded paths for some views, to me this doesn't sound like a good practice to begin with -- that being said, I mostly program in Go these days (so I'm unsure if this is something that is pretty common in some frameworks or languages). The official solution is to use a subdomain, which I can't do -- I'm trying to route all services through a Tailscale Funnel (which only provides a single domain; I doubt that Tailscale Funnels where ever designed for this purpose, but I'm trying to completely remove Cloudflare Tunnels for my selfhosted services).

The other major problem I've ran into, is that HAOS assumes that you would have no need to run any other Docker services other than those that are add-ons or Home Assistant itself. Which, I'm sorry (not really), Home Assistant add-ons are an absolute pain to deal with! Sure, when they work, they're supper simple, but having to write an add-on for whenever I just want to spin up a single Docker container is not going to work for me.

Now, some smaller issues I've had:

  • There's no way to change the default authentication providers. I host for my (non-techie) family, they're not going to know what the difference between local authentication and command-line authentication is, just that one works and the other doesn't.
  • Everything that is "advanced" requires a workaround. Like mounting external hard drives and sharing it with containers in HAOS requires you to setup the Samba add-on, add the network drive, and then you can use it within containers.

Again, I still really love Home Assistant, it's just getting to a point where things are starting to feel hacky or not thought out all the way. I've considered other self-hosted automation software, but there really isn't any other good alternative (unless you want to be using HomeKit). Also, I'm a programmer first, and far away from being a self-hosting pro (so let me know if I've missed any crucial details that completely flip my perspective on it's head).

If you got to the end of this thanks for reading my rant, you're awesome.

top 50 comments
sorted by: hot top controversial new old
[-] hedgehog@ttrpg.network 58 points 9 months ago

Have you considered not using the Home Assistant OS? You don’t need to run it to use Home Assistant. You can instead set your host up with some other OS, like Debian, and then run Home Assistant in a docker container (or containers, plural) and run any other containers you want.

I’m not doing this myself so can’t speak to its limitations, but from what I’ve heard, if you’re familiar with Docker then it’s pretty straightforward.

A lot of apps use hard coded paths, so using a subdomain per app makes it much easier to use them all. Traefik has middleware, including stripPrefix, which allow you to strip a path prefix before forwarding the path to the app, though - have you tried that approach?

[-] MaggiWuerze@feddit.de 13 points 9 months ago

You can't use add-ons when running HA as a docker container, which basically lobotomizes it.

[-] Maximilious@kbin.social 30 points 9 months ago

Yes you can. It requires those docker containers to be installed and plugged into it on a stand alone system. This is exactly what HAOS is doing behind the scenes for is users and why many stick with it.

[-] infeeeee@lemm.ee 18 points 9 months ago

Addons are just other containers, you can run them next to ha

[-] peter@feddit.uk 4 points 9 months ago

You don't get the direct integration then though, as far as I'm aware there's no way to manually setup an addon

[-] infeeeee@lemm.ee 12 points 9 months ago

What direct integration? You get a button on the UI, vs you do everything the way you want.

HAOS is intended for people who want everything to just work, without much fiddling. If you need something more, you need a docker based install. You can do everything there and even more, but you have to set it up manually.

[-] helenslunch@feddit.nl 12 points 9 months ago

HAOS is intended for people who want everything to just work, without much fiddling.

AHHHHHHHHAHAHAHAHAHA

[-] ripcord@lemmy.world 5 points 9 months ago

It's relative, I guess.

[-] aksdb@lemmy.world 2 points 9 months ago

What kind of addons? I have HACS and it works fine.

[-] JustEnoughDucks@feddit.nl 2 points 9 months ago
  • No backup solutions besides manual backing up and then setting up baremetal backing up

  • no configuration editor

  • HACS works, but no custom addons

  • manual configuration of esphome/nodered/mosquitto (I prefer this though)

I prefer docker because it is comfortable for me and I run all my services on one server, but it is indeed a bit less easy.

[-] aksdb@lemmy.world 4 points 9 months ago

When I host multiple services, I need to back them up as well. I simply mount all data volumes of all containers into a unified location that gets backed up by kopia every hour.

Since the volume is directly on disk, I also didn't have any problems editing configuration files.

The things I see listed as addons on the website are dedicated services anyway, that have images of their own you can easily spin up as containers.

I think if someone is advanced enough to want to run HASS on their own together with other stuff, they prefer to have more control anyway.

[-] JustEnoughDucks@feddit.nl 2 points 9 months ago

For sure, but the point is that it isn't integrated into homeassistant.

For many people, they want to do everything from homeassistant. You can always have kludged together solutions. I edit my configs with VIM and backup to my central backup location via an automation. However, this is doing things outside of homeassistant that many people find inconvenient.

[-] aksdb@lemmy.world 3 points 9 months ago

My point however was that people who want that kind of convenience (or rather who don't want to fiddle around manually), why would they want to run HASS in a container in the first place? Either you are tinkerer, then it doesn't matter or you are not, in which case you probably don't arrive at the point of running HASS on anything other than a preinstalled distro in the first place.

[-] hai@lemmy.ml 1 points 9 months ago

I prefer docker because it is comfortable for me and I run all my services on one server, but it is indeed a bit less easy.

Reading all of these replying I'm starting to think that maybe my problem was assuming that because add-ons are Docker container they should be treated as such.

[-] hai@lemmy.ml 1 points 9 months ago

Yes and no. If you want a really simple setup HAOS add-ons are amazing, but as soon as you want to run something someone else hasn't created a container for you're stuck doing extra work than just writing a Dockerfile or docker-compose. Plus, you can't setup networks between them and (as mentioned in the original post) sharing drives can be hackish as well.

The (grim) reason had I tried HAOS was because of the promise of something really simple that my family could figure out if something ever happened to me.

[-] Celestus@lemm.ee 1 points 9 months ago

Home Assistant OS add-ons are usually just repackaged and pre-configured Docker containers. The only thing the add-ons system really gives you is convenience

load more comments (1 replies)
[-] aksdb@lemmy.world 9 points 9 months ago

Strip prefix won't work if the frontend expects to find paths at absolute locations. You would need to patch the html, css and js on the fly, which is somewhere between ugly and (almost) impossible.

I would also suggest to simply use custom (sub) domains. Especially in your intranet you can have whatever domains you want.

[-] hai@lemmy.ml 2 points 9 months ago

Strip prefix won’t work if the frontend expects to find paths at absolute locations. You would need to patch the html, css and js on the fly, which is somewhere between ugly and (almost) impossible.

This is what I've seen would be the only "feasible" way of getting HA to work behind a subpath, in my opinion this only works for very small application though (not something as complex as Home Assistant).

[-] hai@lemmy.ml 5 points 9 months ago* (last edited 9 months ago)

I'm (currently) on Raspberry Pi OS (as I need something that "just works"). Home Assistant is running in Docker like everything else.

A lot of apps use hard coded paths, so using a subdomain per app makes it much easier to use them all. Traefik has middleware, including stripPrefix, which allow you to strip a path prefix before forwarding the path to the app, though - have you tried that approach?

I should've mentioned this, but I'm using Nginx (I really enjoy the simplicity of just having to add a section to a file whenever I want to add something). Before running HAOS I was running RPIOS again and used Traefik, it worked (but felt like a lot more work to setup than just a plain Nginx setup).

Edit: I forgot to mention, but there are things like stripPrefix for Nginx, I'm going to look into them. Although, this is what I meant, when you start to do things that are "advanced" with Home Assistant they turn into "hacks," and the barrier for advanced things feels a lot lower than with other self-hosted services (and I get that Home Assistant is very complex under the hood, it's just frustrating).

[-] sabreW4K3@lemmy.tf 1 points 9 months ago

This was going to be my suggestion. Just run home assistant as a Docker container, problem solved!

[-] hai@lemmy.ml 3 points 9 months ago

Still no subpaths, changing default authentication providers, and there can still be workarounds that feel hackish (I've used HA is a container before) the difference is that you'll do less in Home Assistant, so you avoid them as much as possible.

[-] mhzawadi@lemmy.horwood.cloud 33 points 9 months ago

I think your missing the point of HAOS, it's an appliance. You don't manage it like a normal self host system.

Once you treat it as an appliance, it's great. Also there is a portainer agent you can run that will connect to a portainer instance.

As for your tunnel issues, maybe the tunnel thing is your biggest issue. I run all my self host stuff on its own subdomain, if I want to route something home I use the site to site VPN I have. Even a cheap ovh vps could be a way to run stuff on subdomains

[-] Shimitar@feddit.it 4 points 9 months ago

Require a subdinain should not be mandatory in 2024.

Sub paths should be such a basic feature that's ridiculous devs don't even take that into consideration.

Why? Because a software requiring absolute paths is as old and obsolete as an msdos program, and the only real reason it happens today is... Bad design choices or limited frameworks.

[-] mhzawadi@lemmy.horwood.cloud 1 points 9 months ago

Requiring a full URL will be more of security thing I would guess, as some users put HA on the internet and it could have access to open doors.

Also I have tried things on sub paths and it got very complicated to know where a service was, a domain keeps things easy to setup and manage. As I run internet facing services for my day job, I have to look at both security and easy of maintenance when setting things up.

I would say that if you need a path over domain, its a skill issue and you need to find a better way of working.

[-] Shimitar@feddit.it 2 points 9 months ago

Not really... Your attitude is the problem.

Sub paths are simpler to deploy: need only one certificate, need only one subdomain.

In any case you need reverse proxy so security is not the matter here.

Your use cases are not mine and both ways should always be possible.

You never need a subpath over a subdomain, nor viceversa, it is (or should) always be a choice.

load more comments (2 replies)
[-] grue@lemmy.world 24 points 9 months ago* (last edited 9 months ago)

The other major problem I’ve ran into, is that HAOS assumes that you would have no need to run any other Docker services other than those that are add-ons or Home Assistant itself.

With the caveat that I can tell just from your post that I certainly know way less about this stuff than you do, HAOS' assumption seems pretty reasonable to me. Isn't the point of using HAOS (as opposed to installing HA some other way) that you'd be either (a) using it by itself on bare-metal hardware, or (b) using it in a VM? I'm running HAOS and Docker in two different VMs on Proxmox, and it's working fine for me so far.

(The first complaint you mentioned, about reverse proxies and subpaths, sounds a lot more legitimate. In fact, that's something I'd like to learn more about because I haven't yet figured out how to make my HA install -- or anything, for that matter -- accessible outside my LAN and "Tailscale Funnel" sounds intriguing.)

[-] hai@lemmy.ml 1 points 9 months ago* (last edited 9 months ago)

I’m running HAOS and Docker in two different VMs on Proxmox, and it’s working fine for me so far.

So, I think I've mentioned this in another reply, but, I have a very minimal setup. It's a RPi4 as the main device, Starlink as the ISP (CGNAT; no port-forwarding), and now Tailscale as the only way to access outside of my LAN. I agree that HAOS meets it's primary job of running Home Assistant. Although, I don't have the option to run Proxmox (at least I've never seen anyone run Proxmox on an RPi) and also have a massive music library (and soon a large movie and TV show collection, once I rip all of those DVDs) so I really only need to run a few things:

  • A dashboard to make accessing the services easier for the family.
  • A reverse proxy to handle subpaths (this used to be Cloudflare Tunnels with subdomains and NPM with subpaths, now it's just Nginx).
  • Tailscale (to expose services and run a VPN to get past the CGNAT).
  • Jellyfin (for TV shows and movies).
  • A forked version of Goinc (I have a fork with LDAP support, there's an open pull request for it, but it needs a little extra work; this wasn't ran on HA).
  • Something to run LDAP authentication.
  • Some Home Automation software (was Home Assistant, I migth switch to something else).

Edit: I also run Vaultwarden.

I've really scaled things back since previous self-hosting journeys, and when I first started with HAOS there was even less going on, and really I need things to just work. I'm learning now that my mistake was assuming that HAOS add-ons are supposed to behave just like a Docker container, they're not. I've learned the hard way, but, I still don't love HA's attitude towards something that are deemed "complex," such as sub-paths and alternative authentication providers.

I'm on RPi OS now.

[-] ninjan@lemmy.mildgrim.com 13 points 9 months ago

I can't grasp your use case I feel, pretty much all your complaints seem... odd. To me at least.

First subdomain. I think HA is completely right that proxy with a subpath is basically an anti-pattern that just makes things worse for you and is always a bad idea (with very few exceptions).

As for your tunnel I don't know how you've set it up and I haven't used tailscale but them only allowing one domain sounds like a very arbitrary limit, is it something that costs money to add? I use NetBird which I selfhost on my VPS and from there tunnel into my much beefier home setup.

Then docker in HAOS. The proper way I feel of running HA is for sure HAOS, and also running it in its own VM / or on dedicated hardware. This because you will likely need to couple additional hardware like a stick providing support for more protocols like ZigBee or Matter. It really isn't a good solution for running all your self hosted stuff, and wasn't ever intended to be. Running Plex in HA for instance is just a plain bad idea, even if it can be done. As such the need for an external drive seems strange as well. If you need to interact with storage you should set up a NAS and share over SAMBA. All this to say that HA should be one VM/Device, your docker environment another VM.

As for authentication there are 10k plus contributors to Home Assistant yearly but very few bother to make authentication more streamlined. I would've loved OpenID/OAuth2 support natively but there are ways to do so with custom components and in the end I quite strongly feel that if the end-users of your smarthome setup (i.e. the wife and kids) need to login to Home Assistant then you've probably got more work to do. Remote controls which interact with HA handle the vast majority of manual interaction and I've dabbled with self-hosted voice interfaces for the more complex operations.

Sorry if this came across as writing you on the nose, that's not my intention. I just suspect you're making things harder for yourself and maybe have a strange idea around how to selfhost in general?

[-] hai@lemmy.ml 2 points 9 months ago

You make some good points, I've said a few times now that I mistook Home Assistant add-ons as traditional Docker containers (which I've learned the hard way is flat out wrong, you know what they say about assumptions).

First subdomain. I think HA is completely right that proxy with a subpath is basically an anti-pattern that just makes things worse for you and is always a bad idea (with very few exceptions).

I don't agree with the comment replying about how developers are lazy. That being said, I also wouldn't call a subpath an anti-pattern, it's not uncommon and I wouldn't say that it is always a bad idea (they have some pros and cons on subdomains and it's what my setup calls for).

As for your tunnel I don’t know how you’ve set it up and I haven’t used tailscale but them only allowing one domain sounds like a very arbitrary limit, is it something that costs money to add? I use NetBird which I selfhost on my VPS and from there tunnel into my much beefier home setup.

There's an open feature request for subdomains, but it hasn't really gone anywhere. I'm assuming that it must be how they handle SSL certificates.

As for authentication there are 10k plus contributors to Home Assistant yearly but very few bother to make authentication more streamlined. I would’ve loved OpenID/OAuth2 support natively but there are ways to do so with custom components and in the end I quite strongly feel that if the end-users of your smarthome setup (i.e. the wife and kids) need to login to Home Assistant then you’ve probably got more work to do. Remote controls which interact with HA handle the vast majority of manual interaction and I’ve dabbled with self-hosted voice interfaces for the more complex operations.

Yeah, I've seen the idea that Home Assistant shouldn't be the part you interact with several times, but I don't really know of any better things to handle this. None of us really love voice controls and I've toyed around with Google Home (but I think it's absolute garbage and self-host to get away from companies like Google).

I just suspect you’re making things harder for yourself and maybe have a strange idea around how to selfhost in general?

Not my ideas that are strange, I'd love to have a traditional setup. I've mentioned it a few times in other replies, I just don't want to be the "just look at my other replies" person, so here's whats going on: Starlink is my ISP (CGNAT; I can't port-forward), Tailscale is now my only way of accessing things off of my LAN (I didn't mind Cloudflare Tunnels, but Cloudflare scares me and Jellyfin is a pretty important thing and supposedly if you want to stream video you're not allowed/supposed to use Tunnels), my only device is an RPi4 (I've tried other devices, but I really love the simplicity of the Pi -- and also don't have many other devices that would work that good for self-hosting).

Again, I'd love to have a "normal" ISP (we live in the middle of no where) that lets me port-forward and is nice and something other than a Pi to host on, but this is what I'm stuck with.

Sorry if this came across as writing you on the nose, that’s not my intention.

It's all good I get where you're coming from, and I'm sure you understand what's going on for me.

[-] ninjan@lemmy.mildgrim.com 1 points 9 months ago

I think a VPS and moving to NetBird self hosted would be the simplest solution for you. $5 per month gives you a range of options and you can go even lower with things like yearly subscriptions. That way you get around the subdomain issue, you get a proper tunnel and can proxy whatever traffic you want into your home.

As for control scheme for your home automation you'll need to come up with something that fits you but I strongly advise against letting users into Home Assistant. You could build a simple web interface that interacts via API with HA, through Node-Red is super simple if it seems daunting to build the API.

If a RPi 4 is what you've got and that's it then I guess you're kinda stuck for the time being. Home Assistant is often quite lightweight if you're not doing something crazy so it runs well on even a RPi 3, same with NAS software for home use, it too works fine on a 3. If SBC is your style my recommendation is to setup an alert on whatever second hand sites operate in your area and pick up a cheap one to allow you to separate things and make the setup simpler.

[-] Shimitar@feddit.it 2 points 9 months ago

Why are subpaths an a anti pattern?

Why is taking away choices a problem?

Everybody has its own usage case, why should we prevent them from using their?

[-] oldfart@lemm.ee 10 points 9 months ago

I second the complaint about subpaths. I have all my services on a single domain, except for HA. It's for security by obscurity, when you issue a certificate for a subdomain you start getting malicious traffic probing for vulnerabilities almost immediately. I don't have this problems for services with non-obvious subpaths.

I can't understand the stubbornness of developers to accept patches for fixing this problem.

[-] Heavybell@lemmy.world 4 points 9 months ago* (last edited 9 months ago)

~~LetsEncrypt can hand out wildcard certs if you are able to add TXT records to your domain, if that helps any.~~

I realised this was a stupid comment that doesn't help any.

[-] oldfart@lemm.ee 1 points 9 months ago

No no, that's how i'm working around the problem now, but i'm sure sni sniffing will sooner or later make my domain well known

[-] Nyfure@kbin.social 2 points 9 months ago* (last edited 9 months ago)

Many systems dont support subpaths as it can cause some really weird problems.
As you use tailscale funnels, you really want incoming traffic from the internet. I am not sure thats a good idea for e.g. homeassistant that is limited in access anyways.
Might aswell use tailscale and access the system over VPN.

And for anything serious i wouldnt use something like funnel anyways. Rent a VPS and use that as your reverse-proxy, you can then also do some caching or host some services there. Much simpler to deal with and full support for such things as you then have an actual public IPv4/IPv6 address to use.
Heck, dont even have to pay for it with the Oracle Always-Free system.

load more comments (2 replies)
[-] Decronym@lemmy.decronym.xyz 2 points 9 months ago* (last edited 9 months ago)

Acronyms, initialisms, abbreviations, contractions, and other phrases which expand to something larger, that I've seen in this thread:

Fewer Letters More Letters
CGNAT Carrier-Grade NAT
HA Home Assistant automation software
~ High Availability
HASS Home Assistant automation software
IP Internet Protocol
LXC Linux Containers
NAS Network-Attached Storage
NAT Network Address Translation
Plex Brand of media server package
RPi Raspberry Pi brand of SBC
SAN Storage Area Network
SBC Single-Board Computer
SSL Secure Sockets Layer, for transparent encryption
SSO Single Sign-On
TCP Transmission Control Protocol, most often over IP
TLS Transport Layer Security, supersedes SSL
VPN Virtual Private Network
VPS Virtual Private Server (opposed to shared hosting)

17 acronyms in this thread; the most compressed thread commented on today has 8 acronyms.

[Thread #519 for this sub, first seen 17th Feb 2024, 08:05] [FAQ] [Full list] [Contact] [Source code]

[-] Turbo@lemmy.ml 2 points 9 months ago

I will first admit that I am quite ignorant to Home Assistant.

I am a happy openHAB user for 5+ years. Have you considered switching to see if you like it?

I tried Home Assistant once or twice but never felt comfortable enough to switch.

I run stuff locally and can connect over VPN to my home and operate as if I am inside the home. I have not looked into these other cloudflare tunnels or tail scale as I don't think it would provide any advantage to my current setup.

OpenVPN server running on my router does the trick.

[-] hai@lemmy.ml 2 points 9 months ago

I am a happy openHAB user for 5+ years. Have you considered switching to see if you like it?

I actually have considered it, and I'm still thinking about it.

I run stuff locally and can connect over VPN to my home and operate as if I am inside the home. I have not looked into these other cloudflare tunnels or tail scale as I don’t think it would provide any advantage to my current setup.

I have a strange setup. My ISP is Starlink (so I'm behind a CGNAT), meaning I kinda need another service to access them outside the network, but (as mentioned) I mainly host for my family who wouldn't know how to work another app or VPN.

[-] Turbo@lemmy.ml 1 points 9 months ago

I had to look that up. So ya, I understand your problem a bit better. Wish I could offer some solutions.

For anyone interested..

"Starlink uses Carrier-Grade NAT (CGNAT) to avoid the need for 1,000s of IPv4 addresses, which can be a problem for some users due to how they are using Starlink. However, some VPN services like PureVPN can be used to bypass CGNAT restrictions on Port Forwarding.1 CGNAT prevents direct access to the Starlink antenna from the internet, making setting up a VPN or hosting services challenging. There is no direct public IP address assigned to the Starlink antenna, which hinders traditional methods of setting up a VPN server or hosting services like port forwarding and DMZ access"

[-] shasta@lemm.ee 2 points 9 months ago

I just used a Cloudflare Tunnel.

[-] corsicanguppy@lemmy.ca 1 points 9 months ago

super simple

Hamburger helper?

load more comments
view more: next ›
this post was submitted on 17 Feb 2024
90 points (100.0% liked)

Selfhosted

40296 readers
214 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

Rules:

  1. Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.

  2. No spam posting.

  3. Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it's not obvious why your post topic revolves around selfhosting, please include details to make it clear.

  4. Don't duplicate the full text of your blog or github here. Just post the link for folks to click.

  5. Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).

  6. No trolling.

Resources:

Any issues on the community? Report it using the report flag.

Questions? DM the mods!

founded 1 year ago
MODERATORS