GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - html2rss/html2rss-web: 🕸 Turn almost any website into an RSS feed and serve it instantly. Automatic scraping. Start fast with Docker.

BranchesTags
Open more actions menu

Latest commit

 

History

1,206 Commits
1,206 Commits

Folders and files

NameName
Last commit message
Last commit date
.github
.github
 
 
app/web
app/web
 
 
bin
bin
 
 
config
config
 
 
docs
docs
 
 
frontend
frontend
 
 
public
public
 
 
spec
spec
 
 
tmp
tmp
 
 
.dockerignore
.dockerignore
 
 
.env.example
.env.example
 
 
.gitignore
.gitignore
 
 
.mergify.yml
.mergify.yml
 
 
.mutant.yml
.mutant.yml
 
 
.redocly.yaml
.redocly.yaml
 
 
.rspec
.rspec
 
 
.rubocop.yml
.rubocop.yml
 
 
.spectral.yaml
.spectral.yaml
 
 
.yardopts
.yardopts
 
 
AGENTS.md
AGENTS.md
 
 
CHANGELOG.md
CHANGELOG.md
 
 
CONTEXT.md
CONTEXT.md
 
 
Dockerfile
Dockerfile
 
 
Gemfile
Gemfile
 
 
Gemfile.lock
Gemfile.lock
 
 
LICENSE
LICENSE
 
 
Makefile
Makefile
 
 
README.md
README.md
 
 
Rakefile
Rakefile
 
 
app.rb
app.rb
 
 
config.ru
config.ru
 
 
docker-compose.dev.yml
docker-compose.dev.yml
 
 
docker-compose.quickstart.yml
docker-compose.quickstart.yml
 
 
docker-compose.yml
docker-compose.yml
 
 
stylelint.config.mjs
stylelint.config.mjs
 
 

Repository files navigation

html2rss-web

Paste a page URL into the web UI and get an RSS 2.0 or JSON Feed. Auto-source extracts items without hand-written selectors; the companion botasaurus-scrape-api service handles JavaScript-rendered sites. The same instance also serves the Feed Directory catalog.

60-second quickstart (demo)

  1. Download docker-compose.quickstart.yml:

    curl -O https://raw.githubusercontent.com/html2rss/html2rss-web/main/docker-compose.quickstart.yml
  2. Start the stack:

    docker compose -f docker-compose.quickstart.yml up -d
  3. Open http://localhost:4000/ (or http://<LAN_IP>:4000/ on your network).

  4. When prompted for an access token, use CHANGE_ME_ADMIN_TOKEN.

  5. Paste a listing, newsroom, changelog, or releases URL and create a feed.

The quickstart runs in development mode for evaluation. For permanent or public hosting, use the production compose below.

Production deployment

  1. Download compose and env template:

    curl -O https://raw.githubusercontent.com/html2rss/html2rss-web/main/docker-compose.yml
    curl -O https://raw.githubusercontent.com/html2rss/html2rss-web/main/.env.example
    cp .env.example .env
  2. Generate secrets and edit .env:

    openssl rand -hex 32  # HTML2RSS_SECRET_KEY (>= 32 chars)
    openssl rand -hex 32  # HTML2RSS_ACCESS_TOKEN (>= 16 chars)

    Keep AUTO_SOURCE_ENABLED=true for URL-to-RSS. HEALTH_CHECK_TOKEN, SENTRY_DSN, and BOTASAURUS_SENTRY_DSN are optional.

  3. Start:

    docker compose up -d

    Open http://localhost:4000/ (or your LAN IP). Paste HTML2RSS_ACCESS_TOKEN when the UI asks for it.

Network and reverse proxy

Compose exposure: html2rss-web publishes 4000:4000 on all interfaces so LAN devices can reach the UI; protect the instance with HTML2RSS_ACCESS_TOKEN (demo token only for quickstart). botasaurus stays on the Compose network in quickstart, or 127.0.0.1:4010 in production — never all-interfaces. CI enforces this via bin/compose-contract-verify.

Plain HTTP works on localhost and LAN IPs. HSTS and CSP upgrade-insecure-requests are set only when the request is HTTPS (including behind a reverse proxy that sends X-Forwarded-Proto: https).

For public internet exposure, terminate TLS with Caddy, Nginx, or Traefik and forward to port 4000:

feed.example.com {
    reverse_proxy 127.0.0.1:4000
}

Alternatively, Falcon supports direct in-process TLS termination and HTTP/2 negotiation by providing certificate and private key paths:

TLS_CERTIFICATE_PATH=/path/to/fullchain.pem
TLS_KEY_PATH=/path/to/privkey.pem

Custom feeds (escape hatch)

When auto-source is not enough, mount a YAML feeds file:

# In docker-compose.yml:
volumes:
  - type: bind
    source: ./config/feeds.yml
    target: /app/config/feeds.yml
    read_only: true

See Creating Custom Feeds.

Development (Docker)

Needs any Docker-compatible engine (Docker Desktop, OrbStack, Colima, Podman); the first make builds the image. Run setup, lint, and tests inside the dev compose service built from the dev stage of the root Dockerfile:

make setup
make dev
make ready
make reset   # drop dev volumes after Gemfile.lock changes misbehave

Feature branches that depend on an unreleased html2rss API may pin the gem from GitHub in Gemfile. Revert to the released RubyGems version before merging to main.

Resources

  • Documentation: https://html2rss.github.io
  • Contributing: https://html2rss.github.io/get-involved/contributing
  • Docker Hub: https://hub.docker.com/r/html2rss/web
  • Discussions: https://github.com/orgs/html2rss/discussions
  • Sponsor: https://github.com/sponsors/gildesmarais

About

🕸 Turn almost any website into an RSS feed and serve it instantly. Automatic scraping. Start fast with Docker.

html2rss.github.io/web-application/

Topics

builderdockerfeedfeed-configshtml2rsshtml2rss-configsrodarolling-releaserssrss-aggregatorrss-feedrss-feed-scraperrubyscraperserveswebfeedwebfeedswebsite-scraper

Resources

Readme
MIT license
Activity
Custom properties

Stars

198 stars

Watchers

2 watching

Forks

18 forks
Report repository

Releases

Sponsor this project

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.