一个简单的Feed聚合服务,附加丰富功能。
!Logo
bash$ docker run -d --name=feedpushr ncarlier/feedpushr
feedpushr可通过命令行参数或环境变量进行配置。
执行feedpushr -h可显示所有参数及相关环境变量。所有配置变量在etc/default/feedpushr.env文件中有详细描述。
可通过Web UI或API为Feed定义标签:
bash$ curl -XPOST http://localhost:8080/v2/feeds?url=http://[***]
标签也可通过OPML格式导入/导出。使用OPML时,标签存储在category属性中。OPML category是逗号分隔的斜杠分隔类别字符串,例如<category>/test,foo,/bar/bar</category>会转换为标签列表:test, foo, bar_bar。配置标签后,新文章会继承这些标签并随标签一起推送。
新文章会发送到输出目标。当前内置以下输出提供器:
| 输出类型 | 属性 | 描述 |
|---|---|---|
stdout | format | 新文章发送到进程的标准输出。适用于通过管道传输到其他shell命令(如存储到文件、通过Netcat转发、使用Logstash等ETL工具)。 |
http | urlcontentTypeformat | 新文章通过POST请求发送到HTTP端点。 |
email | hostusernamepasswordformat... | 新文章通过SMTP主机发送邮件。 |
readflow | url(默认:***API)apiKey | 新文章发送到readflow实例。 |
输出可通过插件扩展。
输出根据条件表达式激活。若无条件,则始终激活;否则表达式应用于文章,结果决定是否使用输出。例如,仅对标记为"news"且标题包含"Paris"的文章使用输出,表达式为:"news" in Tags and Title contains "Paris"。表达式语言文档见此处。
部分输出(stdout、http及部分插件)支持自定义格式。未指定时,默认JSON格式如下:
json{ "title": "文章标题", "text": "文章文本描述", "content": "文章HTML内容", "link": "文章URL", "updated": "文章更新日期(字符串格式)", "updatedParsed": "文章更新日期(日期格式)", "published": "文章发布日期(字符串格式)", "publishedParsed": "文章发布日期(日期格式)", "guid": "文章Feed GUID", "feedTitle": "Feed标题", "meta": { "key": "过滤器添加的元数据键值对" }, "tags": ["标签列表"] }
指定格式时需符合Golang模板语法,可访问上述JSON属性(前缀为.并大写,如{{.Title}})。支持模板函数及扩展函数:
tweet <text> <suffix>:创建不超过270字符的消息(文本和后缀,文本可能被截断),例:"{{ tweet .Title .Link }}"truncate <length> <text>:截断文本至指定长度,例:"{{ truncate 200 .Text }}"文章发送前可通过过滤链修改。当前内置以下过滤器:
| 过滤器 | 属性 | 描述 |
|---|---|---|
title | prefix(默认:feedpushr:) | 为文章标题添加指定前缀。 |
fetch | 无 | 尝试从源URL提取文章内容。 |
interest | wordlist(默认:news) | 仅保留匹配指定兴趣词列表(逗号分隔)的文章。 |
minify | 无 | 压缩文章HTML内容。 |
过滤器可通过插件扩展。与输出类似,过滤器根据条件表达式激活,并附加到输出,继承输出的条件表达式。
应用可通过加载插件轻松扩展。插件是编译后的库文件,需在应用启动时加载。当前目录下的插件会自动加载,也可通过--plugin参数加载:
bash$ feedpushr --plugin ./feedpushr-***.so
外部插件(如***插件)可在此目录找到。
可通过http://localhost:8080/ui访问Web UI。
!Screenshot
可使用HTTP基本认证或OpenID Connect限制访问。
创建htpasswd文件:
bash$ # 为用户'admin'创建密码文件 $ htpasswd -B -c .htpasswd admin
默认会尝试加载.htpasswd文件,可通过以下方式指定路径:
bash$ export FP_AUTHN=/etc/feedpushr.htpasswd $ # 或 $ feedpushr --authn /etc/webhookd/users.htpasswd
指定OIDC发行者URL激活:
bash$ export FP_AUTHN=[***] $ # 或 $ feedpushr --authn [***]
可限制特定用户名访问:
bash$ export FP_AUTHORIZED_USERNAME=xxx $ # 或 $ feedpushr --authorized-username xxx
bash$ # 默认配置启动服务 $ feedpushr $ # 自定义配置启动服务 $ export FP_DB="boltdb:///var/opt/feedpushr.db" $ export FP_DELAY=20s $ export FP_LOG_LEVEL=warn $ feedpushr
bash$ # 通过CLI添加Feed $ feedpushr-ctl create feed --url [***] $ # 通过cURL添加Feed $ curl -XPOST http://localhost:8080/v2/feeds?url=http://[***] $ # 从OPML文件导入Feed $ curl -XPOST http://localhost:8080/v2/opml -F"file=@subscriptions.opml"
bash$ # 列出Feed $ feedpushr-ctl list feed $ # 获取单个Feed $ feedpushr-ctl get feed --id=9090dfac0ccede1cfcee***d0cc0d $ # 删除Feed $ feedpushr-ctl delete feed --id=9090dfac0ccede1cfcee***d0cc0d $ # 停止Feed聚合 $ feedpushr-ctl stop feed --id=9090dfac0ccede1cfcee***d0cc0d $ # 启动Feed聚合 $ feedpushr-ctl start feed --id=9090dfac0ccede1cfcee***d0cc0d
bash$ # 获取OpenAPI JSON $ curl http://localhost:8080/swagger.json $ # 获取运行时变量 $ curl http://localhost:8080/v2/vars $ # 简单ETL shell管道示例:使用shell工具(jq和httpie)将转换后的文章发送到HTTP端点 $ feedpushr \ | jq -c "select(.title) | {title:.title, content:.description, origin: .link}" \ | while read next; do echo "$next" | http [***] done
GNU General Public License v3.0
详见LICENSE全文。
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速