The newly extracted role also has native Traefik support, so we no longer need to rely on `matrix-nginx-proxy` for reverse-proxying to Ntfy. The new role uses port `80` inside the container (not `8080`, like before), because that's the default assumption of the officially published container image. Using a custom port (like `8080`), means the default healthcheck command (which hardcodes port `80`) doesn't work. Instead of fiddling to override the healthcheck command, we've decided to stick to the default port instead. This only affects the inside-the-container port, not any external ports. The new role also supports adding the network ranges of the container's multiple additional networks as "exempt hosts". Previously, only one network's address range was added to "exempt hosts".
6.1 KiB
Setting up ntfy (optional)
The playbook can install and configure the ntfy push notifications server for you.
Using the UnifiedPush standard, ntfy enables self-hosted (Google-free) push notifications from Matrix (and other) servers to UnifiedPush-compatible matrix compatible client apps running on Android and other devices.
This role is intended to support UnifiedPush notifications for use with the Matrix and Matrix-related services that this playbook installs. This role is not intended to support all of ntfy's other features.
Note: In contrast to push notifications using Google's FCM or Apple's APNs, the use of UnifiedPush allows each end-user to choose the push notification server that they prefer. As a consequence, deploying this ntfy server does not by itself ensure any particular user or device or client app will use it.
Adjusting the playbook configuration
Add the following configuration to your inventory/host_vars/matrix.DOMAIN/vars.yml
file (adapt to your needs):
# Enabling it is the only required setting
ntfy_enabled: true
# This is the default hostname.
# Uncomment the line below and change it, if you'd like.
# matrix_server_fqn_ntfy: "ntfy.{{ matrix_domain }}"
# Uncomment and change to inject additional configuration options.
# ntfy_configuration_extension_yaml: |
# log_level: DEBUG
For a more complete list of variables that you could override, see the defaults/main.yml
file of the ntfy Ansible role.
For a complete list of ntfy config options that you could put in ntfy_configuration_extension_yaml
, see the ntfy config documentation.
Installing
Don't forget to add ntfy.<your-domain>
to DNS as described in Configuring DNS before running the playbook.
After configuring the playbook, run the installation command again:
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start
Usage
To make use of your ntfy installation, on Android for example, you need two things:
- the
ntfy
app - a UnifiedPush-compatible matrix app
You need to install the ntfy
app on each device on which you want to receive push notifications through your ntfy server. The ntfy
app will provide UnifiedPush notifications to any number of UnifiedPush-compatible messaging apps installed on the same device.
Setting up the ntfy
Android app
- Install the ntfy Android app from F-droid or Google Play.
- In its Settings ->
General: Default server
, enter your ntfy server URL, such ashttps://ntfy.DOMAIN
. - In its Settings ->
Advanced: Connection protocol
, chooseWebSockets
.
That is all you need to do in the ntfy app. It has many other features, but for our purposes you can ignore them. In particular you do not need to follow any instructions about subscribing to a notification topic as UnifiedPush will do that automatically.
Setting up a UnifiedPush-compatible matrix app
Install any UnifiedPush-enabled matrix app on that same device. The matrix app will learn from the ntfy
app that you have configured UnifiedPush on this device, and then it will tell your matrix server to use it.
Steps needed for specific matrix apps:
-
FluffyChat-android:
- Should auto-detect and use it. No manual settings.
-
SchildiChat-android:
- enable
Settings
->Notifications
->UnifiedPush: Force custom push gateway
. - choose
Settings
->Notifications
->UnifiedPush: Re-register push distributor
. (For info, a more complex alternative to achieve the same is: delete the relevant unifiedpush registration inntfy
app, force-close SchildiChat, re-open it.) - verify
Settings
->Notifications
->UnifiedPush: Notification targets
as described below in the "Troubleshooting" section.
- enable
-
Element-android v1.4.26+:
- choose
Settings
->Notifications
->Notification method
->ntfy
- verify
Settings
->Troubleshoot
->Troubleshoot notification settings
- choose
If the matrix app asks, "Choose a distributor: FCM Fallback or ntfy", then choose "ntfy".
If the matrix app doesn't seem to pick it up, try restarting it and try the Troubleshooting section below.
Troubleshooting
First check that the matrix client app you are using supports UnifiedPush. There may well be different variants of the app.
Set the ntfy server's log level to 'DEBUG', as shown in the example settings above, and watch the server's logs with sudo journalctl -fu matrix-ntfy
.
To check if UnifiedPush is correctly configured on the client device, look at "Settings -> Notifications -> Notification Targets" in Element-Android or SchildiChat, or "Settings -> Notifications -> Devices" in FluffyChat. There should be one entry for each matrix client app that has enabled push notifications, and when that client is using UnifiedPush you should see a URL that begins with your ntfy server's URL.
In the "Notification Targets" screen in Element-Android or SchildiChat, two relevant URLs are shown, "push_key" and "Url", and both should begin with your ntfy server's URL. If "push_key" shows your server but "Url" shows an external server such as up.schildi.chat
then push notifications will still work but are being routed through that external server before they reach your ntfy server. To rectify that, in SchildiChat (at least around version 1.4.20.sc55) you must enable the Force custom push gateway
setting as described in the "Usage" section above.
If it is not working, useful tools are "Settings -> Notifications -> Re-register push distributor" and "Settings -> Notifications -> Troubleshoot Notifications" in SchildiChat (possibly also Element-Android). In particular the "Endpoint/FCM" step of that troubleshooter should display your ntfy server's URL that it has discovered from the ntfy client app.
The simple UnifiedPush troubleshooting app UP-Example can be used to manually test UnifiedPush registration and operation on an Android device.