Files
docker-configs/linkwarden/data/archives/3/31_readability.json

1 line
29 KiB
JSON
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{"title":"","byline":null,"dir":null,"lang":null,"content":"<div id=\"readability-page-1\" class=\"page\"><div>\n\n\n<p>Notifications, that bane of modern existence! Most people only have to deal with getting too many. However, if youre running a smarthome or any other kind of moderately complex computer setup you need to decide how you are going to send and receive them too. Many notification systems rely on “trusted” third parties (a.k.a Apple or Google) to handle the delivery of notifications through to the current communications device of choice the smartphone. Of course, this breaks my <a href=\"https://webworxshop.com/my-self-hosted-life/\">fully self hosted</a> ethos and is to be avoided. Luckily its now possible to achieve self hosted push notifications with <a href=\"https://gotify.net/\">Gotify</a>.</p>\n\n\n\n<h3>The Backstory</h3>\n\n\n\n<p>Pretty much since starting my smarthome journey (and really even before), Ive had trouble with notifications. For a long time email was the goto solution especially with my nicely self hosted email setup. Then I tried XMPP, then Rocket.Chat (I even wrote the <a href=\"https://www.home-assistant.io/components/rocketchat/\">Rocket.Chat notification platform</a> for Home Assistant). There were probably a few more notification systems that I tried and definitely many more that I looked into. Nothing really stuck. Most were too complex to setup and maintain for the benefit that they provided. I mean, who really wants to run a whole chat server just for sending a few notifications?</p>\n\n\n\n<p>Then Home Assistant implemented HTML5 notifications. These were cool, but not without downsides. For a start the full capabilities of the platform are only really supported by Chrome on Android. The notifications also go through you guessed it Google. However, the notification content is end-to-end encrypted between the HASS instance and the device. You can also do cool things like including images inline and having action buttons to press (actionable notifications).</p>\n\n\n\n<p>If Im honest, HTML5 notifications never really fit into the easy to set up basket either. The set up process is quite involved and requires creation of a project via Google Cloud Services and verification that you own the domain in question. However, once I got it working they worked well for quite some time.</p>\n\n\n\n<h3>Why cant you get this right, Google?</h3>\n\n\n\n<p>After a while things started to have problems. First, I would quite often get delayed notifications. Sometimes to the point where the notification would not come through until you picked up and unlocked the phone. This negates the point of the notification entirely! Why is it that my self hosted email server can push messages in real time to k9mail running on the same phone, but Googles own system has issues? I thought GCM/FCM was made of magic that simultaneously allowed it to be more reliable than anything else and consume no battery!?! /s</p>\n\n\n\n<p>The next nail in the coffin was Googles incessant pestering and breaking of things. First they wanted me to set up payment details, even though they werent going to charge me (why?). Then they said they were shutting down the GCM APIs used by my (admittedly somewhat outdated) version of HASS on May 29th this year. I assume that I could have fixed that by updating HASS (which I have since done). However, by this point Id had enough and shut down the whole thing.</p>\n\n\n\n<p>I initially fell back to SMTP/email notifications from HASS, which I still had running for a few lower priority things. However, I was on the look out for a replacement. Id already heard of Gotify via <a href=\"https://reddit.com/r/selfhosted\">/r/selfhosted</a>, so I decided to give it a try. Since some of my <a href=\"https://webworxshop.com/room-sensor-project-part-2-infrastructure-and-mounting/\">other projects</a> are starting to pay off and my smarthome is <a href=\"https://webworxshop.com/zigbee2mqtt-cheap-zigbee-without-a-gateway/\">getting smarter</a>, having a reliable notification system is becoming more pressing for me.</p>\n\n\n\n<h3>Deploying the Server</h3>\n\n\n\n<p>My ideal notification system would just use MQTT to push notifications to an app running on my phone. This wouldnt require me to set up anything else but the app since I have everything else to support that. However, the designers of Gotify decided to use Websockets so an extra piece of server software is required.</p>\n\n\n\n<p>Luckily, this software is written in Go (hence the project name). It also comes in a handy Docker container for easy deployment. Being written in Go makes it both fast and means it consumes barely any resources.</p>\n\n\n\n<p>One consideration when deploying this is that you probably want it to be somewhere externally accessible, so that your phone can connect to it when not on your wifi. I installed it on an already accessible host that runs a few other dockerised services. I followed the <a href=\"https://gotify.net/docs/install#docker\">official instructions</a>, but came up with this to add to my docker-compose file for that server:</p>\n\n\n\n<pre><code>gotify:\n image: gotify/server\n volumes:\n - /mnt/docker-data/gotify/data:/app/data\n ports:\n - 9080:80\n restart: always</code></pre>\n\n\n\n<p>Well, that was easy.</p>\n\n\n\n<p><a href=\"https://gotify.net/docs/config\">Further configuration</a> can be accomplished via config file or environment variables. However, I found the default settings to be fine for me.</p>\n\n\n\n<h3>Further Setup</h3>\n\n\n\n<p>I also needed to set up my reverse proxy to route requests through and set up TLS via Lets Encrypt. Im not going to go through that here. There are instructions (for the Gotify part) for <a href=\"https://gotify.net/docs/nginx\">nginx</a> and <a href=\"https://gotify.net/docs/apache\">apache</a> available. Also, if youve already set up TLS for HASS then you can follow the same process. The Gotify app will show large warnings if you dont use TLS. However, it will allow it so you dont need to do this if you are only doing a bit of local testing.</p>\n\n\n\n<figure><img sizes=\"(max-width: 1080px) 100vw, 1080px\" srcset=\"https://webworxshop.com/wp-content/uploads/2019/06/Screenshot_20190605_225522.png 1080w, https://webworxshop.com/wp-content/uploads/2019/06/Screenshot_20190605_225522-768x349.png 768w, https://webworxshop.com/wp-content/uploads/2019/06/Screenshot_20190605_225522-816x371.png 816w\" alt=\"Self Hosted Push Notifications Server UI\" src=\"https://webworxshop.com/wp-content/uploads/2019/06/Screenshot_20190605_225522.png\" height=\"491\" width=\"1080\" decoding=\"async\"><figcaption>Gotify has a nice web interface, for configuration and receiving/viewing notifications on the desktop</figcaption></figure>\n\n\n\n<p>After that I installed the app from <a href=\"https://f-droid.org/en/packages/com.github.gotify/\">F-Droid</a> and added an exception in the battery optimisation page of my Android phone settings. This is different on every phone, but you need to make sure Gotify is listed as “Not optimised”. If you dont do this Android will kill the app during sleep and you wont receive notifications. For those that are going to bang on about how this will give you horrible battery life, I havent noticed a difference. Admittedly, I was already running a few apps unoptimised, such as k9mail and OwnTracks. </p>\n\n\n\n<h3>Setting up an Application</h3>\n\n\n\n<p>Before we can send notifications we need to create an application on the Gotify server. Applications map to individual streams of notifications on the recipient devices. One minor issue is that (as of the time of writing) applications are user specific, there is no way to share an application between users. This isnt such an issue for us since we will need to set up individual notification platforms in HASS for each user anyway.</p>\n\n\n\n<figure><img sizes=\"(max-width: 1080px) 100vw, 1080px\" srcset=\"https://webworxshop.com/wp-content/uploads/2019/06/Screenshot_20190605_225030-1.png 1080w, https://webworxshop.com/wp-content/uploads/2019/06/Screenshot_20190605_225030-1-768x349.png 768w, https://webworxshop.com/wp-content/uploads/2019/06/Screenshot_20190605_225030-1-816x371.png 816w\" alt=\"Self Hosted Push Notifications Application Setup\" src=\"https://webworxshop.com/wp-content/uploads/2019/06/Screenshot_20190605_225030-1.png\" height=\"491\" width=\"1080\" decoding=\"async\"><figcaption>Our Application Screen</figcaption></figure>\n\n\n\n<p>I set up my application as “Home Assistant” (surprise, surprise). I also uploaded the HASS logo which will be displayed in the notifications. Once the application is configured you will be given a secret token/key that can be used to send notifications via the REST API. Youll need to copy this for use later.</p>\n\n\n\n<h3>Configuring Home Assistant</h3>\n\n\n\n<p>I played around for quite a while sending notifications with cURL <a href=\"https://gotify.net/docs/pushmsg\">as per the documentation</a> and also some more complex messages via the <a href=\"https://addons.mozilla.org/en-US/firefox/addon/rested/\">RESTED Firfox addon</a>. However, Im going to skip straight to how to integrate this will Home Assistant, since thats probably why youre here!</p>\n\n\n\n<p>Gotify has a simple REST api for sending notifications. Therefore we can use the <a href=\"https://www.home-assistant.io/components/notify.rest/\">REST notification platform</a> in HASS to integrate it without a custom component:</p>\n\n\n\n<pre><code>- name: gotify_1\n platform: rest\n resource: https://my.gotify.server/message\n method: POST_JSON\n headers: \n X-Gotify-Key: !secret gotify_key\n message_param_name: message\n title_param_name: title</code></pre>\n\n\n\n<p>This goes wherever you have your other notification platforms set up, for me this is in my notify.yaml file. After restarting HASS you should have the <code>notify.gotify_1</code> service available. The reason for numbering it is that we will need more notification services to extend this to other users. Youll need to update the <code>resource</code> key to the URL of your Gotify server and the <code>X-Gotify-Key</code> header value to the key you generated for your application earlier (which I recommend keeping in your secrets.yaml file, as Im doing).</p>\n\n\n\n<h3>Sending Notifications</h3>\n\n\n\n<div><figure><img alt=\"Sending self hosted push notifications\" src=\"https://webworxshop.com/wp-content/uploads/2019/06/Screenshot_20190605_205616.png\" height=\"355\" width=\"521\" decoding=\"async\"><figcaption>Sending a notification from Home Assistant</figcaption></figure></div>\n\n\n\n<p>We should now be able to send notifications via the services developer tool in Home Assistant. It should be noted that you need to encode the data to send in JSON here for it to work. The data should contain title and message fields, exactly the same as any other notification platform. For example:</p>\n\n\n\n<pre><code>{\n \"title\": \"Hello World!\",\n \"message\": \"Hello from Home Assistant via Gotify\"\n}</code></pre>\n\n\n\n<p>Once you hit the CALL SERVICE button, you should immediately see a notification on your phone from Gotify:</p>\n\n\n\n<div><figure><img alt=\"Self hosted push notification received\" src=\"https://webworxshop.com/wp-content/uploads/2019/06/Screenshot_20190605-205307-3.png\" height=\"480\" width=\"270\" decoding=\"async\" loading=\"lazy\"><figcaption>Receiving our first notification</figcaption></figure></div>\n\n\n\n<p>Again, that was easy (wasnt it?).</p>\n\n\n\n<h3>Advanced Notifications</h3>\n\n\n\n<p>So far, we can send simple text notifications from Home Assistant via Gotify. However, Gotify also supports sending <a href=\"https://gotify.net/docs/msgextras#client-display\">markdown formatted notifications</a>, which opens up many more options.</p>\n\n\n\n<p>To configure this, we edit our REST notification platform to the following:</p>\n\n\n\n<pre><code>- name: gotify_1\n platform: rest\n resource: https://my.gotify.server/message\n method: POST_JSON\n headers: \n X-Gotify-Key: !secret gotify_key\n message_param_name: message\n title_param_name: title\n data:\n extras:\n client::display:\n contentType: \"text/markdown\"</code></pre>\n\n\n\n<p>Dont forget to update the <code>resource</code> and <code>X-Gotify-Key</code> values as before. This updated configuration adds some extra data as per the Gotify documentation to indicate that the message payload should be rendered as markdown.</p>\n\n\n\n<p>So lets send a markdown formatted message. In the services dev tool again, select your notification service and use the following data:</p>\n\n\n\n<pre><code>{\n \"title\": \"Markdown message\", \n \"message\": \"#This is Markdown\\n*Now* we can do all kinds of stuff!\"\n}</code></pre>\n\n\n\n<p>And you should get:</p>\n\n\n\n<div><figure><img alt=\"Self hosted push notifications with markdown\" src=\"https://webworxshop.com/wp-content/uploads/2019/06/Screenshot_20190605-212602.png\" height=\"480\" width=\"270\" decoding=\"async\" loading=\"lazy\"><figcaption>Yay markdown!</figcaption></figure></div>\n\n\n\n<p>Neat.</p>\n\n\n\n<h3>Using that for Something Useful</h3>\n\n\n\n<p>Markdown formatting is all well and good, but not all that useful just for making silly (but well formatted) messages. Wed like to actually put it to good use.</p>\n\n\n\n<p>Ive thought about including links in various notifications which could be used to trigger a <a href=\"https://www.home-assistant.io/docs/automation/trigger/#webhook-trigger\">Home Assistant webhook</a>. This could then perform some action, but Im still not convinced on the usability of it and havent had a chance to try it out.</p>\n\n\n\n<p>One very useful option is including an image in the notification. This is particularly interesting if this image could come from a camera in Home Assistant. As it turns out this is relatively easy thanks to some minor templating:</p>\n\n\n\n<pre><code>{\n \"title\": \"Camera Image\", \n \"message\": \"![Camera Image](https://my.hass.server{{ states.camera.beach_webcam.attributes.entity_picture }})\"\n}</code></pre>\n\n\n\n<p>Here Im including the latest image from a local beach webcam that I have set up in HASS as a <a href=\"https://www.home-assistant.io/components/generic/\">generic IP camera</a>. All we need to do is use the <code>entity_picture</code> attribute to get the path of the image on the HASS server and join it to the base URL to build our image source. The resulting message is shown below:</p>\n\n\n\n<div><figure><img alt=\"Self Hosted Push Notifications with images\" src=\"https://webworxshop.com/wp-content/uploads/2019/06/Screenshot_20190606-084558.png\" height=\"480\" width=\"270\" decoding=\"async\" loading=\"lazy\"><figcaption>Looks like a nice day down at the beach (even though its winter down here)</figcaption></figure></div>\n\n\n\n<p>Obviously, this could be very useful for security alerts, etc.</p>\n\n\n\n<h3>Conclusion</h3>\n\n\n\n<p>Overall, Im pretty impressed with Gotify. Although the project is still young, it works as advertised and I havent had any functional issues. There are a few rough edges, but no showstoppers. Im looking forward to seeing the feature set improve over time. Id particularly like to see <a href=\"https://github.com/gotify/server/issues/119\">actionable notifications</a>, which would set it up as a full alternative to HTML5 notifications in HASS.</p>\n\n\n\n<p>Ive been able to integrate Gotify into HASS up to the level of its current feature set. This is thanks to the well thought out REST API and the flexibility of the REST notification platform in HASS. So far I havent needed a custom/official component. As the Gotify API becomes more featureful, its likely that a component will be needed in order to unlock its full potential. However, as it stands the REST notification platform works just fine.</p>\n\n\n\n<p>Ive had no problems so far with delayed or missed notifications which is better than Google can do! That in itself is an achievement the Gotify developers should be proud of.</p>\n\n\n</div></div>","textContent":"\n\n\nNotifications, that bane of modern existence! Most people only have to deal with getting too many. However, if youre running a smarthome or any other kind of moderately complex computer setup you need to decide how you are going to send and receive them too. Many notification systems rely on “trusted” third parties (a.k.a Apple or Google) to handle the delivery of notifications through to the current communications device of choice the smartphone. Of course, this breaks my fully self hosted ethos and is to be avoided. Luckily its now possible to achieve self hosted push notifications with Gotify.\n\n\n\nThe Backstory\n\n\n\nPretty much since starting my smarthome journey (and really even before), Ive had trouble with notifications. For a long time email was the goto solution especially with my nicely self hosted email setup. Then I tried XMPP, then Rocket.Chat (I even wrote the Rocket.Chat notification platform for Home Assistant). There were probably a few more notification systems that I tried and definitely many more that I looked into. Nothing really stuck. Most were too complex to setup and maintain for the benefit that they provided. I mean, who really wants to run a whole chat server just for sending a few notifications?\n\n\n\nThen Home Assistant implemented HTML5 notifications. These were cool, but not without downsides. For a start the full capabilities of the platform are only really supported by Chrome on Android. The notifications also go through you guessed it Google. However, the notification content is end-to-end encrypted between the HASS instance and the device. You can also do cool things like including images inline and having action buttons to press (actionable notifications).\n\n\n\nIf Im honest, HTML5 notifications never really fit into the easy to set up basket either. The set up process is quite involved and requires creation of a project via Google Cloud Services and verification that you own the domain in question. However, once I got it working they worked well for quite some time.\n\n\n\nWhy cant you get this right, Google?\n\n\n\nAfter a while things started to have problems. First, I would quite often get delayed notifications. Sometimes to the point where the notification would not come through until you picked up and unlocked the phone. This negates the point of the notification entirely! Why is it that my self hosted email server can push messages in real time to k9mail running on the same phone, but Googles own system has issues? I thought GCM/FCM was made of magic that simultaneously allowed it to be more reliable than anything else and consume no battery!?! /s\n\n\n\nThe next nail in the coffin was Googles incessant pestering and breaking of things. First they wanted me to set up payment details, even though they werent going to charge me (why?). Then they said they were shutting down the GCM APIs used by my (admittedly somewhat outdated) version of HASS on May 29th this year. I assume that I could have fixed that by updating HASS (which I have since done). However, by this point Id had enough and shut down the whole thing.\n\n\n\nI initially fell back to SMTP/email notifications from HASS, which I still had running for a few lower priority things. However, I was on the look out for a replacement. Id already heard of Gotify via /r/selfhosted, so I decided to give it a try. Since some of my other projects are starting to pay off and my smarthome is getting smarter, having a reliable notification system is becoming more pressing for me.\n\n\n\nDeploying the Server\n\n\n\nMy ideal notification system would just use MQTT to push notifications to an app running on my phone. This wouldnt require me to set up anything else but the app since I have everything else to support that. However, the designers of Gotify decided to use Websockets so an extra piece of server software is required.\n\n\n\nLuckily, this software is written in Go (hence the project name). It also comes in a handy Docker container for easy deployment. Being written in Go makes it both fast and means it consumes barely any resources.\n\n\n\nOne consideration when deploying this is that you probably want it to be somewhere externally accessible, so that your phone can connect to it when not on your wifi. I installed it on an already accessible host that runs a few other dockerised services. I followed the official instructions, but came up with this to add to my docker-compose file for that server:\n\n\n\ngotify:\n image: gotify/server\n volumes:\n - /mnt/docker-data/gotify/data:/app/data\n ports:\n - 9080:80\n restart: always\n\n\n\nWell, that was easy.\n\n\n\nFurther configuration can be accomplished via config file or environment variables. However, I found the default settings to be fine for me.\n\n\n\nFurther Setup\n\n\n\nI also needed to set up my reverse proxy to route requests through and set up TLS via Lets Encrypt. Im not going to go through that here. There are instructions (for the Gotify part) for nginx and apache available. Also, if youve already set up TLS for HASS then you can follow the same process. The Gotify app will show large warnings if you dont use TLS. However, it will allow it so you dont need to do this if you are only doing a bit of local testing.\n\n\n\nGotify has a nice web interface, for configuration and receiving/viewing notifications on the desktop\n\n\n\nAfter that I installed the app from F-Droid and added an exception in the battery optimisation page of my Android phone settings. This is different on every phone, but you need to make sure Gotify is listed as “Not optimised”. If you dont do this Android will kill the app during sleep and you wont receive notifications. For those that are going to bang on about how this will give you horrible battery life, I havent noticed a difference. Admittedly, I was already running a few apps unoptimised, such as k9mail and OwnTracks. \n\n\n\nSetting up an Application\n\n\n\nBefore we can send notifications we need to create an application on the Gotify server. Applications map to individual streams of notifications on the recipient devices. One minor issue is that (as of the time of writing) applications are user specific, there is no way to share an application between users. This isnt such an issue for us since we will need to set up individual notification platforms in HASS for each user anyway.\n\n\n\nOur Application Screen\n\n\n\nI set up my application as “Home Assistant” (surprise, surprise). I also uploaded the HASS logo which will be displayed in the notifications. Once the application is configured you will be given a secret token/key that can be used to send notifications via the REST API. Youll need to copy this for use later.\n\n\n\nConfiguring Home Assistant\n\n\n\nI played around for quite a while sending notifications with cURL as per the documentation and also some more complex messages via the RESTED Firfox addon. However, Im going to skip straight to how to integrate this will Home Assistant, since thats probably why youre here!\n\n\n\nGotify has a simple REST api for sending notifications. Therefore we can use the REST notification platform in HASS to integrate it without a custom component:\n\n\n\n- name: gotify_1\n platform: rest\n resource: https://my.gotify.server/message\n method: POST_JSON\n headers: \n X-Gotify-Key: !secret gotify_key\n message_param_name: message\n title_param_name: title\n\n\n\nThis goes wherever you have your other notification platforms set up, for me this is in my notify.yaml file. After restarting HASS you should have the notify.gotify_1 service available. The reason for numbering it is that we will need more notification services to extend this to other users. Youll need to update the resource key to the URL of your Gotify server and the X-Gotify-Key header value to the key you generated for your application earlier (which I recommend keeping in your secrets.yaml file, as Im doing).\n\n\n\nSending Notifications\n\n\n\nSending a notification from Home Assistant\n\n\n\nWe should now be able to send notifications via the services developer tool in Home Assistant. It should be noted that you need to encode the data to send in JSON here for it to work. The data should contain title and message fields, exactly the same as any other notification platform. For example:\n\n\n\n{\n \"title\": \"Hello World!\",\n \"message\": \"Hello from Home Assistant via Gotify\"\n}\n\n\n\nOnce you hit the CALL SERVICE button, you should immediately see a notification on your phone from Gotify:\n\n\n\nReceiving our first notification\n\n\n\nAgain, that was easy (wasnt it?).\n\n\n\nAdvanced Notifications\n\n\n\nSo far, we can send simple text notifications from Home Assistant via Gotify. However, Gotify also supports sending markdown formatted notifications, which opens up many more options.\n\n\n\nTo configure this, we edit our REST notification platform to the following:\n\n\n\n- name: gotify_1\n platform: rest\n resource: https://my.gotify.server/message\n method: POST_JSON\n headers: \n X-Gotify-Key: !secret gotify_key\n message_param_name: message\n title_param_name: title\n data:\n extras:\n client::display:\n contentType: \"text/markdown\"\n\n\n\nDont forget to update the resource and X-Gotify-Key values as before. This updated configuration adds some extra data as per the Gotify documentation to indicate that the message payload should be rendered as markdown.\n\n\n\nSo lets send a markdown formatted message. In the services dev tool again, select your notification service and use the following data:\n\n\n\n{\n \"title\": \"Markdown message\", \n \"message\": \"#This is Markdown\\n*Now* we can do all kinds of stuff!\"\n}\n\n\n\nAnd you should get:\n\n\n\nYay markdown!\n\n\n\nNeat.\n\n\n\nUsing that for Something Useful\n\n\n\nMarkdown formatting is all well and good, but not all that useful just for making silly (but well formatted) messages. Wed like to actually put it to good use.\n\n\n\nIve thought about including links in various notifications which could be used to trigger a Home Assistant webhook. This could then perform some action, but Im still not convinced on the usability of it and havent had a chance to try it out.\n\n\n\nOne very useful option is including an image in the notification. This is particularly interesting if this image could come from a camera in Home Assistant. As it turns out this is relatively easy thanks to some minor templating:\n\n\n\n{\n \"title\": \"Camera Image\", \n \"message\": \"![Camera Image](https://my.hass.server{{ states.camera.beach_webcam.attributes.entity_picture }})\"\n}\n\n\n\nHere Im including the latest image from a local beach webcam that I have set up in HASS as a generic IP camera. All we need to do is use the entity_picture attribute to get the path of the image on the HASS server and join it to the base URL to build our image source. The resulting message is shown below:\n\n\n\nLooks like a nice day down at the beach (even though its winter down here)\n\n\n\nObviously, this could be very useful for security alerts, etc.\n\n\n\nConclusion\n\n\n\nOverall, Im pretty impressed with Gotify. Although the project is still young, it works as advertised and I havent had any functional issues. There are a few rough edges, but no showstoppers. Im looking forward to seeing the feature set improve over time. Id particularly like to see actionable notifications, which would set it up as a full alternative to HTML5 notifications in HASS.\n\n\n\nIve been able to integrate Gotify into HASS up to the level of its current feature set. This is thanks to the well thought out REST API and the flexibility of the REST notification platform in HASS. So far I havent needed a custom/official component. As the Gotify API becomes more featureful, its likely that a component will be needed in order to unlock its full potential. However, as it stands the REST notification platform works just fine.\n\n\n\nIve had no problems so far with delayed or missed notifications which is better than Google can do! That in itself is an achievement the Gotify developers should be proud of.\n\n\n","length":11975,"excerpt":"Notifications, that bane of modern existence! Most people only have to deal with getting too many. However, if youre running a smarthome or any other kind of moderately complex computer setup you need to decide how you are going to send and receive them too. Many notification systems rely on “trusted” third parties (a.k.a Apple or Google) to handle the delivery of notifications through to the current communications device of choice the smartphone. Of course, this breaks my fully self hosted ethos and is to be avoided. Luckily its now possible to achieve self hosted push notifications with Gotify.","siteName":null}