这里将介绍 PushDeerntfybark 三款消息推送服务,这三种消息推送服务都是开源应用,可以很方便的直接试用官方的api,为保证数据安全这三款应用都可以自己搭建服务端。

写在前面(关于镜像源)

近期对多个镜像源开展整治活动,使得大部分镜像源无法使用,如无法正常拉取镜像,尝试以下源

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<EOF
{
"registry-mirrors": [
"https://hub.uuuadc.top",
"https://docker.anyhub.us.kg",
"https://dockerhub.jobcher.com",
"https://dockerhub.icu",
"https://docker.ckyl.me",
"https://docker.awsl9527.cn"
]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

先了解一点

目前可用的DockerHub Proxy站点

1
2
3
4
5
https://registry.devops-engineer.com.cn/
https://docker.1panel.live/
https://docker.anyhub.us.kg/
https://docker.awsl9527.cn/
https://dockerhub.icu/

正文开始

PushDeer除了可以试用官方架设的服务器端,也可以搭建自己的服务端,以下是试用docker部署服务端

PushDeer

GitHub

  • 安装docker-compose
  • 目录结构:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    root@linux:/etc/docker/pushdeer# tree -L 2 /etc/docker/
    /etc/docker/
    ├── daemon.json
    └── pushdeer
    ├── app
    ├── data
    └── docker-compose.yml

    3 directories, 2 files
    root@linux:/etc/docker/pushdeer#
  • 编辑docker-compose.yml
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    version: '2.1'

    services:
    mariadb:
    image: mariadb:10.6
    container_name: pushdeer_mariadb
    healthcheck:
    test: ["CMD", "mysqladmin", "ping", "--silent","--password=$$MYSQL_ROOT_PASSWORD"]
    timeout: 10s
    retries: 3
    volumes:
    - ./data:/var/lib/mysql
    environment:
    - MYSQL_ROOT_PASSWORD=theVeryp@ssw0rd
    - MYSQL_DATABASE=pushdeer
    - MYSQL_USER=pushdeer
    - MYSQL_PASSWORD=123456

    redis:
    image: redis:6.2
    container_name: pushdeer_redis
    healthcheck:
    test: ["CMD", "redis-cli","ping"]
    environment:
    - ALLOW_EMPTY_PASSWORD=yes

    app:
    image: wbsu2003/pushdeer:latest
    #build: './docker/web/'
    container_name: pushdeer_app
    ports:
    - 8820:80
    volumes:
    - ./app:/app
    depends_on:
    mariadb:
    condition: service_healthy
    redis:
    condition: service_healthy
    environment:
    - DB_HOST=mariadb
    - DB_PORT=3306
    - DB_USERNAME=pushdeer
    - DB_DATABASE=pushdeer
    - DB_PASSWORD=123456
    - GO_PUSH_IOS_TOPIC=com.pushdeer.self.ios
    - GO_PUSH_IOS_CLIP_TOPIC=com.pushdeer.self.ios.Clip
    - APP_DEBUG=true

  • 执行
    1
    docker-compose up -d

ntfy

ntfy是什么

ntfy允许您通过任何计算机的脚本、使用简单的HTTP PUT或Post请求将推送通知发送到您的手机或桌面。

支持的移动终端

GitHub
Google Play
App Store

ntfy doc

ntfy 文档

服务端安装

选择合适的方式进行安装(没有适合你的?移步官网查看
ntfy的文档是最详细最全面的,从消息发送、消息订阅、自托管下的安装、配置等说明文档极其详细,在这里我们只以docker作为示例:

1
2
mkdir /etc/ntfy /var/cache/ntfy
docker run -p 3680:80 -v /etc/ntfy:/etc/ntfy -v /var/cache/ntfy:/var/cache/ntfy -v /var/log:/var/log --name ntfy --restart unless-stopped binwiederhier/ntfy serve

你可能会遇到的问题

clock_gettime

在Armbian 20.11中启动该容器可能会出现无法通过宿主机联网的情况

现象

在容器中通过ping 127.0.0.1 报错:docker ping: clock_gettime(MONOTONIC) failed

确认问题

查看镜像的系统时间是否异常

1
docker run --rm alpine:3.13 date

如果打印出来的时间和当前真实时间相差较大,则该容器无法正常使用。
例如:

如果是这样应该就是 libseccomp 的版本问题

解决方案
1
2
3
wget http://ftp.us.debian.org/debian/pool/main/libs/libseccomp/libseccomp2_2.5.1-1~bpo10+1_armhf.deb

dpkg -i libseccomp2_2.5.1-1~bpo10+1_armhf.deb

校验是否解决


可以看到时间已经正常了

如果是其他发行版点击这里寻找自己适合的版本:

资料链接:https://docs.linuxserver.io/FAQ/#resolution_2

bark(推荐ios使用)

bark是什么

一款注重隐私、安全可控的自定义通知推送工具。 免费、简单、安全、开箱即用。

文档

GitHub
doc

私有化部署

1
docker run -dt --name bark -p 8820:8080 -v `pwd`/bark-data:/data finab/bark-server

演示自动复制效果:
2024718-wdmztjbhg8bark1.gif

clash中配置bark效果:
2024719-ibi7otn8kobark4.jpg