当前位置: 首页 > news >正文

【Docker】搭建安全可控的自定义通知推送服务 - Bark

【Docker】搭建安全可控的自定义通知推送服务 - Bark

前言

本教程基于绿联的NAS设备DX4600 Pro的docker功能进行搭建。

简介

Bark是一款为Apple设备用户设计的开源推送服务应用,它允许开发者、程序员以及一般用户将信息快速推送到他们自己的iPhone、iPad等设备上。

主要特点如下:

  • 快速:Bark使用了苹果的推送服务,可以迅速无延迟地把信息推送到用户的设备上。

  • 简单:Bark提供了简单的API接口,用户只需要通过简单的HTTP请求就可以实现信息的推送。

  • 免费:Bark是完全免费的,用户可以无限制地使用它来推送信息。

  • 多样化推送:Bark提供了多种推送方式,包括文本信息、链接、图片、音频等,可以满足不同用户的需求。

Bark的应用场景很多,如监控告警、打卡提醒、股票信息推送、日程提醒等。同时,对于开发者来说,Bark也是一种很好的调试工具,可以快速接收到服务器或程序的运行状态信息。

部署

  1. 打开Docker管理器,在“镜像管理”中选择“镜像仓库”,在右上角进行搜索“finab/bark-server”,找到如下图所示的镜像进行下载。

  2. 下载完成以后,在“本地镜像”中找到它,点击“创建容器”。

  3. 勾选“创建后启动容器”,然后直接点击“下一步”。

  4. 将“基础设置”中的重启策略配置成“容器退出时总是重启容器”。

  5. 在NAS中创建一个目录,用于保存bark-server的配置和数据,在“存储空间”内与容器的/data​​目录建立映射,并配置为“读写”类型。

  6. 在“端口设置”中进行端口配置,“本地端口”指的是我们实际访问时要用到的端口,可以根据自己喜好进行配置,只要不与其他服务的端口有冲突就行。

    此处演示时使用的是“自动”端口,如不清楚端口是否被占用则默认自动即可。

  7. 完成以上步骤后,检查一下,确认无误后直接点击“完成”。

  8. 在“容器管理”中找到刚创建好的容器,点击“详情”。

    演示时与“容器端口”绑定的“本地端口”使用的是自动​​,如果你不是使用的自动​​,可以忽略此步骤,直接在浏览器中输入你的ip和你自定义的本地端口进行访问即可。

  9. 点击“端口”,点击下图所示链接即可打开我们部署好的Bark-Server。

    演示时与“容器端口”绑定的“本地端口”使用的是自动​​,如果你不是使用的自动​​,可以忽略此步骤,直接在浏览器中输入你的ip和你自定义的本地端口进行访问即可。

  10. 打开链接后,显示下图所示即表示搭建成功。

使用

  1. 使用iOS设备在“APP Store”中搜索“Bark​”并下载。

  2. 允许“Bark”发送通知。

  3. 点击“注册设备”。

    这里会生成一个设备唯一随机码,当卸载重装Bark的时候,需要重新进行注册设备。

  4. 点击右上角的“+”。

    Bark默认提供了一个免费的服务器API,但是推送的消息会在该服务器日志中记录,如果你推送的消息不是特别重要,你也可以选择直接使用默认API接口。

  5. 将我们刚刚部署好的Bark-Server的地址使用反向代理并且添加HTTPS证书后,填入“服务器地址”栏处,然后点击右上角的“”。

    反向代理可以选择Lucky或者Nginx,根据自己的喜好进行选择。

  6. 复制一个API模板,在浏览器的地址栏中直接请求。

  7. 在浏览器中请求API会收到以下结果表示成功。

  8. 设备上会收到以下结果表示成功。

文章出处:https://blog.uptoz.cn/archives/BrIXHeSN
作者原创:@小小笔记大大用处 https://blog.uptoz.cn

相关文章:

【Docker】搭建安全可控的自定义通知推送服务 - Bark

【Docker】搭建安全可控的自定义通知推送服务 - Bark 前言 本教程基于绿联的NAS设备DX4600 Pro的docker功能进行搭建。 简介 Bark是一款为Apple设备用户设计的开源推送服务应用,它允许开发者、程序员以及一般用户将信息快速推送到他们自己的iPhone、iPad等设备上…...

国内IP代理软件电脑版:深入解析与应用指南

随着互联网技术的快速发展,网络活动日益丰富多样,IP代理软件也因其独特的功能和优势,成为许多电脑用户不可或缺的工具。在国内,由于网络环境的复杂性和特殊性,选择一款稳定、高效的IP代理软件电脑版尤为重要。虎观代理…...

面向对象设计之开闭原则

设计模式专栏: http://t.csdnimg.cn/4Mt4u 目录 1.引言 2.如何理解“对扩展开放、对修改关闭” 3.修改代码就意味着违反开闭原则吗 4.如何做到“对扩展开放、对修改关闭” 5.如何在项目中灵活应用开闭原则 6.总结 1.引言 开闭原则(Open Closed Principle&…...

【项目技术介绍篇】若依项目代码文件结构介绍

作者介绍:本人笔名姑苏老陈,从事JAVA开发工作十多年了,带过大学刚毕业的实习生,也带过技术团队。最近有个朋友的表弟,马上要大学毕业了,想从事JAVA开发工作,但不知道从何处入手。于是&#xff0…...

实现DevOps需要什么?

实现DevOps需要什么? 硬性要求:工具上的准备 上文提到了工具链的打通,那么工具自然就需要做好准备。现将工具类型及对应的不完全列举整理如下: 代码管理(SCM):GitHub、GitLab、BitBucket、SubV…...

Linux小程序: 手写自己的shell

注意&#xff1a; 本文章只是为了理解shell内部的工作原理&#xff0c; 所以并没有完成shell的所有工作&#xff0c; 只是完成了shell里的一小部分工作 #include <stdio.h> #include <unistd.h> #include <string.h> #include <stdlib.h> #include &l…...

javaSwing租户管理系统

简介 欢迎阅读本篇博客&#xff0c;今天我将为大家介绍一个基于Java Swing开发的租户管理系统。该系统具有登录、注册、添加租户、查询租户信息、修改租户信息、删除租户、修改密码、退出登录等功能模块&#xff0c;旨在提供一个便捷的租户管理解决方案。 一、项目介绍 该租…...

cesium实现竖立的圆

cesium中的圆是平行于地面的&#xff0c;想实现竖起来的圆可以使用ellipsoid&#xff0c;设置其中一个轴的radii值为一个很小的值&#xff0c;比如0.00001&#xff0c;则这个轴上的宽度就会非常小&#xff0c;看起来就是一个圆面。 一、画圆ellipse&#xff0c;此处也把画圆的代…...

汽车电子行业知识:智能汽车电子架构

文章目录 3.智能汽车电子架构3.1.汽车电子概念及发展3.2.汽车电子架构类型3.2.1.博世汽车电子架构3.2.2.联合电子未来汽车电子架构3.2.3.安波福汽车电子架构3.2.4.丰田汽车电子架构3.2.5.华为汽车电子架构 3.智能汽车电子架构 3.1.汽车电子概念及发展 汽车电子是车体汽车电子…...

LeetCode146:LRU缓存

leetCode&#xff1a;146. LRU 缓存 题目描述 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓存中&#x…...

【Unity音游制作】你玩过节奏大师吗?(Koreographe插件导入游戏主体)【一】

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…...

高效解决Ubuntu Server 18.04.1 LTS 64bit更新gdb8.1.1到gdb12.1

文章目录 问题解决步骤 问题 因为需要用到gdb一些指令&#xff0c;但是gdb8.x好像存在普遍的问题&#xff0c;实现不了某些指令&#xff0c;比方说set detach-on-fork on&#xff0c;升级版本也没有比较好的教程 经过我不断的试错&#xff0c;我终于升级成功了&#xff01;&a…...

【公示】2023年度青岛市级科技企业孵化器拟认定名单

根据《青岛市科技企业孵化器管理办法》&#xff08;青科规〔2023〕1号&#xff09;&#xff08;以下简称《管理办法》&#xff09;、《关于开展2023年度市级科技企业孵化器认定申报工作的通知》&#xff0c;经申报受理、区市推荐、形式审查、专家评审及现场核查等程序&#xff…...

【软件安装】(十四)Ubuntu22.04安装Psensor硬件监视器

一个愿意伫立在巨人肩膀上的农民...... Ubuntu系统硬件运行查询输入指令太繁琐&#xff0c;终端展示不直观&#xff0c;因此这款具有可视化监控Ubuntu系统下当前电脑的硬件CPU&#xff08;中央处理器&#xff09;、GPU&#xff08;显卡&#xff09;和硬盘等温度等功能&#xff…...

数组合并小程序

题目&#xff1a; 输入有序数组a, b, 不使用排序算法&#xff0c;及额外数组&#xff0c;按大小顺序合并a, b数组&#xff0c;元素不重复&#xff1b; 思路&#xff1a; 1. 如果比插入的数组大&#xff0c;那么往后插入&#xff0c;如果继续有大的&#xff0c;就移动位置插入…...

python练习二

# Demo85def pai_xu(ls_test):#创建一个列表排序函数命名为pai_xu# 对创建的函数进行注释"""这是一个关于列表正序/倒序排列的函数:param ls_test: 需要排序的列表:return:"""ls1 [int(ls_test[i]) for i in range(len(ls_test))]#对input输入的…...

专升本-数字媒体

数字媒体 概念&#xff1a; 媒体&#xff1a;是信息的载体&#xff0c;传播信息的媒介&#xff0c;能为信息的传播提供平台 数字媒体&#xff1a;多重媒体&#xff0c;使用文字&#xff0c;数据&#xff0c;图像&#xff0c;声音等各种媒体 数字媒体技术&#xff1a;利用计…...

蓝桥杯算法题-发现环

问题描述   小明的实验室有N台电脑&#xff0c;编号1~N。原本这N台电脑之间有N-1条数据链接相连&#xff0c;恰好构成一个树形网络。在树形网络上&#xff0c;任意两台电脑之间有唯一的路径相连。    不过在最近一次维护网络时&#xff0c;管理员误操作使得某两台电脑之间增…...

Oracle存数字精度问题number、binary_double、binary_float类型

--表1 score是number(10,5)类型 create table TEST1 (score number(10,5) ); --表2 score是binary_double类型 create table TEST2 (score binary_double ); --表3 score是binary_float类型 create table TEST3 (score binary_float );实验一&#xff1a;分别往三张表插入 小数…...

Java封装最佳实践:打造高内聚、低耦合的优雅代码~

​ 个人主页&#xff1a;秋风起&#xff0c;再归来~ 文章专栏&#xff1a;javaSE的修炼之路 个人格言&#xff1a;悟已往之不谏&#xff0c;知来者犹可追 克心守己&#xff0c;律己则安&#xff01; 1、封装 1.1 封装的概念 面向对象程序三大…...

开源,微信小程序-超级计算器T3000 简介

笔者于四年前自学微信小程序开发&#xff0c;这个超级计算器T3000就是当时的练习作品。超级计算器T3000的功能有很多&#xff0c;其中的核心技术是矩阵计算&#xff0c;使用的工具库是math.js&#xff0c;其次是复杂运算和分式运算。关于math.js的使用&#xff0c;可以参考另一…...

Dimitra:基于区块链、AI 等前沿技术重塑传统农业

根据 2023 年联合国粮食及农业组织&#xff08;FAO&#xff09;、国际农业发展基金&#xff08;IFAD&#xff09;等组织联合发布的《世界粮食安全和营养状况》报告显示&#xff0c;目前全球约有 7.35 亿饥饿人口&#xff0c;远高于 2019 年的 6.13 亿&#xff0c;这意味着农业仍…...

降低项目延期概率的5大注意事项

降低项目延期概率对项目非常重要。因为项目延期往往会导致成本增加&#xff0c;降低客户满意度&#xff0c;影响企业在市场上的竞争力&#xff0c;造成资源浪费。因此&#xff0c;我们需要降低项目延期概率&#xff0c;实现企业长远发展。 而降低项目延期概率&#xff0c;一般来…...

在VUE页面调用Extjs中定义的方法

VUE版本&#xff1a;VUE2 EXTJS版本&#xff1a;4.2.6 1、在extjs页面上写监听事件&#xff08;主要利用了window.addEventListener来监听message事件 window.addEventListener("message", function(event) {// 这里写监听到消息后的逻辑&#xff0c;event.data就是…...

【独立开发前线】Vol.32 能够坚持下去的人并没有你想象的那么多

如果你有一个博客&#xff0c;你就已经超过了80%的独立开发者&#xff1b; 如果你每周更新自己的博客&#xff0c;你就已经超过了90%的独立开发者&#xff1b; 如果你每天更新自己的博客&#xff0c;你就已经超过了99%的独立开发者&#xff1b; 能够坚持下去的人并没有你想象…...

Java 扫描某包下所有类的注解并获得注解值

背景 &#xff1a; 需求 需要获取某个包下的所有的注解 并不是全部项目的 所以 只用针对某个包 进行扫描 获取注解 数据就行 百度了一圈 spring boot 没有自带的 获取注解集合的方法 在看 php 中 hyperf 框架 看到了 这个方法 就是因为 我需求是 php 和java 合体 微服务开发 …...

根据实例逐行分析NIO到底在做什么

Selector&#xff08;选择器&#xff09;是 Channel 的多路复用器&#xff0c;它可以同时监控多个 Channel 的 IO 状况&#xff0c;允许单个线程来操作多个 Channel。Channel在从Buffer中获取数据。 选择器、通道、缓冲池是NIO的核心组件。 一、新建选择器 此时选择器内只包含…...

TypeScript-对象的类型(接口)

1.接口 说明&#xff1a;TypeScript 中的接口&#xff08;Interfaces&#xff09;是一种用来定义对象的结构或者契约的方式。通过接口&#xff0c;你可以定义对象应该具有哪些属性、方法以及它们的类型。 2.一致性 说明&#xff1a;接口的属性名和对象的属性名必须一致性。 …...

Windows服务器安全策略配置几个步骤,轻松加强服务器安全

Windows服务器安全策略怎么做&#xff1f;不要觉得这是一个非常深奥遥不可及的问题&#xff0c;其实也是从各个方面去加固系统的安全性而已&#xff0c;它没有一个定论&#xff0c;今天德迅云安全就跟用户们分享一下windows服务器基本安全策略保障服务器基本安全的一些简单实用…...

Hive详解(2)

​​Hive 表结构 分区表 多字段分区&#xff1a;需要使用多个字段来进行分区&#xff0c;那么此时字段之间会构成多层目录&#xff0c;前一个字段形成的目录会包含后一个字段形成的目录&#xff0c;从而形成多级分类的效果。例如商品的大类-小类-子类&#xff0c; 省市县、年…...

菏泽的给公司做网站的/外贸网站推广服务

启动容器A&#xff0c; A的端口映射是 80:8080外部的25000端口映射到服务内部的8080端口&#xff1b;有时候将容器关闭&#xff0c;重新构建镜像及启动容器时会出现一些报错&#xff0c;比如端口被占用的报错&#xff0c;但通过docker ps -a |grep 容器名, 会发现容器其实已经关…...

外行怎么做网站/网络平台运营是做什么的

Redis字典在redis中被广泛运用&#xff0c;作为redis字典底层实现的哈希表结构是怎样的呢&#xff0c;今天结合源码初步了解下typedef struct dictEntry {void *key;union {void *val;uint64_t u64;int64_t s64;double d;} v;struct dictEntry *next; } dictEntry;redis哈希表节…...

一流本科专业建设点网站/百度关键词价格怎么查询

图的独立集&#xff1a;寻找一个点集&#xff0c;其中任意两点在图中无对应边二分图的最大独立集图的点数-最大匹配数1 #include <iostream>2 #include <cstdio>3 #include <map>4 #include <cstring>5 6 using namespace std;7 8 struct people9 {10 …...

泰国网站的域名/黑科技引流软件是真的吗

以下为免安装版MySQL的配置步骤 版本号&#xff1a;mysql-5.7.23-winx64 第一步&#xff1a;进入官网下载免安装MySQL的压缩包 下载地址&#xff1a;点我跳转下载 点击红色框内不登录即可进行下载 第二步&#xff1a;将下载好的压缩包解压到自己创建的文件夹内 解压后点进去…...

阿里云服务器ecs建站教程/竞价推广托管

我们知道&#xff0c;cookie是有有效期的&#xff0c;cookie的默认有效期是在从cookie生成后一直到浏览器关闭&#xff0c;我们可以设置cookie的有效期来指定它的失效期&#xff0c;用户也可以禁止cookie也可以手动的删除cookie。cookie是一小段信息&#xff0c;以键/值对的信息…...

上海网站域名备案处/搜索词分析

京东商品爬取仅供学习一.使用seleniumfrom selenium import webdriverfrom selenium.webdriver.common.keys import Keys #键盘按键操作from selenium.webdriver.support import expected_conditions as ECimport timedef get_goods(driver):try:goodsdriver.find_elements_by_…...