圈小蛙

ntfy通知,全平台兼容,无需注册的消息推送服务

​​一、什么是ntfy

ntfy(发音为notify)是一种基于HTTP 的简单pub-sub 通知服务。 它允许您通过脚本从任何计算机和/或使用REST API 向手机或桌面发送通知。 它是无限灵活的,并且是100% 免费软件。

ntfy接收消息设备可以是Android、IOS、浏览器。使用非常简单无需注册。

官方提供了免费的版本:https://ntfy.sh/app

二、ntfy安装

群晖(Container Manager)安装

下载

在注册表中搜索ntfy​,选择第一个binwiederhier/ntfy​,版本选择 latest​。

目录映射

在docker​文件夹中,创建一个新文件夹,并将其命名为ntfy​,并在其中建2​个子文件夹,分别为cache​和config​

文件夹装载路径说明
docker/ntfy/cache/var/cache/ntfy存放消息缓存
​docker/ntfy/config/etc/ntfy存放配置文件

端口

默认并没有指定端口,随便选择本地端口,不占用已经在使用的端口就行。

Docker安装

新建目录

mkdir -p /data/docker/ntfy/{cache,config}

进入ntfy目录

cd /data/docker/ntfy

启动容器

docker run -d \
--name ntfy \
-v $(pwd)/cache:/var/cache/ntfy \
-v $(pwd)/config:/etc/ntfy \
-p 8080:80 \
binwiederhier/ntfy

或者直接使用docker-compose

脚本如下:

version: "3"
services:
ntfy:
image: binwiederhier/ntfy:latest
container_name: ntfy
command:
- serve
environment:
- TZ=Asia/Shanghai
volumes:
- /home/ntfy/data/cache:/var/cache/ntfy
- /home/ntfy/data/config:/etc/ntfy
ports:
- 8080:80
restart: unless-stopped

三、反向代理

更多示例参考代理配置,这里仅摘录安全的Nginx配置

# /etc/nginx/sites-*/ntfy
#
# This config requires the use of the -L flag in curl to redirect to HTTPS, and it keeps nginx output buffering
# enabled. While recommended, I have had issues with that in the past.

server {
  listen 80;
  server_name ntfy.sh;

  location / {
    return 302 https://$http_host$request_uri$is_args$query_string;

    proxy_pass http://127.0.0.1:2586;
    proxy_http_version 1.1;

    proxy_set_header Host $http_host;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    proxy_connect_timeout 3m;
    proxy_send_timeout 3m;
    proxy_read_timeout 3m;

    client_max_body_size 0; # Stream request body to backend
  }
}

server {
  listen 443 ssl http2;
  server_name ntfy.sh;

  # See https://ssl-config.mozilla.org/#server=nginx&version=1.18.0&config=intermediate&openssl=1.1.1k&hsts=false&ocsp=false&guideline=5.6see https://ssl-config.mozilla.org/#server=nginx&version=1.18.0&config=intermediate&openssl=1.1.1k&hsts=false&ocsp=false&guideline=5.6
  ssl_session_timeout 1d;
  ssl_session_cache shared:MozSSL:10m; # about 40000 sessions
  ssl_session_tickets off;
  ssl_protocols TLSv1.2 TLSv1.3;
  ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
  ssl_prefer_server_ciphers off;

  ssl_certificate /etc/letsencrypt/live/ntfy.sh/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/ntfy.sh/privkey.pem;

  location / {
    proxy_pass http://127.0.0.1:2586;
    proxy_http_version 1.1;

    proxy_set_header Host $http_host;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    proxy_connect_timeout 3m;
    proxy_send_timeout 3m;
    proxy_read_timeout 3m;

    client_max_body_size 0; # Stream request body to backend
  }
}

四、配置文件

参考官方配置文件示例

配置文件需要映射为容器中的 /etc/ntfy/server.yml​ 文件。

vim server.yml

base-url: "https://ntfy.xxxxx.com:8443"
cache-file: "/var/cache/ntfy/cache.db"
attachment-cache-dir: "/var/cache/ntfy/attachments"
upstream-base-url: "https://ntfy.sh"

配置好域名:https://ntfy.xxxxx.com,并在Nginx中设置端口为8443,在浏览器中输入https://ntfy.xxxxx.com:8443就能看到主界面。

默认情况下,ntfy​ 服务器对所有人开放,这意味着​每个人都可以读取和写入任何主题​(这就是 ntfy.sh​ 的配置方式)。要限制对您自己的服务器的访问,您可以选择配置身份验证和授权。配置方法可以看看官方文档:https://ntfy.sh/docs/config/#access-control

五、手机客户端

IOS版本,下载地址:https://apps.apple.com/us/app/ntfy/id1625396347

安卓版本,除了可以在Google Play​下载(https://play.google.com/store/apps/details?id=io.heckel.ntfy&hl=en&gl=US)外,还可以在 F-Droid​ 下载:https://f-droid.org/en/packages/io.heckel.ntfy/

Exit mobile version