Skip to content

html2rss/html2rss-web

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

976 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

html2rss logo

html2rss-web

html2rss-web serves RSS/JSON feeds from website sources using a Ruby (Roda) backend and a Preact frontend.

Use This Repo For

  • Running a self-hosted html2rss-web instance with Docker Compose.
  • Creating signed, per-account feed URLs through POST /api/v1/feeds.
  • Local development inside the repository Dev Container.

Quick Links

Architecture Snapshot

  • Backend: Ruby + Roda (app.rb, app/web/**)
  • Frontend: Preact + Vite (built assets served from frontend/dist)
  • Feed extraction: html2rss gem
  • Distribution baseline: docker-compose.yml

For detailed architecture and contributor rules, see docs/README.md.

Trial Run (Docker Compose)

Prerequisite: Docker Engine + Docker Compose.

Run from the repository root:

BUILD_TAG="$(date +%F)" \
GIT_SHA="trial" \
HTML2RSS_SECRET_KEY="$(openssl rand -hex 32)" \
HEALTH_CHECK_TOKEN="$(openssl rand -hex 24)" \
BROWSERLESS_IO_API_TOKEN="trial-browserless-token" \
docker compose up -d

Then open:

  • http://localhost:4000/ (UI)
  • http://localhost:4000/api/v1 (API metadata)
  • http://localhost:4000/openapi.yaml (OpenAPI document)

Stop with:

docker compose down

Deploy With Docker Compose

The checked-in docker-compose.yml requires these environment variables for html2rss-web:

  • BUILD_TAG
  • GIT_SHA
  • HTML2RSS_SECRET_KEY
  • HEALTH_CHECK_TOKEN
  • BROWSERLESS_IO_API_TOKEN

Optional runtime variables:

  • SENTRY_DSN
  • SENTRY_ENABLE_LOGS (defaults to false)

Example:

export HTML2RSS_SECRET_KEY="$(openssl rand -hex 32)"
export HEALTH_CHECK_TOKEN="replace-with-a-strong-token"
export BROWSERLESS_IO_API_TOKEN="replace-with-your-browserless-token"
export BUILD_TAG="local"
export GIT_SHA="$(git rev-parse --short HEAD 2>/dev/null || echo dev)"
export AUTO_SOURCE_ENABLED=true

docker compose up -d

Runtime Behavior That Affects Operations

  • In production, missing HTML2RSS_SECRET_KEY stops startup.
  • BUILD_TAG and GIT_SHA are expected in production; missing values produce a startup warning.
  • POST /api/v1/feeds requires a bearer token and only works when AUTO_SOURCE_ENABLED=true.
  • AUTO_SOURCE_ENABLED defaults to true in development/test and false otherwise.
  • Strategy support comes from Html2rss::RequestService (faraday and browserless availability is runtime-dependent).

Stable Integration Entry Points

  • OpenAPI: /openapi.yaml (or public/openapi.yaml in-repo)
  • API metadata: /api/v1
  • Feed creation endpoint: POST /api/v1/feeds
  • Health endpoints: /api/v1/health, /api/v1/health/ready, /api/v1/health/live

For feed config authoring/validation, use the html2rss schema:

Development (Dev Container Only)

All local development and test execution should run inside the repository Dev Container.

make setup
make dev
make ready

See docs/README.md for contributor workflows, verification gates, and architectural constraints.

Contributing

About

🕸 Generates RSS feeds of any website & serves to the web! Automatic scraping. Ready to use configs. Write your own. Rolling Docker releases for speedy updates.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Contributors