一键实现推送服务:Docker 部署 ntfy 开源通知系统指南

一、简介

  • 可以通过简单的PUT/POST请求实现消息推送
  • 可以发送多种类型的内容,包括文本、链接、图片、附件等等
  • 具有电脑、手机客户端,可以实时接收和查看消息内容
  • 可以直接使用官网ntfy.sh免费消息额度,也可以快速自托管部署(推荐)
  • 开源地址参考:https://github.com/binwiederhier/ntfy
  • 该项目消息发布订阅流程图可参考:

二、安装(自托管方案)

  • 准备一台主机,安装好docker、docker-compose软件环境

  • 新建docker-compose.yml配置文件,配置内容如下:
    不需要登录就能访问使用版本(不安全,测试环境使用)

    services:
      ntfy:
        image: binwiederhier/ntfy
        container_name: ntfy
        command:
          - serve
        environment:
          - TZ=Asia/Shanghai  # 设置为中国时区
        volumes:
          - ./cache:/var/cache/ntfy
          - ./etc:/etc/ntfy
        ports:
          - 8080:80
        restart: unless-stopped

    带授权、缓存、附件支持版本

    services:
      ntfy:
        image: binwiederhier/ntfy
        container_name: ntfy
        command:
          - serve
        environment:
          - TZ=Asia/Shanghai  # 设置为中国时区
          - NTFY_BASE_URL=http://ip:8080 #设置自己部署后的基础访问地址:https://ntfy.xxxxxxx.xyz
          - NTFY_CACHE_FILE=/var/lib/ntfy/cache.db #缓存数据
          - NTFY_AUTH_FILE=/var/lib/ntfy/auth.db #授权数据
          - NTFY_AUTH_DEFAULT_ACCESS=deny-all  #禁用非授权访问
          - NTFY_BEHIND_PROXY=true
          - NTFY_ATTACHMENT_CACHE_DIR=/var/lib/ntfy/attachments #设置附件缓存目录
          - NTFY_ENABLE_LOGIN=true #开启登录授权访问
        volumes:
          - ./cache:/var/cache/ntfy
          - ./etc:/etc/ntfy
          - ./lib:/var/lib/ntfy
        ports:
          - 8080:80
        restart: unless-stopped
  • 一键启动命令,如下:

    docker-compose up -d

    命令运行成功截图参考:

  • 如果启动的是需要登录授权的版本,可以通过一下命令创建账户密码

    //下面命令是进入容器创建一个admin账号,授权admin角色,可以读写所有主题
    //更精细的授权参考官网:https://docs.ntfy.sh/config/#access-control-list-acl
    //执行下面命令后,输入两次密码即可创建账号
    docker-compose exec ntfy ntfy user add --role=admin admin
  • 启动成功,可以访问地址:http://ip:8080/,但是要流畅体验完整的功能,请自行使用域名反代到该服务的8080端口,并开启HTTPS证书访问(方式太多,这里不讨论这个),注意:如使用nginx反代,需要设置支持websocket

三、使用

1. 订阅关注的主题

  • 这里以浏览器网页客户端为例,访问你的 ntfy 的服务地址

  • 默认界面语言是英文,支持多语言,可以修改成简体中文

  • 如果需要需要使用浏览器自带的通知功能,需要开启域名+证书访问,并且授权浏览器通知功能

  • 订阅需要监听的通知主题,可以自定义编辑,但最好具有一定的唯一性、随机性,防止被人暴力推送消息

2. 发布通知到主题

  • 通过网页客户端发送,如下示例

  • 通过POST请求发送通知(支持的其他参数自行探索,这里只做简单示例)

    //如果开启了授权访问,需要设置basic授权,如使用链接:https://user:pass@ntfy.xxxxxx.xyz/9Ztg7CGTTBGtJugV
    //不需要授权,则直接使用下面的命令即可
    curl -d "这是一条消息内容" https://ntfy.xxxxxx.xyz/9Ztg7CGTTBGtJugV

3. 通知结果示例

  • 电脑网页客户端(订阅主题,如上)

  • 手机应用客户端(先订阅主题,类似上面网页端)

四、总结

  • 一个功能比较完善的通知系统,go语言开发,低资源消耗、高性能
  • 通过简单的POST请求就能实现消息通知,方便适应各种命令行终端,同时也提供各种语言对接的SDK,可以快速把一些需要实时知晓的通知迁移到 ntfy
© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容