如何在 Linux 上安装和自行托管 Ntfy 服务器
Ntfy 是一个用 Go 编写的免费开源通知服务,它让我们可以通过简单的 POST 或 PUT 请求在智能手机或台式电脑上轻松发送和接收推送通知。基本在线服务是免费公开提供的,并且在 Linux 上,还可以自行托管 Ntfy 实例。
在本教程中,我们将了解如何在 Linux 上安装 Ntfy 服务器以及如何使用它发送和接收推送通知。
在本教程中您将学习:
如何在基于 Debian 的系统上安装 Ntfy 存储库
如何在基于 Fedora 的发行版上安装 Ntfy rpm 包
如何使用官方 Docker 镜像运行 Ntfy
如何订阅主题并发送通知
安装 Ntfy 存储库(基于 Debian 的系统)
在基于 Debian 的发行版上安装 Ntfy 服务器的最直接方法是将官方存储库添加到系统软件源中,并安装包含适合我们要运行服务的计算机架构的预编译二进制文件的软件包。以下架构存在预编译的二进制文件:
x86_64/amd64
ARMv7/ARMHF
ARM64
我们要做的第一件事是将用于对存储库包进行签名的存储库 GPG 密钥添加到我们的系统中。可以使用以下命令下载密钥:
$ curl -LO https://archive.heckel.io/apt/pubkey.txt
密钥是 ASCII 装甲的:虽然在 Debian 的最新版本(自 Debian Jessie 起)上可以直接使用装甲密钥,但为了确保最大的兼容性,我们需要在将其复制到适当的位置之前对其进行删除。我们可以通过运行以下命令来执行这两个操作:
$ sudo gpg --output /usr/share/keyrings/archive.heckel.io.gpg --dearmor pubkey.txt
密钥到位后,我们可以将存储库添加到分发软件源中。我们创建包含以下内容的 /etc/apt/sources.list.d/archive.heckel.io.list
文件:
deb [arch=amd64 signed-by=/usr/share/keyrings/archive.heckel.io.gpg] https://archive.heckel.io/apt debian main
此时我们可以更新包索引文件并安装 ntfy
包:
$ sudo apt-get update && sudo apt-get install ntfy
安装 ntfy rpm 包(基于 Fedora 的发行版)
在撰写本文时,还没有可用的 rpm 存储库,因此,在基于 Fedora 的发行版上,我们必须使用以下命令直接安装官方 rpm 包:
$ sudo dnf install https://github.com/binwiederhier/ntfy/releases/download/v2.5.0/ntfy_2.5.0_linux_amd64.rpm
系统将提示我们确认安装。如果一切看起来都正常(应该如此),我们可以肯定地回答:
============================================================================================================================
Package Architecture Version Repository Size
============================================================================================================================
Installing:
ntfy x86_64 2.5.0-1 @commandline 20 M
Transaction Summary
============================================================================================================================
Install 1 Package
Total size: 20 M
Installed size: 41 M
Is this ok [y/N]: y
配置Ntfy并启动服务
一旦安装了Ntfy,我们就可以启动该服务并make使其在启动时自动启动:
$ sudo systemctl enable --now ntfy
ntfy 服务启动后应该可以开箱即用,侦听端口 80。但是,要调整一些配置参数,我们必须编辑 /etc/ntfy/server.yml
文件,其中,除此之外,我们可以通过使用listen-https指令来设置我们想要使用的端口(通常是443)来启用https支持。这样做时,我们还必须指定密钥和证书文件的路径:
listen-https: ":443"
key-file: /path/to/key-file
cert-file: /path/to/cert-file
许多其他参数可以调整。官方文档提供了完整的配置选项列表。
使用 Docker 镜像
通过使用官方的Ntfy Docker镜像,我们可以以跨分布和隔离的方式运行服务。该映像可用于我们上面提到的架构,以及 armv6
:这使得在早期的 Raspberry Pi 型号上部署该服务成为可能。要下载 Docker 镜像并启动基于它的容器,我们可以使用以下命令:
$ sudo docker run -d -p 80:80 binwiederhier/ntfy serve
使用上面的命令,我们以分离模式 (-d
) 运行容器,并将其内部的端口 80
映射到主机系统上的同一端口。这是启动服务的最简单的方法。要使用修改后的配置文件,我们必须将其在主机系统上的位置绑定安装到容器内的适当位置(绑定安装文件,我们可以看到我们在其中所做的更改,立即反映在容器内)。假设配置文件 server.yml
位于当前工作目录中,我们将运行:
$ sudo docker run -d -p 80:80 -v "$(pwd)"/server.yml:/etc/ntfy/server.yml
使用 Docker 镜像的更多示例可以在官方文档页面上找到。
订阅主题并发送通知
一旦服务器可以访问(请务必配置防火墙,以便允许流量通过适当的端口),我们就可以使用客户端应用程序来订阅主题。这是使用 Android 应用程序的示例,该应用程序也是免费的开源软件。在 Android 上,可以从 Google Play 或 F-droid 安装该应用程序(在 Apple 设备上,可以从 App Store 安装):
要订阅主题,我们启动应用程序并点击“+”按钮:
然后,我们写下我们想要订阅的主题的名称(名称是完全任意的),并且,要使用我们的自托管 Ntfy 实例,我们选中“使用另一台服务器”并输入我们服务器的 IP;最后,我们点击“订阅”。在本例中,作为示例,我使用了内部 LAN 服务器:
要向主题发送通知,我们所要做的就是使用我们选择的编程语言或我们最喜欢的命令行工具向服务器发出 POST 或 PUT 请求。在下面的示例中,我们使用 curl
:
$ curl -d "Hello World!" http://192.168.0.39/linuxconfig
推送通知应该出现在我们的客户端设备上:
结论
在本教程中,我们学习了如何在 Linux 上自托管 Ntfy 服务器。 Ntfy 是免费的开源软件,它允许我们订阅我们选择的主题并接收我们可以通过简单的 POST 或 PUT 请求发送的推送通知。您可以在 Github 上了解有关该项目的更多信息并查看官方文档。