Gotify¶
Gotify is a self-hosted push notification service written in Go and distributed under the MIT License. It consists of a server for sending and receiving messages in real-time per WebSocket which is distributed as a single binary. It can be accessed via the built-in web-ui, the cli or the Android app (available via F-Droid and GooglePlay ).
Prerequisites¶
Gotify comes with a built-in sqlite database, but if you prefer to use MySQL, you can do so.
Gotify can run under a subdomain (e.g. https://gotify.isabella.uber.space) or via a subpath (e.g. https://isabella.uber.space/gotify/).
For both options you need to configure a web backend. The subpath option looks like this:
[isabell@stardust ~]$ uberspace web backend set /gotify/ --http --port 52111 --remove-prefix
Set backend for / to port 52111; please make sure something is listening!
You can always check the status of your backend using "uberspace web backend list".
[isabell@stardust ~]$
Note the –remove-prefix option here. Without it, gotify will not work behind a sub path (e.g. isabell.uber.space/gotify/).
Installation¶
Like a lot of Go software, gotify is distributed as a single binary. Download gotify’s latest release, unzip it and make sure that the file can be executed.
[isabell@stardust ~]$ mkdir ~/gotify && cd ~/gotify
[isabell@stardust gotify]$ wget https://github.com/gotify/server/releases/download/v2.0.10/gotify-linux-amd64.zip
Resolving github.com (github.com)... 140.82.118.4
Connecting to github.com (github.com)|140.82.118.4|:443... connected.
HTTP request sent, awaiting response... 302 Found
Length: 52960072 (51M) [application/octet-stream]
Saving to: gotify-linux-amd64.zip
100%[==========================================>] 10,200,261 12.0MB/s
2019-10-26 01:15:11 (12.0 MB/s) - 'gotify-linux-amd64.zip' saved [10200261/10200261]
[isabell@stardust gotify]$ unzip gotify-linux-amd64.zip
Archive: gotify-linux-amd64.zip
inflating: gotify-linux-amd64
inflating: LICENSE
creating: licenses/
inflating: licenses/github.com_gotify_plugin-api
[...]
inflating: licenses/golang.org_x_crypto
[isabell@stardust gotify]$
Configuration¶
Config file¶
Without configuration, gotify will listen on port 80. To change that to our previously chosen 52111
,
we will use an environment variable. It is also possible to use a config file, but we will ignore that for now.
If you still want to change values in the config, download the example config and adjust it to your needs:
[isabell@stardust gotify]$ wget -O config.yml https://raw.githubusercontent.com/gotify/server/master/config.example.yml
[isabell@stardust gotify]$
Documentation for the config file can be found on the gotify website.
Setup daemon¶
Create ~/etc/services.d/gotify.ini
with the following content.
[program:gotify]
command=%(ENV_HOME)s/gotify/gotify-linux-amd64
directory=%(ENV_HOME)s/gotify/
environment=GOTIFY_SERVER_PORT=52111
After creating the configuration, tell supervisord to refresh its configuration and start the service:
[isabell@stardust ~]$ supervisorctl reread
SERVICE: available
[isabell@stardust ~]$ supervisorctl update
SERVICE: added process group
[isabell@stardust ~]$ supervisorctl status
SERVICE RUNNING pid 26020, uptime 0:03:14
[isabell@stardust ~]$
If it’s not in state RUNNING, check your configuration.
Finishing installation¶
The default user and password is admin
and admin
, but you are advised
to change in as soon as you log in. You can replace the admin user with an
other user with admin privileges later on.
Updates¶
Note
Check the update feed regularly to stay informed about the newest version.
Check gotify’s releases for the latest version. If a newer
version is available, stop daemon by supervisorctl stop gotify
and repeat the “Installation” step followed by supervisorctl start gotify
to restart gotify.
Tested with Gotify 2.0.10, Uberspace 7.3.6.1
Written by: Jonas <https://github.com/jfowl>