Skip to content

Commit 0af9584

Browse files
committed
docs: simplify getting started around url-to-rss
1 parent 5fc67c3 commit 0af9584

15 files changed

Lines changed: 179 additions & 220 deletions

File tree

examples/deployment/.env

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,12 @@ RACK_ENV=production
88
# Generate with: openssl rand -hex 32
99
HTML2RSS_SECRET_KEY=replace-with-64-hex-characters-generated-by-openssl-rand-hex-32
1010

11-
# Authenticated health endpoint token
12-
# Required by the documented Compose stack.
13-
# If you build a custom stack and probe only /api/v1/health/live and /api/v1/health/ready,
14-
# you can omit this value.
15-
HEALTH_CHECK_TOKEN=replace-with-strong-health-token
11+
# Web UI / feed creation token
12+
# Paste this into the web app when it asks for an access token.
13+
HTML2RSS_ACCESS_TOKEN=replace-with-strong-access-token
1614

17-
# Auto source (optional; keep false unless you need automatic feed generation)
18-
AUTO_SOURCE_ENABLED=false
15+
# Automatic feed generation
16+
AUTO_SOURCE_ENABLED=true
1917

2018
# Observability (optional)
2119
#SENTRY_DSN=

examples/deployment/docker-compose.yml

Lines changed: 6 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -2,47 +2,14 @@ services:
22
html2rss-web:
33
image: html2rss/web:1
44
restart: unless-stopped
5+
ports:
6+
- "127.0.0.1:4000:4000"
57
env_file:
68
- path: .env
79
required: false
810
environment:
911
PORT: 4000
10-
BOTASAURUS_SCRAPER_URL: http://botasaurus:4010
11-
12-
botasaurus:
13-
image: html2rss/botasaurus-scrape-api:latest
14-
restart: unless-stopped
15-
16-
caddy:
17-
image: caddy:2-alpine
18-
depends_on:
19-
- html2rss-web
20-
command:
21-
- caddy
22-
- reverse-proxy
23-
- --from
24-
- ${CADDY_HOST}
25-
- --to
26-
- html2rss-web:4000
27-
ports:
28-
- "80:80"
29-
- "443:443"
30-
volumes:
31-
- caddy_data:/data
32-
33-
watchtower:
34-
image: containrrr/watchtower
35-
depends_on:
36-
- html2rss-web
37-
- caddy
38-
- botasaurus
39-
command:
40-
- --cleanup
41-
- --interval
42-
- "7200"
43-
volumes:
44-
- /var/run/docker.sock:/var/run/docker.sock:ro
45-
restart: unless-stopped
46-
47-
volumes:
48-
caddy_data:
12+
RACK_ENV: production
13+
HTML2RSS_SECRET_KEY: ${HTML2RSS_SECRET_KEY}
14+
HTML2RSS_ACCESS_TOKEN: ${HTML2RSS_ACCESS_TOKEN}
15+
AUTO_SOURCE_ENABLED: ${AUTO_SOURCE_ENABLED}

src/components/docs/AutoGenerationOptional.astro

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { Aside } from "@astrojs/starlight/components";
33
---
44

55
<Aside type="note" title="Automatic generation may be disabled">
6-
The direct `Create a feed` workflow is not enabled on every deployment. If you want that path, continue with
6+
Included feeds are the fallback path when the packaged catalog already covers your site. If you want the
7+
primary page-URL flow on your own instance, continue with
78
<a href="/web-application/how-to/use-automatic-feed-generation/">Use automatic feed generation</a>.
89
</Aside>

src/components/docs/DockerComposeSnippet.astro

Lines changed: 10 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
import { Code } from "@astrojs/starlight/components";
3-
import { botasaurusImage, browserlessImage, caddyImage, watchtowerImage, webImage } from "../../data/docker";
3+
import { botasaurusImage, caddyImage, watchtowerImage, webImage } from "../../data/docker";
44
55
interface Props {
66
variant: "minimal" | "productionCaddy" | "secure" | "watchtower" | "resourceGuardrails";
@@ -22,25 +22,14 @@ const snippets: Record<Props["variant"], string> = {
2222
RACK_ENV: production
2323
PORT: 4000
2424
HTML2RSS_SECRET_KEY: \${HTML2RSS_SECRET_KEY:?set HTML2RSS_SECRET_KEY}
25-
HEALTH_CHECK_TOKEN: \${HEALTH_CHECK_TOKEN:?set HEALTH_CHECK_TOKEN}
25+
HTML2RSS_ACCESS_TOKEN: \${HTML2RSS_ACCESS_TOKEN:?set HTML2RSS_ACCESS_TOKEN}
2626
SENTRY_DSN: \${SENTRY_DSN:-}
27-
BROWSERLESS_IO_WEBSOCKET_URL: ws://browserless:4002
28-
BROWSERLESS_IO_API_TOKEN: \${BROWSERLESS_IO_API_TOKEN:?set BROWSERLESS_IO_API_TOKEN}
27+
AUTO_SOURCE_ENABLED: "true"
2928
BOTASAURUS_SCRAPER_URL: http://botasaurus:4010
3029
3130
botasaurus:
3231
image: ${botasaurusImage}
33-
restart: unless-stopped
34-
35-
browserless:
36-
image: "${browserlessImage}"
37-
restart: unless-stopped
38-
ports:
39-
- "127.0.0.1:4002:4002"
40-
environment:
41-
PORT: 4002
42-
CONCURRENT: 10
43-
TOKEN: \${BROWSERLESS_IO_API_TOKEN:?set BROWSERLESS_IO_API_TOKEN}`,
32+
restart: unless-stopped`,
4433
productionCaddy: `services:
4534
caddy:
4635
image: ${caddyImage}
@@ -69,23 +58,15 @@ const snippets: Record<Props["variant"], string> = {
6958
PORT: 4000
7059
HTML2RSS_SECRET_KEY: \${HTML2RSS_SECRET_KEY:?set HTML2RSS_SECRET_KEY}
7160
HEALTH_CHECK_TOKEN: \${HEALTH_CHECK_TOKEN:?set HEALTH_CHECK_TOKEN}
61+
HTML2RSS_ACCESS_TOKEN: \${HTML2RSS_ACCESS_TOKEN:?set HTML2RSS_ACCESS_TOKEN}
62+
AUTO_SOURCE_ENABLED: "true"
7263
SENTRY_DSN: \${SENTRY_DSN:-}
73-
BROWSERLESS_IO_WEBSOCKET_URL: ws://browserless:4002
74-
BROWSERLESS_IO_API_TOKEN: \${BROWSERLESS_IO_API_TOKEN:?set BROWSERLESS_IO_API_TOKEN}
7564
BOTASAURUS_SCRAPER_URL: http://botasaurus:4010
7665
7766
botasaurus:
7867
image: ${botasaurusImage}
7968
restart: unless-stopped
8069
81-
browserless:
82-
image: "${browserlessImage}"
83-
restart: unless-stopped
84-
environment:
85-
PORT: 4002
86-
CONCURRENT: 10
87-
TOKEN: \${BROWSERLESS_IO_API_TOKEN:?set BROWSERLESS_IO_API_TOKEN}
88-
8970
volumes:
9071
caddy_data:`,
9172
secure: `services:
@@ -100,22 +81,14 @@ volumes:
10081
PORT: 4000
10182
HTML2RSS_SECRET_KEY: \${HTML2RSS_SECRET_KEY:?set HTML2RSS_SECRET_KEY}
10283
HEALTH_CHECK_TOKEN: \${HEALTH_CHECK_TOKEN:?set HEALTH_CHECK_TOKEN}
84+
HTML2RSS_ACCESS_TOKEN: \${HTML2RSS_ACCESS_TOKEN:?set HTML2RSS_ACCESS_TOKEN}
85+
AUTO_SOURCE_ENABLED: "true"
10386
SENTRY_DSN: \${SENTRY_DSN:-}
104-
BROWSERLESS_IO_WEBSOCKET_URL: ws://browserless:4002
105-
BROWSERLESS_IO_API_TOKEN: \${BROWSERLESS_IO_API_TOKEN:?set BROWSERLESS_IO_API_TOKEN}
10687
BOTASAURUS_SCRAPER_URL: http://botasaurus:4010
10788
10889
botasaurus:
10990
image: ${botasaurusImage}
110-
restart: unless-stopped
111-
112-
browserless:
113-
image: "${browserlessImage}"
114-
restart: unless-stopped
115-
environment:
116-
PORT: 4002
117-
CONCURRENT: 10
118-
TOKEN: \${BROWSERLESS_IO_API_TOKEN:?set BROWSERLESS_IO_API_TOKEN}`,
91+
restart: unless-stopped`,
11992
watchtower: `services:
12093
watchtower:
12194
image: ${watchtowerImage}
@@ -124,7 +97,7 @@ volumes:
12497
- /var/run/docker.sock:/var/run/docker.sock:ro
12598
# Optional for private registries only:
12699
# - "\${HOME}/.docker/config.json:/config.json:ro"
127-
command: --cleanup --interval 7200 html2rss-web botasaurus browserless caddy`,
100+
command: --cleanup --interval 7200 html2rss-web botasaurus caddy`,
128101
resourceGuardrails: `services:
129102
html2rss-web:
130103
image: ${webImage}

src/content/docs/feed-directory/index.mdx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ import FeedDirectory from "../../../components/FeedDirectory.astro";
1414

1515
---
1616

17+
Need the main onboarding path first? Start with [Getting Started](/web-application/getting-started) and create a feed from your own page URL. The directory below is the packaged fallback/catalog path.
18+
1719
Need a different instance? You can use the built-in default, self-host your own, or find more options on the [community-run wiki](https://github.com/html2rss/html2rss-web/wiki/Instances).
1820

1921
[🚀 Host Your Own Instance (and share it!)](/web-application/how-to/deployment)

src/content/docs/get-involved/self-hosting.mdx

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,20 @@ sidebar:
55
order: 3
66
---
77

8-
This page is the short routing point for self-hosting. The current setup and deployment instructions live under the `html2rss-web` docs so the Docker, token, and Browserless guidance only exists in one place.
8+
This page is the short routing point for self-hosting. The current setup and deployment instructions live under the `html2rss-web` docs so the Docker, `.env`, token, and generated-feed guidance only exists in one place.
99

1010
## Recommended Path
1111

12-
1. **[Run html2rss-web locally](/web-application/getting-started/)** to verify your own instance with an included feed first.
12+
1. **[Run html2rss-web locally](/web-application/getting-started/)** to verify your own instance with a generated feed first.
1313
2. **[Deploy html2rss-web to production](/web-application/how-to/deployment/)** when you are ready to expose or operate it.
14-
3. **[Use automatic feed generation](/web-application/how-to/use-automatic-feed-generation/)** only if you want the token-gated page-URL workflow.
14+
3. **[Use automatic feed generation](/web-application/how-to/use-automatic-feed-generation/)** to keep the token-gated page-URL workflow enabled on your instance.
1515

1616
## What To Expect
1717

1818
- `html2rss-web` is the recommended self-hosted product surface.
19-
- Included feeds are the lowest-maintenance way to prove a deployment.
20-
- Automatic feed generation is disabled by default in production.
19+
- Automatic feed generation is the main self-hosted onboarding flow.
20+
- Included feeds are the packaged fallback path when that catalog already covers the site you want.
21+
- Automatic feed generation is disabled by default in production unless you enable it.
2122
- The generated API contract is published as OpenAPI at `/openapi.yaml`.
2223
- Custom config work belongs in the core `html2rss` docs and JSON Schema.
2324

src/content/docs/getting-started.mdx

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
title: "Getting Started"
3-
description: "Start html2rss-web locally, verify one feed, and decide when to enable automatic generation or move to custom configs."
3+
description: "Start html2rss-web locally, paste your own URL, enter one token, and open the generated feed."
44
sidebar:
55
order: 1
66
---
@@ -16,14 +16,15 @@ If you want the recommended path, go to [Run html2rss-web with Docker](/web-appl
1616
That guide is the canonical setup flow for:
1717

1818
- running `html2rss-web` locally
19-
- confirming the interface is working
20-
- opening a known feed URL
21-
- deciding when to use automatic generation or custom configs
19+
- creating a feed from your own page URL
20+
- entering the token from your local setup
21+
- choosing fallback or custom-config paths only when needed
2222

2323
## Quick Shortcuts
2424

2525
- **[Run html2rss-web with Docker](/web-application/getting-started)**: recommended first step
26-
- **[Use automatic feed generation](/web-application/how-to/use-automatic-feed-generation/)**: enable direct feed creation from a page URL when you want that workflow
26+
- **[Use automatic feed generation](/web-application/how-to/use-automatic-feed-generation/)**: understand the normal direct page-URL workflow
27+
- **[Use the included configs](/web-application/how-to/use-included-configs/)**: fallback when the packaged catalog already covers your site
2728
- **[Create Custom Feeds](/creating-custom-feeds)**: write configs when you need more control
2829
- **[Troubleshooting Guide](/troubleshooting/troubleshooting)**: fix startup or extraction problems
2930

src/content/docs/index.mdx

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
---
22
title: "Turn Any Website Into an RSS Feed"
3-
description: "Run html2rss-web with Docker, verify one feed, then enable automatic generation or move to custom configs when you need more control."
3+
description: "Run html2rss-web with Docker, paste your own page URL, enter one token, and open the generated feed."
44
---
55

6-
Run `html2rss-web` with Docker, verify one feed from your own instance, then decide whether you need automatic generation or custom configs.
6+
Run `html2rss-web` with Docker, paste your own page URL, enter one access token, and open the generated feed from your own instance.
77

88
## Start Here
99

@@ -12,9 +12,9 @@ Run `html2rss-web` with Docker, verify one feed from your own instance, then dec
1212
That guide is the canonical onboarding flow for:
1313

1414
- starting a local instance
15-
- verifying the web interface
16-
- opening a known feed URL
17-
- choosing the next path
15+
- creating a generated feed from your own page URL
16+
- entering the token from your local setup
17+
- choosing the fallback or advanced path only when needed
1818

1919
## What is html2rss?
2020

@@ -30,7 +30,7 @@ Most people should start with the web application:
3030
### I want a working instance first
3131

3232
1. **[Run html2rss-web with Docker](/web-application/getting-started)**: recommended starting path
33-
2. **[Use the included configs](/web-application/how-to/use-included-configs/)**: optional guide for the embedded feed set
33+
2. **[Use the included configs](/web-application/how-to/use-included-configs/)**: fallback guide when the packaged feed set already covers your site
3434

3535
### I need more control
3636

@@ -55,8 +55,9 @@ Most people should start with the web application:
5555
## Practical Notes
5656

5757
- Start with Docker, not a public instance.
58-
- Verify the deployment with one known feed first.
59-
- Enable automatic generation only when you want the direct page-URL workflow and are ready to allow it on your self-hosted instance.
58+
- Start with your own listing, newsroom, changelog, or updates URL.
59+
- Automatic page-to-feed generation is the normal path.
60+
- Use included configs when the packaged catalog already covers your site.
6061
- Move to custom configs when you need a stable, reviewable setup.
6162

6263
**Need help?** Continue to the [troubleshooting guide](/troubleshooting/troubleshooting) or join [GitHub Discussions](https://github.com/orgs/html2rss/discussions).

src/content/docs/troubleshooting/troubleshooting.mdx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,14 +144,16 @@ If you are getting a "command not found" error, try the following:
144144

145145
### Authentication Errors
146146

147-
- **401 Unauthorized when creating feeds:** The create-feed API expects a bearer token. Re-enter a valid access token in the UI or send `Authorization: Bearer ...` to `POST /api/v1/feeds`.
147+
- **401 Unauthorized when creating feeds:** Re-enter the same access token you set as `HTML2RSS_ACCESS_TOKEN` for your instance.
148148
- **403 Forbidden when creating feeds:** Automatic feed generation may be disabled (`AUTO_SOURCE_ENABLED=false`) or the requested URL may not be allowed for the authenticated account.
149149
- **500 Internal Server Error:** Check the application logs for detailed error information.
150150
- **Health endpoint failures:** Use `GET /api/v1/health/live`, `GET /api/v1/health/ready`, or authenticated `GET /api/v1/health` depending on which probe you are testing.
151151

152152
### Feed Problems
153153

154-
- Some sites may require JavaScript rendering; ensure the `browserless` service is running
154+
- Try a more specific listing, newsroom, changelog, or updates URL before changing infrastructure
155+
- If your first-run stack includes Botasaurus, ensure the `botasaurus` service is running
156+
- Add Browserless later only when harder sites prove they need it
155157
- Check the feed configuration in `feeds.yml` for typos or invalid selectors
156158
- Look for parsing errors in the logs:
157159
<Code code={`docker compose logs html2rss-web`} lang="bash" />

0 commit comments

Comments
 (0)