简介
什么是 html2rss-web ?
html2rss-web是一个开源的Web应用,可以将任何网站转换为RSS/JSON订阅源。它通过自动抓取网页内容,帮助用户将没有RSS输出的网站变成可订阅的格式,方便在RSS阅读器中阅读。
主要特点
- 自动抓取:自动解析网页内容,生成
RSS格式输出 - 配置化管理:通过
YAML配置文件定义抓取规则 - 用户认证:支持多账户
token认证,确保订阅安全 - 代理支持:内置
HTTP/HTTPS代理配置,适应复杂网络环境 - 健康检查:内置健康检查端点,便于监控服务状态
- 开源免费:基于
MIT协议开源,可免费使用和修改
应用场景
- 订阅无 RSS 的网站:将没有提供
RSS输出的网站转为可订阅格式 - 聚合资讯:将多个网站的更新聚合到统一阅读器
- 监控更新:监控特定页面的内容变化
- 阅读优化:在
RSS阅读器中统一阅读网站更新
html2rss-web 是一个轻量级的 RSS 订阅源生成工具,适合需要聚合阅读网页内容的用户。
安装
在群晖上以 Docker 方式安装。
本项目包含两个服务(html2rss-web + browserless),需要使用 docker-compose 部署。
其中:Browserless 的作用,负责处理网页渲染和爬取工作,如果你只需要简单的 HTML 提取可以使用任意 API token
准备
通过 SSH 登录到您的群晖,首先创建配置目录并准备配置文件:
# 新建文件夹
mkdir -p /volume1/docker/html2rss/config
env.txt
在项目根目录下 /volume1/docker/html2rss/ 创建 env.txt 环境变量文件,内容如下:
# 启用自动抓取功能
AUTO_SOURCE_ENABLED=true
# 生成你自己的 secret key(使用 openssl rand -hex 32)
HTML2RSS_SECRET_KEY=139e8de20770dd11ceabc97022520475ba1369a00e64a4da2436ac6fe19cd74a
# 健康检查 token(使用 openssl rand -hex 24)
HEALTH_CHECK_TOKEN=be462e488b453506d93f34afb1f79db50618303f5fac01a4
# Browserless API Token(试用token,生产环境需自己注册)
## 1. 访问 Browserless 官网:https://www.browserless.io/
## 2. 创建账户并获取 API Token
BROWSERLESS_IO_API_TOKEN=trial-browserless-token
# Sentry 配置(可选)
SENTRY_DSN=
SENTRY_ENABLE_LOGS=false
production模式下,若不设置AUTO_SOURCE_ENABLED=true,页面上会显示Feed creation is disabled on this instance,也就是不能使用抓取功能
SENTRY_DSN是 Sentry 错误追踪服务的数据源名称(Data Source Name),用于启用应用的错误监控和日志聚合。
feeds.yml
在 /config 目录下创建 feeds.yml 配置文件,可以配置需要抓取的网站规则,下面的内容只配置了认证
auth:
accounts:
- username: "admin"
token: "你的token"
allowed_urls:
- "*" # Full access
【注意】:
token不能太简单,否则启动时会报错。建议使用openssl rand -hex 32来生成
html2rss-web | Weak tokens found for users: admin
html2rss-web | {"timestamp":"2026-05-03T11:41:56+00:00","level":"INFO","service":"html2rss-web","security_event":"cache_lifecycle","details":{"component":"account_manager","event":"build","accounts_count":1}}
html2rss-web | {"timestamp":"2026-05-03T11:41:56+00:00","level":"ERROR","service":"html2rss-web","security_event":"config_validation_failure","details":{"component":"account_tokens","details":"Weak tokens for users: admin"}}
html2rss-web | [1] ! Unable to load application: SystemExit: exit
当现有信息流或自动来源不足时,可以为你想关注的网站编写 YAML 自定义配置,具体配置参考官方文档:https://html2rss.github.io/creating-custom-feeds
docker-compose.yml
在项目根目录下创建 docker-compose.yml 文件:
# Docker Compose configuration for html2rss-web
# This is the default configuration - customize as needed
services:
html2rss-web:
image: html2rss/web
container_name: html2rss-web
restart: unless-stopped
ports:
- "4001:4001"
env_file:
- env.txt
environment:
RACK_ENV: production
PORT: 4001
BUILD_TAG: ${BUILD_TAG:-local}
GIT_SHA: ${GIT_SHA:-local}
HTML2RSS_SECRET_KEY: ${HTML2RSS_SECRET_KEY:?set HTML2RSS_SECRET_KEY}
HEALTH_CHECK_TOKEN: ${HEALTH_CHECK_TOKEN:?set HEALTH_CHECK_TOKEN}
SENTRY_DSN: ${SENTRY_DSN:-}
SENTRY_ENABLE_LOGS: ${SENTRY_ENABLE_LOGS:-false}
BROWSERLESS_IO_WEBSOCKET_URL: ws://browserless:4002
BROWSERLESS_IO_API_TOKEN: ${BROWSERLESS_IO_API_TOKEN:?set BROWSERLESS_IO_API_TOKEN}
# HTTP_PROXY: http://192.168.0.206:2081
# HTTPS_PROXY: http://192.168.0.206:2081
# NO_PROXY: localhost,127.0.0.1,::1
# Trial runs use the image's bundled config/feeds.yml.
# Uncomment the block below when you want to replace it with your own file.
volumes:
- type: bind
source: ./config/feeds.yml
target: /app/config/feeds.yml
read_only: true
browserless:
image: "ghcr.io/browserless/chromium"
container_name: html2rss-browserless
restart: unless-stopped
# ports:
# - "4002:4002"
environment:
PORT: 4002
CONCURRENT: 10
TOKEN: ${BROWSERLESS_IO_API_TOKEN:?set BROWSERLESS_IO_API_TOKEN}
启动服务
# 进入 html2rss 目录
cd /volume1/docker/html2rss
# 一键启动
docker-compose --env-file env.txt up -d
完整的目录结构如下:
/html2rss/
├── config/
│ └── feeds.yml # 订阅源配置文件
├── env.txt # 环境变量文件
└── docker-compose.yml # 容器编排文件
运行
在浏览器中访问 http://<群晖IP>:4001 即可进入 Web 界面。
搜了一个 HackerNews CN,输入其网址 https://hn.aimaker.dev
第一次使用,还需要输入 /config/feeds.yml 中设置的 token
等待生成预览
对照看了一下,似乎只生成了 问答 部分,看来想要用好 html2rss,还需要深入研究官方文档,完善 feeds.yml 的设置
试了下其他分类,例如 24 小时热榜的地址,
但是从日志看,https://hn.aimaker.dev/category/top 很容易超时导致无结果
将上面获取的地址放入 RSS 阅读器
能获取到标题
注意事项
- 代理配置:
HTTP_PROXY和HTTPS_PROXY环境变量用于代理访问,请根据实际网络环境调整 - Token 安全:生产环境请使用强随机
Token(openssl rand -hex 32生成) - Browserless 限制:试用
API token有并发限制,生产环境建议注册自己的Browserless账户 - 数据持久化:
feeds.yml配置文件需要持久化保存,否则重启后会丢失配置 - 端口占用:
4001端口可能被占用,请根据实际情况调整
参考文档
html2rss/html2rss-web: Generates RSS feeds of any website & serves to the web
地址:https://github.com/html2rss/html2rss-webGetting Started | html2rss
地址:https://html2rss.github.io/web-application/getting-started/browserless/browserless: Deploy headless browsers in Docker. Run on our cloud or bring your own. Free for non-commercial uses.
地址:https://github.com/browserless/browserless













暂无评论内容