Today's Deep-Dive: Gotify
Ep. 319

Today's Deep-Dive: Gotify

Episode description

Gotify is an open-source, self-hosted messaging tool designed to give users total control over their real-time alerts and notifications, addressing issues of information overload and vendor lock-in with commercial push services. It provides digital autonomy by allowing users to manage their own infrastructure, eliminating reliance on third-party services that collect sensitive metadata. The system operates on three pillars: a REST API for sending messages, WebSockets for instant, real-time message delivery to clients, and a web-based UI for management. Written in Go, Gotify is known for its stability, performance, and low resource footprint, making it suitable for deployment on minimal hardware like a Raspberry Pi. The ecosystem includes a native Android client that bypasses commercial push services for direct notifications, and a command-line interface for automation. Gotify emphasizes longevity and customization through a plugin system and robust documentation, backed by a mature quality assurance process and a vibrant open-source community with significant GitHub engagement. Its MIT license and continuous development, evidenced by numerous releases and contributors, ensure its reliability and viability as a critical component for personal or work automation.

Gain digital sovereignty now and save costs

Let’s have a look at your digital challenges together. What tools are you currently using? Are your processes optimal? How is the state of backups and security updates?

Digital Souvereignty is easily achived with Open Source software (which usually cost way less, too). Our division Safeserver offers hosting, operation and maintenance for countless Free and Open Source tools.

Try it now!

Download transcript (.srt)
0:00

Welcome back to the deep dive.

0:02

So today we're looking at, well, it's more than just a piece of technology.

0:05

We're really examining kind of declaration of digital independence.

0:10

We're diving into how you can fundamentally reshape your infrastructure

0:14

to get total control over your real time alerts and your messaging.

0:20

Yeah, I mean, have you ever tried to automate a critical alert

0:23

maybe from a server or just a home script?

0:25

And then you find the commercial service

0:27

you're relying on is, I don't know, rate limiting you.

0:29

Or even worse, it's gathering metadata about when your systems are under stress.

0:34

Exactly. That frustration that the lack of autonomy is precisely

0:37

what this project we're exploring today called Goatify was built to solve.

0:41

It's just a really elegant open source tool for self-hosted messaging.

0:44

And our mission today, especially for the learner, is to, you know,

0:47

cut through the jargon and show you the straightforward elegance of Goatify.

0:50

It's a simple, reliable, self-hosted solution to two pretty big problems.

0:56

Information overload and vendor lock-in with commercial push services.

1:00

So we're aiming for digital autonomy that's actually achievable.

1:03

Yeah, even for someone who's just starting out on their self-hosting journey.

1:07

And the promise is pretty powerful.

1:09

A straightforward, reliable way to push messages and get instant notifications

1:14

from all your services, all your scripts, all your devices.

1:17

And it's all managed by you on hardware you control.

1:20

It's about being informed, but, you know, instantly without compromising your

1:25

privacy.

1:25

And without relying on some centralized corporate gatekeepers.

1:29

Right. And of course, taking control of this kind of infrastructure

1:32

requires some reliable support, which brings us to our partner for this deep dive.

1:36

We want to thank the supporter of this deep dive, Safe Server.

1:39

Safe Server handles the hosting of this type of self-hosted software

1:43

and actively supports you in your digital transformation,

1:46

which makes that jump to autonomy a whole lot simpler.

1:49

You can find more information about their services at www.safeserver.de.

1:54

Okay, so let's unpack this. Let's start with the genesis, the why.

1:57

I mean, why did the creators feel the need to build Goatify from the ground up?

2:01

You know, when services like email or even commercial push notifications

2:05

were already out there, what problem was left unsolved?

2:08

Well, what's fascinating here is that the motivation wasn't really

2:11

about inventing some totally new concept.

2:13

It was more about providing a rock solid

2:18

community maintained implementation of an old one.

2:21

They saw a pretty glaring gap in the open source world.

2:24

They needed a, and I'm quoting here, simple server for sending

2:28

and receiving messages in real time per WebSocket.

2:31

And the source material specifically mentions that a lot of the existing

2:33

open source notification projects were just abandoned.

2:36

Right. And imagine building a crucial piece of your infrastructure

2:40

on a platform that just suddenly stops getting maintained.

2:44

It introduces this fragility.

2:46

So the creators had this core non-negotiable requirement.

2:50

The tool had to be something that can be self-hosted and,

2:53

you know, maintained robustly.

2:55

And that need for self-hosting, that's the strategic pivot, isn't it?

2:59

Because when you look at the landscape, there are, as the source says,

3:01

many free and commercial push services out there.

3:04

But those services, they inherently know a massive amount

3:07

about the metadata of your operational environment.

3:09

Exactly. The core philosophical benefit,

3:12

which is also the practical benefit for you, is made really explicit.

3:16

You control your data. Think about it.

3:18

When you route all your system alerts from backup complete

3:22

to server temperature critical through a third-party service,

3:26

well, that third party collects data.

3:28

Data on when you're busiest, how often your systems are alerting.

3:31

And what level of criticality they operate at.

3:33

That metadata trail can be incredibly revealing.

3:36

The Goatify just eliminates that exposure entirely.

3:39

It means the only entity that knows your server is panicking

3:42

at three in the morning is, well, you.

3:46

It fundamentally alters your privacy posture.

3:48

You aren't just gaining convenience.

3:50

You are literally removing a layer of trust and risk.

3:53

So, yeah, the value prop is simplicity, reliability, and total control.

3:57

So if that's the why, let's really dig into the what.

4:00

How does this system actually work?

4:01

What's the engine under the hood?

4:03

OK, so the heart of the project is the Goatify server.

4:06

And it's built around, let's say, three functional pillars

4:08

that all need to talk to each other.

4:10

Great. What's the first pillar?

4:11

Pillar one is sending messages.

4:13

This is handled through a REST API.

4:16

And we should probably break that down.

4:17

A REST API is just a perfectly standardized web address

4:20

you can send information to.

4:22

That's a great way to put it.

4:23

For a beginner, this is crucial.

4:24

It means any modern programming language, any shell script.

4:28

I mean, any web hook can push a message to Goatify

4:31

just by sending a structured web request.

4:34

So if I have a simple script that finishes a task,

4:36

I can just use a quick command, like cURL,

4:39

to hit that API endpoint, push the message,

4:42

and Goatify just captures it.

4:43

Precisely.

4:44

The REST API is the standardized door for information

4:48

entering the system.

4:49

OK, so that's getting messages in.

4:50

What about getting them out?

4:51

That's pillar two, receiving messages.

4:54

And this is the real-time secret sauce.

4:56

It's handled via WebSocket.

4:58

WebSocket.

4:59

So if the REST API is like placing an order at a counter?

5:02

Then the WebSocket is like having a direct, dedicated,

5:05

persistent telephone line that's always

5:07

open between your server and your client device,

5:09

like your phone.

5:10

And that persistence is so important, isn't it?

5:13

I mean, why not just have the mobile app constantly check

5:16

the server every minute?

5:17

That process.

5:18

Polling, right?

5:19

Yeah, polling is slow.

5:20

And it's incredibly inefficient on the battery and the network.

5:23

For a true instant notification, you

5:26

really need that two-way persistent connection

5:29

that a WebSocket provides.

5:31

When the server gets that message via the REST API, boom,

5:34

it immediately sends it down the already open WebSocket

5:37

connection.

5:38

It's instant.

5:39

That does raise a critical question for mobile users,

5:41

though.

5:42

If that connection is persistent,

5:44

the telephone line is always open.

5:46

Doesn't that create a huge battery drain?

5:48

That's why people often rely on native Google or Apple

5:51

services.

5:51

That's a great question.

5:52

And it's where the advantage of using a modern lightweight

5:55

protocol comes in, and also the fact it's written in Go.

5:58

While any persistent connection will use more power

6:00

than a sleeping one, the overhead is minimized.

6:03

The mobile clients are designed to manage that connection

6:06

efficiently, so the power drain is focused purely

6:09

on maintaining that link.

6:10

That makes sense.

6:11

It's a key distinction.

6:12

And then there's pillar three, the admin side.

6:14

Right.

6:14

The third function is just management.

6:16

This is straightforward but essential.

6:18

Creating users, generating specific API tokens

6:21

for your different applications, and controlling

6:24

which clients can connect.

6:25

And the great news is, you don't have

6:27

to live on the command line to do all this.

6:29

No, not at all.

6:30

The server, quoting again, includes a sleek web ooey.

6:35

For anyone new to this, that web interface

6:37

is your control panel.

6:39

It makes management infinitely easier.

6:41

And you mentioned it's written in Go or Golang.

6:44

Why does that matter for someone just getting started?

6:47

Well, Go is famous for its stability.

6:49

It's really performant.

6:51

And it has an incredibly small memory footprint.

6:53

For a notification server that needs to run 247

6:56

on minimal resources, maybe a tiny VPS or a Raspberry Pi.

7:00

Go provides that stability without the huge resource

7:03

overhead you'd get with other languages.

7:05

Exactly.

7:06

And for the setup itself, the developers

7:07

have made it dramatically simpler.

7:09

They automatically build Docker images on every single release.

7:12

Which is the gold standard for easy deployment now.

7:15

If you know Docker, this means you can install the entire

7:17

Go Defy server with all its dependencies perfectly

7:20

contained in just a few commands.

7:22

And that isolation is critical for keeping your notification

7:25

service stable and separate from everything else on your server.

7:28

This is where it gets really interesting for me,

7:30

because a server is pretty useless without clients, right?

7:33

Go Defy isn't just a back end.

7:35

It's a full ecosystem.

7:37

It is.

7:37

And the most important component for daily use

7:40

is obviously the mobile client, Go Defy Android.

7:43

This is the app on your phone that

7:44

subscribes to that persistent message stream via the web

7:47

socket.

7:48

So My Server Script pushes a message.

7:50

The Go Defy server gets it via that REST API.

7:53

And the client instantly displays it.

7:55

What does the app actually do when it gets the data?

7:58

It creates a standard traditional push

8:00

notification right on your phone screen.

8:02

And this is how your internal infrastructure

8:05

can alert you instantly.

8:06

But, and this is the crucial part,

8:08

without ever involving Google's push services.

8:12

Which guarantees that end-to-end data control.

8:16

I do see the source material has the legal note

8:18

about Google Play and the Google Play logo

8:21

are trademarks of Google LLC.

8:23

Right, which just reminds us where you download the client,

8:26

but the actual message routing is 100% self-hosted.

8:31

That is a fundamental difference compared

8:33

to using something like PushOver or even Telegram,

8:36

where the message still have to pass through a corporate server

8:39

before it hits your device.

8:40

Absolutely.

8:41

And the ecosystem also supports pushing messages in other ways.

8:44

There's also the GoDeFi clay.

8:46

The command line interface, who is that for?

8:48

It's really designed for system administrators

8:51

and automation scripts, people who prefer

8:52

interacting with the terminal.

8:54

The source confirms the CLIs is not required.

8:57

You can just use the REST API directly with cURL.

8:59

But the CLI offers a more user-friendly scripted

9:02

alternative when you're already in a Linux environment.

9:05

It just simplifies that API interaction.

9:07

And moving back to the server itself,

9:09

we have to talk about longevity and customization.

9:11

For any long-term infrastructure project,

9:14

features like plugins and clear documentation

9:16

are just paramount.

9:17

They really are.

9:18

And beyond basic user management,

9:20

the server supports plugins.

9:22

This allows the community or power users

9:24

to extend the functionality.

9:26

For instance, you could integrate

9:28

specific types of authentication or message

9:30

processing before an alert even goes out.

9:33

It keeps the core server light, but allows for complexity

9:36

if you need it.

9:37

And the documentation.

9:38

It's robust.

9:39

It covers installation, configuration,

9:42

and most importantly, detailed instructions for that REST API.

9:46

If you want to integrate this with your own projects,

9:48

the API docs are your guide.

9:50

And for people building mission-critical automation,

9:52

knowing the code is reliable is, well, it's essential.

9:56

How does Goatify make sure it's not

9:58

going to become one of those abandoned projects?

10:01

The source highlights a very mature quality assurance

10:03

process.

10:04

It mentions that several static code analyzers

10:07

and many unintended 2N tests are run on every TravisSci build.

10:10

Which, for the learner, basically

10:12

means that every time a developer changes the code,

10:15

the system automatically puts it through rigorous testing

10:17

to make sure nothing breaks.

10:18

Precisely.

10:19

That commitment ensures the code base stays reliable

10:22

and functional, making it a truly dependable backbone.

10:26

And if we connect that rigor to the bigger picture,

10:30

what does the thriving, open source nature of Goatify

10:33

tell us about the project's viability?

10:35

It tells us the project has achieved critical mass

10:38

and community trust.

10:39

The foundation is the licensing.

10:41

It's under the MIT license, which is highly permissive.

10:44

It's free and open source, designed

10:45

to be used by almost anyone.

10:47

And the community metrics, they really bear that trust out.

10:49

We saw massive engagement on the GitHub repo.

10:51

Oh, absolutely.

10:52

It has 13.9k stars, that is huge in the open source world.

10:57

It's a massive signal of approval.

10:59

And it's been forked 770 times, meaning

11:02

nearly 800 other developers are actively adapting it.

11:05

This is not a hobby project.

11:06

No, it's a living piece of infrastructure.

11:08

The project has benefited from the work

11:10

of 46 different contributors, with the code mostly

11:13

in Go and TypeScript for that great web interface.

11:17

This broad base is the opposite of an abandoned project.

11:20

And they ensure consistency through versioning,

11:23

using Sember for every release.

11:24

So users know exactly what to expect when they update.

11:27

With 66 releases already published,

11:30

it just signals continuous, stable development.

11:33

So to quickly summarize the key takeaways then,

11:35

Goatify offers a self-hosted, open-source alternative

11:39

for real-time notifications that really prioritizes

11:41

your digital autonomy.

11:43

It gives you total end-to-end control over your data

11:46

by leveraging that versatile REST API for sending messages

11:49

and the persistent web socket

11:50

for pushing them directly to your devices.

11:52

You know, this raises an important question

11:54

for anyone aiming for maximum digital autonomy.

11:57

How strategically crucial is it to have a tool

12:00

that completely separates your internal infrastructure,

12:03

your monitoring, your scripts,

12:05

from the notification services of large commercial companies?

12:08

The ability to alert yourself

12:09

without involving any third party,

12:11

it fundamentally changes your risk profile

12:13

and your operational freedom.

12:15

Absolutely.

12:15

And here's a final provocative thought for you to explore.

12:19

Beyond just simple server alerts,

12:21

how could integrating a simple API-driven messaging server

12:24

like Goatify transform the automation

12:26

of your personal or your work environment?

12:28

I mean, think about integrating it

12:30

into complex approval workflows

12:32

or delivering time-sensitive reports

12:34

or just completely transforming the responsiveness

12:37

of your smart home setup.

12:38

This deep dive was made possible by Safe Server.

12:41

They handle hosting the type of software we discuss

12:43

and support your journey toward digital transformation.

12:46

Find out how they can help you master your infrastructure

12:49

at www.safeserver.de.

12:52

Go explore.

12:52

Go explore.