mirror of
https://github.com/easychen/pushdeer.git
synced 2025-01-26 22:51:58 +08:00
更新自架版启动说明
This commit is contained in:
parent
f257830b49
commit
a5b8fe9b97
347
README.md
347
README.md
@ -1,53 +1,109 @@
|
||||
# PushDeer
|
||||
PushDeer是一个可以自行架设的无APP推送服务。
|
||||
|
||||
PushDeer开源版,可以自行架设的无APP推送服务(WIP,API、iOS、Android和Mac第一版本完成,轻应用正在施工🚧)
|
||||
当前状态:API、iOS、Android和Mac第一版已完成,轻应用正在开发🚧
|
||||
|
||||
[🐙🐱 GitHub仓库](https://github.com/easychen/pushdeer) [🔮 中国大陆镜像仓库](https://gitee.com/easychen/pushdeer)
|
||||
[🐙🐱 GitHub仓库](https://github.com/easychen/pushdeer) [🔮 中国大陆镜像仓库@Gitee](https://gitee.com/easychen/pushdeer)
|
||||
|
||||
|登入|设备|Key|消息|设置|
|
||||
|-|-|-|-|-|
|
||||
|![](doc/design_and_resource/登入.png)|![](doc/design_and_resource/设备.png)|![](doc/design_and_resource/key.png)|![](doc/design_and_resource/消息.png)|![](doc/design_and_resource/设置.png)
|
||||
|
||||
[📼 无App推送使用演示视频](https://weibo.com/tv/show/1034:4714616840978534?from=old_pc_videoshow) [📼 项目视频说明](https://www.bilibili.com/video/BV1Ar4y1S7em/) [📼 项目架构和模块说明](https://www.bilibili.com/video/BV1ZS4y1T7Bf/)
|
||||
|
||||
|
||||
|
||||
## 一期功能核心贡献者
|
||||
# 子项目和核心贡献者
|
||||
|
||||
|功能|核心贡献人|预期完成时间|最低版本兼容|本周进度|
|
||||
|-|-|-|-|-|
|
||||
|iOS/MacApp+Clip开发|[Hext123](https://github.com/Hext123)|已完成|iOS15(14兼容修复中)|第一版完成,代码在iOS目录下|
|
||||
|iOS/Clip/Mac|[Hext123](https://github.com/Hext123)|已完成|iOS14|第一版完成,代码在iOS目录下|
|
||||
|Android客户端|[WolfHugo](https://github.com/alone-wolf)|已完成|5.1|第一版开发完成,release页面可下载|
|
||||
|快应用|[7YHong](https://github.com/7YHong)|2022年2月27日|-|完成快应用界面展示部分,下周对接API|
|
||||
|API完善和更新|[古俊杰](https://github.com/ilovintit)|配合客户端同步更新|-|添加自动生成swgger文档功能中|
|
||||
|快应用|[7YHong](https://github.com/7YHong)|2022年2月27日|-|对接API中|
|
||||
|API|[Easy](https://ftqq.com) [古俊杰](https://github.com/ilovintit)|已完成|-|-|
|
||||
|
||||
## 试用
|
||||
# 试用
|
||||
|
||||
使用方法:
|
||||
## 使用官方在线版本
|
||||
|
||||
官方在线版不用自行架设服务器端,只需启动客户端即可
|
||||
|
||||
### iOS14+
|
||||
|
||||
![](doc/image/clipcode.png)
|
||||
|
||||
1. 苹果系统(iOS 15+)用摄像头扫描上边的码( Android快应用未上架,可从右侧Release处下载APP用 )
|
||||
1. 通过apple账号登录
|
||||
苹果手机(iOS 14+)用系统摄像头扫描上边的码即可拉起轻应用。亦可在苹果商店搜索「PushDeer」安装。
|
||||
|
||||
> 注意:这里不要安装PushDeer自架版
|
||||
|
||||
### MacOS 11+
|
||||
|
||||
PushDeer有Mac客户端,亦支持推送。可在Mac应用商店中搜索「PushDeer」安装。
|
||||
|
||||
### Android
|
||||
|
||||
快应用尚在开发,可下载并安装Android测试版APP([GitHub](https://github.com/easychen/pushdeer/releases/tag/android1.0alpha)|[Gitee](https://gitee.com/easychen/pushdeer/releases/android1.0alpha))。
|
||||
|
||||
|
||||
### 发送消息
|
||||
|
||||
1. 通过apple账号(或微信账号·仅Android版支持)登录
|
||||
1. 切换到「设备」标签页,点击右上角的加号,注册当前设备
|
||||
1. 切换到「Key」标签页,点击右上角的加号,创建一个Key
|
||||
1. 通过访问后边的URL即可推送内容:https://api2.pushdeer.com/message/push?pushkey=key&text=要发送的内容
|
||||
|
||||
iOS APP和Mac APP可以在苹果商店搜索安装。注意iOS APP、Mac APP和轻应用都被认为是不同的设备,都需要进行注册才能接收推送。
|
||||
> 注意注册设备用到了device token,应用一旦重装,device token会变,所以需要重新注册一次。
|
||||
|
||||
PS:系统设计最低支持版本为iOS14,但目前存在兼容性问题,有iOS14真机和苹果开发者证书的同学可以下载源码并编译(参考[这个文档](ios/PushDeer-iOS/README.md)),将报错信息提交到issue可以加速我们的修复时间。
|
||||
### 发送实例
|
||||
|
||||
## 将 PushDeer 接入 ServerChan
|
||||
发送文字:
|
||||
|
||||
```
|
||||
https://api2.pushdeer.com/message/push?pushkey=key&text=要发送的内容
|
||||
```
|
||||
|
||||
发送图片:
|
||||
|
||||
```
|
||||
https://api2.pushdeer.com/message/push?pushkey=<key>&text=<图片URL>&type=image
|
||||
```
|
||||
|
||||
发送Markdown:
|
||||
|
||||
```
|
||||
https://api2.pushdeer.com/message/push?pushkey=<key>&text=标题&desp=<markdown>&type=markdown
|
||||
```
|
||||
|
||||
在URL中可以用`%0A`换行,当参数中有特殊字符时,需要进行urlencode,因此更建议通过函数或者SDK发送。
|
||||
|
||||
- [Python SDK](https://github.com/gaoliang/pypushdeer) by [Gao Liang](https://github.com/gaoliang)
|
||||
- [Go SDK](https://github.com/Luoxin/go-pushdeer-sdk) by [Luoxin](https://github.com/Luoxin)
|
||||
|
||||
PHP函数:
|
||||
|
||||
```php
|
||||
function pushdeer_send($text, $desp = '', $type='text', $key = '[PUSHKEY]')
|
||||
{
|
||||
$postdata = http_build_query(array( 'text' => $text, 'desp' => $desp, 'type' => $type , 'pushkey' => $key ));
|
||||
$opts = array('http' =>
|
||||
array(
|
||||
'method' => 'POST',
|
||||
'header' => 'Content-type: application/x-www-form-urlencoded',
|
||||
'content' => $postdata));
|
||||
|
||||
$context = stream_context_create($opts);
|
||||
return $result = file_get_contents('https://api2.pushdeer.com/message/push', false, $context);
|
||||
}
|
||||
```
|
||||
|
||||
### 将 PushDeer 接入 ServerChan
|
||||
|
||||
由于 PushDeer 刚开发,很多软件和平台都尚未整合其接口,你可以将 PushDeer 接入Server酱作为通道使用,效果是:
|
||||
|
||||
1. 调用Server酱接口
|
||||
1. 使用`sendkey`调用Server酱接口
|
||||
2. 在 PushDeer 客户端收到通知
|
||||
|
||||
方式如下:
|
||||
接入方式如下:
|
||||
|
||||
1. 登入 sct.ftqq.com ,选择「消息通道」页面,选择「其他通道」中的「自定义」
|
||||
2. 在「自定义 WebHook 配置用 json」中填入以下内容:
|
||||
1. 登入 sct.ftqq.com ,选择「消息通道」页面,选择「推荐通道」中的「PushDeer」
|
||||
1. 将在PushDeer客户端中生成的Key填入即可
|
||||
|
||||
你也可以通过「其他通道」中的「自定义」来修改转发格式和文案。具体操作是,在「自定义 WebHook 配置用 json」中填入以下内容:
|
||||
|
||||
```json
|
||||
{
|
||||
@ -62,25 +118,53 @@ PS:系统设计最低支持版本为iOS14,但目前存在兼容性问题,
|
||||
|
||||
注意将 `{{pushkey}}` 换成你自己的 PushDeer 账号中的 key,保存即可。可点右侧的测试按钮测试效果。
|
||||
|
||||
## FAQ
|
||||
## 使用自架服务器端和自架版客户端
|
||||
|
||||
> 这个程序有什么用?
|
||||
### 自架服务器端
|
||||
|
||||
请参考本页面应用场景一节。
|
||||
除了使用官方架设的服务器端,你也可以架设自己的服务器端。本仓库支持通过docker部署服务器端。
|
||||
|
||||
> 应用闪退怎么办?
|
||||
首先请确保服务器(假设其IP或域名为$AAA)上支持docker和docker-compose。
|
||||
|
||||
iOS14 闪退问题正在定位,可参照上一段文字帮我们加快修复进度。
|
||||
然后运行以下代码:
|
||||
|
||||
> 推送可以支持Mark和图片吗?
|
||||
```
|
||||
git clone https://github.com/easychen/pushdeer
|
||||
cd pushdeer
|
||||
docker-compose -f docker-compose.self-hosted.yml up --build -d
|
||||
```
|
||||
|
||||
支持,请参考本页API说明一节中 message 部分.
|
||||
等待初始化完成后,访问 `$AAA(需替换为服务器端IP或域名):8800`,看到以下信息则表示服务器端已启动完毕。
|
||||
|
||||
> PushDeer 提供推送证书吗?
|
||||
```json
|
||||
{
|
||||
"PushDeer": "On"
|
||||
}
|
||||
```
|
||||
|
||||
出于内容和安全考虑,官方APP不提供推送证书。待功能稳定后,我们会单独发布一个自架版APP/Clip并提供独立的推送证书,以免因为证书被滥用而影响到普通用户的使用。
|
||||
### 使用自架版客户端
|
||||
|
||||
> 轻APP找不到了怎么办?
|
||||
在苹果商店搜索「PushDeer·自架版」安装并启动。
|
||||
|
||||
![](doc/image/2022-02-02-21-14-21.png)
|
||||
|
||||
在启动界面输入 `$AAA(需替换为服务器端IP或域名):8800`,点保存。如果通信顺利,即可顺利完成「通过Apple登录」。如输入错误,可点击「重置API endpoint」重新输入。
|
||||
|
||||
![](doc/image/2022-02-02-21-17-45.png)
|
||||
|
||||
登入成功后,亦可随时在设置页面重置 API endpoint。
|
||||
|
||||
![](doc/image/2022-02-02-21-18-49.png)
|
||||
|
||||
|
||||
### 生产环境的配置强化/优化
|
||||
|
||||
参见[𐂂安装文档](doc/安装文档.md)
|
||||
|
||||
|
||||
# 关于轻应用
|
||||
|
||||
> 轻应用找不到了怎么办?
|
||||
|
||||
在搜索框搜索pushdeer就能找到。
|
||||
|
||||
@ -88,110 +172,12 @@ iOS14 闪退问题正在定位,可参照上一段文字帮我们加快修复
|
||||
|
||||
系统设置里边有一个轻应用管理,在里边可以清理。30天不用会自动清理掉。注意重新安装后设备id会变动,需要再手动注册一遍。
|
||||
|
||||
> 推送返回 code 0 result false ,但收不到推送
|
||||
# 开发说明
|
||||
|
||||
需要先注册当前设备。
|
||||
|
||||
> URL推送的文字如何换行?
|
||||
|
||||
URL中可以使用`%0A`作为换行符,如 `https://api2.pushdeer.com/message/push?pushkey=key&text=line1%0Aline2`
|
||||
|
||||
## 安装文档
|
||||
|
||||
- 𐂂 [点此查看](doc/安装文档.md)
|
||||
视频版设计文档: [📼 项目视频说明](https://www.bilibili.com/video/BV1Ar4y1S7em/) [📼 项目架构和模块说明](https://www.bilibili.com/video/BV1ZS4y1T7Bf/)
|
||||
|
||||
|
||||
## 相关项目
|
||||
|
||||
- [Python SDK](https://github.com/gaoliang/pypushdeerd)
|
||||
- [Go SDK](https://github.com/Luoxin/go-pushdeer-sdk) by [Luoxin](https://github.com/Luoxin)
|
||||
- [API的Go实现](https://github.com/iepngs/pushdeer-backend-go) by [iepngs](https://github.com/iepngs)
|
||||
|
||||
|
||||
## 产品定义
|
||||
|
||||
PushDeer的**核心价值**,包括:「易用」、「可控」和「渐进」。
|
||||
|
||||
### 易用
|
||||
|
||||
易用性表现在两个方面:
|
||||
|
||||
1. 易安装:采用无APP方案,直接**去掉安装步骤**
|
||||
1. 易调用:只需输入URL,**无需阅读文档**,就可以发送消息
|
||||
|
||||
### 可控
|
||||
|
||||
1. `Self-hosted`:让有能力和精力的用户可以自行架设,避免因为在线服务下线导致的接口更换风险。
|
||||
1. 非商用免费:不用PushDeer挣钱,就无需支付费用
|
||||
1. 不依赖微信消息接口:不像Server酱那样受腾讯政策影响
|
||||
|
||||
### 渐进
|
||||
|
||||
1. 通过URL即可发送基本的文本消息;通过更多参数,可以对消息的样式等细节进行调整
|
||||
1. 无APP不能实现的功能不能覆盖的机型,后期可以通过APP来补充
|
||||
|
||||
## 商业模式
|
||||
|
||||
PushDeer是一个商业开源项目,采用「开放源码」、「自用免费」、「在线服务收费」的方式进行运作。
|
||||
|
||||
### 具体实现
|
||||
|
||||
PushDeer是一个以盈利为目的的商业项目,品牌和源码所有权都由「方糖君」公司持有,但和纯商业项目不同的地方在于:
|
||||
|
||||
1. 它开放源代码,所有人都可以在非商业前提下按GPLv2授权使用
|
||||
1. 它接受社区贡献代码,作为回报,它会从商业收益中拿出部分来赞助项目贡献人
|
||||
1. 如果商业收益够大,它会尝试雇佣项目贡献人以兼职或者全职的方式为项目工作
|
||||
|
||||
这里边有一些细节:
|
||||
|
||||
1. 为了避免某些个人或者公司使用源码搭建在线竞品服务收费,我们限制了源码不能商用
|
||||
1. 在刚开始的时候,项目并没有商业收入,而却是开发工作量最大的。所以首先我们会承担产品和界面设计、API设计和开发等工作;并通过众筹的方式筹集了一些资金给其他大模块的贡献人
|
||||
|
||||
开放源码形式保证了其他代码贡献人在非商业场景下对源码的可控:
|
||||
|
||||
1. 如果社区和代码贡献人不满意「方糖君」主导的商业化,可以 Fork 一个版本,继续在非商用的前提下自行运营
|
||||
1. 如果「方糖君」之后不再开放源代码,普通用户依然可以按之前的协议使用修改协议前的源码
|
||||
|
||||
## 用户细分
|
||||
|
||||
PushDeer主要面向以下三类用户
|
||||
|
||||
1. 高阶电脑用户
|
||||
1. 开发者
|
||||
1. 公司或自媒体
|
||||
|
||||
### 高阶电脑用户
|
||||
|
||||
具有一定电脑操作技能的高阶用户,比如:
|
||||
|
||||
1. NAS 用户
|
||||
1. 站长
|
||||
1. 电脑技术爱好者
|
||||
|
||||
他们使用PushDeer的场景包括但不限于:
|
||||
|
||||
1. 推送路由器和 NAS 的状态、公网 IP 等信息
|
||||
1. 推送 Wordpress 最新的评论
|
||||
1. 推送加密货币达到特定价格的通知
|
||||
1. 在多台设备上推送文本
|
||||
1. 自动化工具推送定期汇报
|
||||
|
||||
### 开发者
|
||||
|
||||
使用PushDeer的场景包括但不限于:
|
||||
|
||||
1. 推送报错和调试信息
|
||||
1. 推送服务器异常
|
||||
1. 推送定时任务输出
|
||||
1. 在自己的软件发送消息到手机(引导用户填入PushDeer的key)
|
||||
|
||||
### 公司或自媒体
|
||||
|
||||
使用PushDeer的场景包括但不限于:
|
||||
|
||||
1. 面向自己的用户推送通知、内容和营销信息(类似公众号,但不受微信限制)
|
||||
|
||||
## 项目目录说明
|
||||
## 目录说明
|
||||
|
||||
- api: Laravel实现的API接口,[点此查看请求和返回demo](doc/api/PushDeerOS.md)
|
||||
- docker: API实现的docker封装,一键启动,方便使用
|
||||
@ -199,6 +185,7 @@ PushDeer主要面向以下三类用户
|
||||
- push: 基于 [gorush](https://github.com/appleboy/gorush) 架设的推送微服务,配置文件开启 async 可以提升发送速度
|
||||
- ios: 用于放置 iOS 源文件,`ios/Prototype_version` 目录是我边学边写的原型验证版本(SwiftUI+Moya+Codable),很多地方需要重写,仅供参考
|
||||
- quickapp: 用于放置快应用源代码
|
||||
- android: 用于放置安卓客户端源代码
|
||||
|
||||
## 开发环境搭建
|
||||
|
||||
@ -211,7 +198,6 @@ PushDeer主要面向以下三类用户
|
||||
|
||||
运行 `docker-compose up -d`,启动API。默认访问地址为`http://127.0.0.1:8800`。可修改`docker-compose.yml`调整端口。
|
||||
|
||||
> 亦可运行 `docker-compose -f docker-compose.self-hosted.yml up --build -d` 启动已配置推送功能的版本
|
||||
|
||||
### API 说明
|
||||
|
||||
@ -387,8 +373,101 @@ type 为 image 时,text 中为要发送图片的URL。
|
||||
error:错误信息,无错误时无此字段
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
# 产品设计文档
|
||||
|
||||
## 产品定义
|
||||
|
||||
PushDeer的**核心价值**,包括:「易用」、「可控」和「渐进」。
|
||||
|
||||
### 易用
|
||||
|
||||
易用性表现在两个方面:
|
||||
|
||||
1. 易安装:采用无APP方案,直接**去掉安装步骤**
|
||||
1. 易调用:只需输入URL,**无需阅读文档**,就可以发送消息
|
||||
|
||||
### 可控
|
||||
|
||||
1. `Self-hosted`:让有能力和精力的用户可以自行架设,避免因为在线服务下线导致的接口更换风险。
|
||||
1. 非商用免费:不用PushDeer挣钱,就无需支付费用
|
||||
1. 不依赖微信消息接口:不像Server酱那样受腾讯政策影响
|
||||
|
||||
### 渐进
|
||||
|
||||
1. 通过URL即可发送基本的文本消息;通过更多参数,可以对消息的样式等细节进行调整
|
||||
1. 无APP不能实现的功能不能覆盖的机型,后期可以通过APP来补充
|
||||
|
||||
## 商业模式
|
||||
|
||||
PushDeer是一个商业开源项目,采用「开放源码」、「自用免费」、「在线服务收费」的方式进行运作。
|
||||
|
||||
### 具体实现
|
||||
|
||||
PushDeer是一个以盈利为目的的商业项目,品牌和源码所有权都由「方糖君」公司持有,但和纯商业项目不同的地方在于:
|
||||
|
||||
1. 它开放源代码,所有人都可以在非商业前提下按GPLv2授权使用
|
||||
1. 它接受社区贡献代码,作为回报,它会从商业收益中拿出部分来赞助项目贡献人
|
||||
1. 如果商业收益够大,它会尝试雇佣项目贡献人以兼职或者全职的方式为项目工作
|
||||
|
||||
这里边有一些细节:
|
||||
|
||||
1. 为了避免某些个人或者公司使用源码搭建在线竞品服务收费,我们限制了源码不能商用
|
||||
1. 在刚开始的时候,项目并没有商业收入,而却是开发工作量最大的。所以首先我们会承担产品和界面设计、API设计和开发等工作;并通过众筹的方式筹集了一些资金给其他大模块的贡献人
|
||||
|
||||
开放源码形式保证了其他代码贡献人在非商业场景下对源码的可控:
|
||||
|
||||
1. 如果社区和代码贡献人不满意「方糖君」主导的商业化,可以 Fork 一个版本,继续在非商用的前提下自行运营
|
||||
1. 如果「方糖君」之后不再开放源代码,普通用户依然可以按之前的协议使用修改协议前的源码
|
||||
|
||||
## 用户细分
|
||||
|
||||
PushDeer主要面向以下三类用户
|
||||
|
||||
1. 高阶电脑用户
|
||||
1. 开发者
|
||||
1. 公司或自媒体
|
||||
|
||||
### 高阶电脑用户
|
||||
|
||||
具有一定电脑操作技能的高阶用户,比如:
|
||||
|
||||
1. NAS 用户
|
||||
1. 站长
|
||||
1. 电脑技术爱好者
|
||||
|
||||
他们使用PushDeer的场景包括但不限于:
|
||||
|
||||
1. 推送路由器和 NAS 的状态、公网 IP 等信息
|
||||
1. 推送 Wordpress 最新的评论
|
||||
1. 推送加密货币达到特定价格的通知
|
||||
1. 在多台设备上推送文本
|
||||
1. 自动化工具推送定期汇报
|
||||
|
||||
### 开发者
|
||||
|
||||
使用PushDeer的场景包括但不限于:
|
||||
|
||||
1. 推送报错和调试信息
|
||||
1. 推送服务器异常
|
||||
1. 推送定时任务输出
|
||||
1. 在自己的软件发送消息到手机(引导用户填入PushDeer的key)
|
||||
|
||||
### 公司或自媒体
|
||||
|
||||
使用PushDeer的场景包括但不限于:
|
||||
|
||||
1. 面向自己的用户推送通知、内容和营销信息(类似公众号,但不受微信限制)
|
||||
|
||||
|
||||
## 授权
|
||||
|
||||
本项目禁止商用(包括但不限于搭建后挂广告或售卖会员、打包后上架商店销售等),对非商业用途采用 GPLV2 授权
|
||||
|
||||
|
||||
## 相关项目
|
||||
|
||||
- [API的Go实现](https://github.com/iepngs/pushdeer-backend-go) by [iepngs](https://github.com/iepngs)
|
||||
|
||||
|
||||
|
BIN
doc/image/2022-02-02-21-14-21.png
Normal file
BIN
doc/image/2022-02-02-21-14-21.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 284 KiB |
BIN
doc/image/2022-02-02-21-17-45.png
Normal file
BIN
doc/image/2022-02-02-21-17-45.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 292 KiB |
BIN
doc/image/2022-02-02-21-18-49.png
Normal file
BIN
doc/image/2022-02-02-21-18-49.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 86 KiB |
@ -31,5 +31,6 @@ services:
|
||||
- DB_PASSWORD=theVeryp@ssw0rd
|
||||
- GO_PUSH_IOS_TOPIC=com.pushdeer.self.ios
|
||||
- GO_PUSH_IOS_CLIP_TOPIC=com.pushdeer.self.ios.Clip
|
||||
- APP_DEBUG=false
|
||||
volumes:
|
||||
mariadb_data:
|
Loading…
x
Reference in New Issue
Block a user