MIND an open source Self Hosted Scheduled Notifier

MIND is an open source self-hosted application that can send scheduled/timed notifications to any of 80+ notification services thus keeping you abreast of things to keep you in your right “MIND”.

A few months ago I published a tutorial entitled Home Lab Network Monitoring where I discussed how to use NetAlertX to monitor your local LAN events.

In the course of that video, I introduced Apprise which is a sort of swiss army knife of notification services. I also introduced Gotify in the same tutorial which is a self hosted push notification service.

Both Apprise and Gotify can be self hosted without any cloud dependencies.

The MIND app is a simple self hosted reminder application that can send push notifications using any of the Apprise services for time-based scheduled events. Think of MIND as sending self-hosted, scheduled calendar alerts based on events that you create.

In this tutorial I use MIND to send a scheduled notification to Gotify as an example.

We are going to install MIND as an incus OCI container. You must be running at least incus 6.3 in order to have OCI docker support on your incus server.

incus version

If you are unfamiliar with the incus containerization system, watch my tutorial entitled Incus Containers Step by Step.

Create an incus network to bridge to your main LAN.

incus network create LAN --type=macvlan parent=bridge0

Create a storage volume for the MIND application for persistent data in the default storage pool. This is required since docker applications are volatile unless you provide persistent storage for them.

incus storage volume create default MIND-Data

Assuming you are running at least incus 6.3, but have not watched my Incus Docker Containers tutorial, you will need to add the docker repository to your incus server repository list with this command:

incus remote add docker https://docker.io --protocol=oci

Create the container to run MIND without starting it and adjust the time zone accordingly in the following command.

incus create docker:mrcas/mind:latest MIND -c environment.TZ="America/Chicago" -c boot.autostart=true --network LAN

Attach the persistent storage volume we created earlier to the folder in the MIND container where the database information is stored.

incus storage volume attach default MIND-Data MIND /app/db

Start the MIND container.

incus start MIND

At this point, you can do an “incus list” to find out the address of the MIND container. If you followed me so far, here’s how things should look.

Head over to your web browser and go to the address of the MIND container with a “:8080” at the end of the address since MIND runs on port 8080.

Click the option on the screen above to create a new account and enter your desired username and password. You should now be at a screen which allows you to define your first notification service. We need to define at least one service before we can create a notification event.

In my case, I created a notification service entry for “Gotify” as one example. I headed over to my gotify instance and created a new application token for the API.

I copied the API for the new Gotify application. Your token will be different.

Back on the MIND screen I entered the API token as well as the local IP address of my Gotify server after which I click the “Add” button.

I now have my first notification service and you can create more if you like.

Head back to the home screen and create your first Reminder.

Here’s my example reminder.

You can create as many reminders as you like and they will appear on your home screen until they send the reminder.

You can create “static” reminders which are not time based and can just be executed on demand. Templates are just a starting point for creating other reminders.

When I head back to my Gotify instance, the reminder will pop up at the designated time.

MIND can be used to schedule calendar events on your local network without using a cloud service like Google Calendar.