A simple server for push notifications via Matrix (and a minimalistic alternative to Pushover and Gotify with a strong focus on security) 🚀📯
Find a file
2020-12-28 01:26:51 +01:00
.github/workflows Setup path directly in the job where needed 2020-12-27 23:57:10 +01:00
api Add health check for Docker image 2020-08-06 20:42:35 +02:00
assert Partially implement updates of models 2020-08-02 02:46:38 +02:00
authentication Return nil when application cannot retrieved 2020-11-28 09:10:51 +01:00
configuration Increase default parameters for Argon2 2020-07-31 20:06:36 +02:00
database Add health check for Docker image 2020-08-06 20:42:35 +02:00
dispatcher Revert "Use bold font for titles of notifications" 2020-08-07 22:06:13 +02:00
model Handle unbound members when binding request 2020-08-03 15:37:16 +02:00
router Add health check for Docker image 2020-08-06 20:42:35 +02:00
runner Add configuration for HTTP and debug mode 2020-07-31 20:04:33 +02:00
.dockerignore Add simplistic Dockerfile 2020-07-27 22:05:00 +02:00
.editorconfig Initialize repository 2020-07-26 00:32:13 +02:00
.gitignore Add configuration for Travis CI 2020-07-26 15:27:36 +02:00
app.go Implement changing of passwords 2020-08-02 14:45:24 +02:00
Dockerfile Add health check for Docker image 2020-08-06 20:42:35 +02:00
go.mod Replace bcrypt with Argon2 2020-07-27 21:48:41 +02:00
go.sum Replace bcrypt with Argon2 2020-07-27 21:48:41 +02:00
LICENSE Initialize repository 2020-07-26 00:32:13 +02:00
Makefile Migrate to GitHub Actions 2020-12-27 23:26:53 +01:00
README.md Update README.md 2020-12-28 01:26:51 +01:00

Build status Docker Pulls License

About

PushBits is a relay server for push notifications. It enables your services to send notifications via a simple web API, and delivers them to you through Matrix. This is similar to what PushBullet, Pushover, and Gotify offer, but a lot less complex.

The vision is to have compatibility with Gotify on the sending side, while on the receiving side an established service is used. This has the advantages that

  • sending plugins written for Gotify (like those for Watchtower and Jellyfin) as well as
  • receiving clients written for the messaging service can be reused.

Why Matrix instead of X?

For now, only Matrix is supported, but support for different services like Telegram could be added in the future. WhatsApp and Signal unfortunately do not have an API through which PushBits can interact.

I am myself experimenting with Matrix currently because I like the idea of a federated, synchronized but still end-to-end encrypted protocol. If you haven't tried it yet, I suggest you to check it out.

Usage

PushBits is meant to be self-hosted. You are advised to install PushBits behind a reverse proxy and enable TLS.

At the moment, there is no front-end implemented. New users and applications need to be created via the API. Details will be made available once the interface is more stable.

To get started, here is a Docker Compose file you can use.

version: '2'

services:
    server:
        image: eikendev/pushbits:latest
        ports:
            - 8080:8080
        environment:
            PUSHBITS_DATABASE_DIALECT: 'sqlite3' # Can use either 'sqlite3' or 'mysql'.
            PUSHBITS_ADMIN_MATRIXID: '@your/matrix/username:matrix.org' # The matrix account on which the admin will receive their notifications.
            PUSHBITS_ADMIN_PASSWORD: 'your/matrix/password' # The login password of the admin for PushBits. Default username is 'admin'.
            PUSHBITS_MATRIX_USERNAME: 'your/pushbits/username' # The matrix account from which PushBits notifications are sent to users.
            PUSHBITS_MATRIX_PASSWORD: 'your/pushbits/password' # The password of the above account.
        volumes:
            - /etc/localtime:/etc/localtime:ro
            - /etc/timezone:/etc/timezone:ro
            - ./mount/data:/data

Development

PushBits is currently in alpha stage. The API is neither stable, nor is provided functionality guaranteed to work. Stay tuned! 😉

Acknowledgments

The idea for this software and most parts of the initial source are heavily inspired by Gotify. Many thanks to jmattheis for his well-structured code.