Expose single URLs to internet

Hi there,

I’m currently trying to get actionable notifications to work via slack (my preferred way of doing notifications). For this to work I need to have webhooks available that trigger an action. This is only possible if I expose my home assistant instance to the internet. At the moment, I’m not exposing my instance to the internet, it is only accessible via VPN from within my network, and I like that!

Is it possible to keep it this way and only expose a single URL/Webhook to the internet?

There are several ways of doing this with each having their own advantages/disadvantages:

  • Usage of webhook relay (Home Assistant — Webhook Relay) : I can use the webhook relay addon for home assistant, that enables me to expose only a single webhook via their service:
    Advantage: very simple solution and easy to maintain. Secure (if assume webhook relay is secure). Free
    Disadvantage: everything is going through their service (unencrypted) and I cannot send a response to slack to confirm the action

  • Expose my whole instance to the internet. No further details needed.
    Advantage: not relying on a service provider and responsed via slack possible. Free
    Disadvantage: whole system is exposed

  • Nabu Casa
    Advantage: not exposing the whole system. Easy to set up.
    Disadvantage: monthly costs and not sure if responses are possible via Nabu Casa

Are there any further ways on exposing only a single URL, e.g. via a nginx configuration that only exposes a certain URL?


RE: NabuCasa

I’d challenge this - it’s basically a direct pipe into your setup, they’re basically only a reverse proxy from that perspective… I have a number of webhooks for various things hanging off NabuCasa.

So probably also not the solution I’m looking for. I guess I need some advice on how to set this up in a smart way.