this post was submitted on 11 May 2025
1 points (100.0% liked)

Self-Hosted Alternatives to Popular Services

222 readers
1 users here now

A place to share, discuss, discover, assist with, gain assistance for, and critique self-hosted alternatives to our favorite web apps, web...

founded 2 years ago
MODERATORS
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/selfhosted by /u/lead2gold on 2025-05-10 15:38:52+00:00.


I don't post that often, but I did want to today to share that Apprise just reached 50M+ total downloads on PyPy today (source) ๐Ÿš€! This feat fell on my cakeday too which was a fun coincidence ๐Ÿ™‚.

What is Apprise?

Apprise allows you to send a notification to almost all of the most popular notification services available to us today such as: Telegram, Discord, Slack, Amazon SNS, Gotify, etc.

  • One notification library to rule them all.
  • A common and intuitive notification syntax.
  • Supports the handling of images and attachments (to the notification services that will accept them).
  • It's incredibly lightweight.
  • Amazing response times because all messages sent asynchronously.

I still don't get it... ELI5

Apprise is effectively a self-host efficient messaging switchboard. You can automate notifications through:

  • the Command Line Interface (for Admins)
  • it's very easy to use Development Library (for Devs)
  • a web service (you host) that can act as a sidecar. This solution allows you to keep your notification configuration in one place instead of across multiple servers (or within multiple programs). This one is for both Admins and Devs.

A lot of systems have already adapted to it such as HomeAssistant, Apache Airflow, ChangeDetection, Uptime Kuma (and many others) which shows the commonality. Mailrise is an incredibly talented program that converts Emails sent to it to trigger notifications via Apprise.

What else does it do?

  • Emoji Support (:rocket: -> ๐Ÿš€) built right into it!
  • File Attachment Support (to the end points that support it)
  • It supports inputs of MARKDOWN, HTML, and TEXT and can easily convert between these depending on the endpoint. For example: HTML provided input would be converted to TEXT before passing it along as a text message. However the same HTML content provided would not be converted if the endpoint accepted it as such (such as Telegram, or Email).
    • It supports breaking large messages into smaller ones to fit the upstream service. Hence a text message (160 characters) or a Tweet (280 characters) would be constructed for you if the notification you sent was larger.
  • It supports configuration files allowing you to securely hide your credentials and map them to simple tags (or identifiers) like family, devops, marketing, etc. There is no limit to the number of tag assignments. It supports a simple TEXT (https://github.com/caronc/apprise/wiki/config//_text) based configuration, as well as a more advanced and configurable YAML (https://github.com/caronc/apprise/wiki/config//_yaml) based one.
    • Configuration can be hosted via the web (even self-hosted), or just regular (protected) configuration files.
  • Supports "tagging" of the Notification Endpoints you wish to notify. Tagging allows you to mask your credentials and upstream services into single word assigned descriptions of them. Tags can even be grouped together and signaled via their group name instead.
  • Persistent Storage; this allows Apprise to reduce web requests (such as obtaining a JWT token for reuse).
  • Dynamic Module Loading: They load on demand only. Writing a new supported notification is as simple as adding a new file (see here)
  • Developer CLI tool (it's like /usr/bin/mail on steroids) It's worth re-mentioning that it has a fully compatible API interface found here or on Dockerhub which has all of the same bells and whistles as defined above. This acts as a great side-car solution!
  • Custom Plugin Designs: Do one of the 110+ supported services not quite cut it for your custom demands? No worries, Apprise lets you build your own custom module with ease using a a simple decorator. See here for more details.

Program Details

  • Entirely a self-hosted solution.
  • Written in Python
  • 99.37% Test Coverage (oof... I'll get it back to 100% eventually again)
  • BSD-2 License
  • Over 13,300 stars on GitHub! โญ
  • Over 5M downloads a month on PyPi (source)
  • Over 50M downloads total on PyPi (source) - Reason for this post
  • The API version of Apprise has had more than 3.8 million downloads from Docker Hub
  • Supports more then 110 Services already (always adding more!)

Give me an Example

Sure and first off, here is an old blog entry I wrote that goes in more depth.

  1. Pick one or more services you want to notify and see how to configure it. Each service translates to a URL; for example discord://credentials?customize=options and/or telegram://credentials?customize=options and so forth. Over 110+ supported to choose from.
  2. Store your configuration in a configuration file
  3. Send your notification:
# A simple notification 
apprise -t "my title" -b "my body"

# Send an attachment
apprise -t 'not looking good' \
    -b 'the dog ate my homework' \
    --attach=/photos/DSC_0001.jpg

# Send multiple attachments
# they can even be from a website or local security camera:
apprise -b "someone is outside" \
   --attach=http://camera01.home.arpa/?image=jpg \
   --attach=http://camera02.home.arpa/?image=jpg

no comments (yet)
sorted by: hot top controversial new old
there doesn't seem to be anything here