Skip to content

ENV variables

Name Description
HTML2RSS_SECRET_KEY required in production; development/test gets a temporary default
HTML2RSS_ACCESS_TOKEN token for the main feed-creation flow; paste the same value into the web UI when prompted
HEALTH_CHECK_TOKEN optional bearer token for authenticated GET /api/v1/health; not part of the first-run quickstart; use /api/v1/health/ready for standard readiness checks
BUILD_TAG release metadata used in logs; published Docker images set this to the release version
GIT_SHA deployed commit metadata used in logs; published Docker images set this to the released commit
SENTRY_DSN optional; enables Sentry errors/logs when set
BROWSERLESS_IO_WEBSOCKET_URL optional; Browserless websocket endpoint for harder sites when you add Browserless later
BROWSERLESS_IO_API_TOKEN optional unless you explicitly add Browserless to your stack or point at a custom Browserless endpoint
AUTO_SOURCE_ENABLED true by default in development/test, false otherwise
ASYNC_FEED_REFRESH_ENABLED optional boolean; default false
ASYNC_FEED_REFRESH_STALE_FACTOR optional integer >= 1; default 3
FEEDS_CACHE_MAX_SIZE optional integer >= 1; default 500; maximum number of feeds to cache in memory before eviction
RATE_LIMIT_ENABLED optional boolean; default true (except false in test); enables or disables client IP rate limiting
RATE_LIMIT_MAX_REQUESTS optional integer >= 1; default 60; maximum requests allowed per IP per window
RATE_LIMIT_WINDOW_SECONDS optional integer >= 1; default 60; rate limiter sliding window duration in seconds
RETRY_AFTER_TIMEOUT_SECONDS optional integer >= 1; default 300; Retry-After header backoff duration returned on timeouts
PORT app listen port; compose uses 4000
RACK_ENV Rack environment; quickstart uses development, production examples use production
RACK_TIMEOUT_SERVICE_TIMEOUT optional; total web-request timeout in seconds; default 30
HTML2RSS_TOTAL_TIMEOUT_SECONDS optional; internal gem request timeout in seconds; default 25

When fetching feeds from complex websites, multiple components work together. To prevent premature request termination, ensure your timeouts are configured in a “chain” where the outer layers wait longer than the inner layers.

For an overall 30-second budget:

  1. Botasaurus Scraper (SCRAPE_TIMEOUT_SECONDS): Set to 20s. This is the time allowed for the browser to fetch and render the page.
  2. html2rss Gem (HTML2RSS_TOTAL_TIMEOUT_SECONDS): Set to 25s. This allows the gem enough time to wait for Botasaurus and process the results.
  3. html2rss-web (RACK_TIMEOUT_SERVICE_TIMEOUT): Set to 30s. This is the total time the web server will wait before killing the request.

Older environment-variable examples from previous docs revisions are obsolete. Use only the supported table above and the Environment & Runtime Flags table in docs/README.md.