Skip to content

Commit 5b2159a

Browse files
committed
remove traefik option
1 parent 882adcb commit 5b2159a

File tree

2 files changed

+82
-123
lines changed

2 files changed

+82
-123
lines changed

src/content/docs/creating-custom-feeds.mdx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ html2rss supports many configuration options:
115115
**Before sharing your config, test it:**
116116

117117
1. **Test with Ruby gem:**
118+
118119
```bash
119120
html2rss feed your-config.yml
120121
```

src/content/docs/web-application/how-to/deployment.mdx

Lines changed: 81 additions & 123 deletions
Original file line numberDiff line numberDiff line change
@@ -3,71 +3,59 @@ title: "Deployment & Production"
33
description: "Deploy html2rss-web to production with Docker. Learn best practices for hosting public instances with security, monitoring, and reliability."
44
---
55

6-
import { Steps } from '@astrojs/starlight/components';
6+
import { Steps } from "@astrojs/starlight/components";
77

8-
html2rss-web is published on Docker Hub, making it easy to deploy with Docker. The [`docker-compose.yml`](https://github.com/html2rss/html2rss-web/blob/master/docker-compose.yml) from our [Installation Guide](/web-application/getting-started) provides a solid foundation for both development and production use.
8+
html2rss-web ships on Docker Hub, so you can launch it wherever Docker runs. Start with the official [`docker-compose.yml`](https://github.com/html2rss/html2rss-web/blob/master/docker-compose.yml) from the [Installation Guide](/web-application/getting-started) as your baseline.
99

10-
## Quick Start
10+
## Launch Locally
1111

1212
<Steps>
1313

14-
1. **Create a directory** for your instance:
14+
1. **Create a project directory**
15+
1516
```bash
1617
mkdir html2rss-web && cd html2rss-web
1718
```
1819

19-
2. **Download the configuration** files:
20+
2. **Fetch the reference compose file**
21+
2022
```bash
2123
curl -O https://raw.githubusercontent.com/html2rss/html2rss-web/master/docker-compose.yml
22-
curl -O https://raw.githubusercontent.com/html2rss/html2rss-web/master/config/feeds.yml
2324
```
2425

25-
3. **Start the instance**:
26+
3. **Start the stack**
27+
2628
```bash
2729
docker compose up -d
2830
```
2931

30-
4. **Verify it's running** by opening [http://localhost:3000](http://localhost:3000) in your browser.
31-
32-
</Steps>
33-
34-
> 📖 Need Docker? Follow the [Docker installation guide](https://docs.docker.com/get-docker/) and [Docker Compose install](https://docs.docker.com/compose/install/).
32+
4. **Confirm the service**
3533

36-
## Production Best Practices
37-
38-
When hosting a **public instance** that others will use, please follow these essential guidelines:
39-
40-
### Security
34+
```bash
35+
docker compose ps
36+
```
4137

42-
- **Use a reverse proxy** to handle SSL termination and rate limiting
43-
- **Enable HTTPS only** — redirect all HTTP traffic to HTTPS
44-
- **Set strong passwords** for health check and auto-source authentication
45-
- **Restrict access** to admin endpoints and sensitive configuration
38+
Open [http://localhost:3000](http://localhost:3000) to verify the UI.
4639

47-
### Modern Reverse Proxy Options
40+
</Steps>
4841

49-
- **Caddy** — Automatic HTTPS, zero config
50-
- **Traefik** — Auto-discovery, perfect for Docker
51-
- **nginx** — Traditional, requires certbot setup
42+
> 📖 New to Docker? Follow the [Docker engine](https://docs.docker.com/get-docker/) and [Docker Compose](https://docs.docker.com/compose/install/) installation guides first.
5243
53-
### HTTPS
44+
## Prepare for Production
5445

55-
Setting up HTTPS is crucial for any public instance. Follow these steps:
46+
Before exposing html2rss-web, ensure:
5647

57-
1. **Obtain SSL certificates** using [Let's Encrypt](https://letsencrypt.org/) with [Certbot](https://certbot.eff.org/)
58-
2. **Configure your reverse proxy** to handle SSL termination
59-
3. **Redirect all HTTP traffic** to HTTPS automatically
60-
4. **Test your setup** using tools like [SSL Labs](https://www.ssllabs.com/ssltest/)
48+
- Your domain (for example `yourdomain.com`) resolves to the host running Docker
49+
- Inbound TCP ports 80 and 443 reach the host (check firewalls and cloud security groups)
50+
- You are ready to watch the first deployment logs for certificate issuance
6151

62-
For detailed implementation guides, see:
52+
### Why a Reverse Proxy?
6353

64-
- [Nginx SSL configuration](https://docs.nginx.com/nginx/admin-guide/security-controls/terminating-ssl-http/)
65-
- [Apache SSL setup](https://httpd.apache.org/docs/2.4/ssl/ssl_howto.html)
66-
- [Cloudflare SSL/TLS settings](https://developers.cloudflare.com/ssl/)
54+
A reverse proxy accepts public HTTPS traffic, terminates TLS, and forwards requests to html2rss-web running on your private network.
6755

68-
## Quick Docker Setup
56+
### Option A: Caddy (Automatic HTTPS)
6957

70-
### Caddy (Easiest)
58+
Caddy handles certificates and redirects with almost no configuration.
7159

7260
```yaml
7361
services:
@@ -77,88 +65,88 @@ services:
7765
- "80:80"
7866
- "443:443"
7967
volumes:
80-
- ./Caddyfile:/etc/caddy/Caddyfile
8168
- caddy_data:/data
69+
command:
70+
- caddy
71+
- reverse-proxy
72+
- --from
73+
- ${CADDY_HOST}
74+
- --to
75+
- html2rss:3000
8276
html2rss:
83-
image: html2rss/html2rss-web:latest
84-
environment:
85-
- BASE_URL=https://yourdomain.com
77+
image: gilcreator/html2rss-web:latest
78+
env_file: .env
8679

8780
volumes:
8881
caddy_data:
8982
```
9083
91-
`Caddyfile`:
84+
- Copy the sample env file (`examples/deployment/.env.example`) to `.env` beside your compose file.
85+
- Set `CADDY_HOST` and `BASE_URL` in that `.env` (for example `CADDY_HOST=yourdomain.com` and `BASE_URL=https://yourdomain.com`) before starting the stack.
86+
- After `docker compose up -d`, run `docker compose logs caddy --tail 20`; look for `certificate obtained`.
87+
- Re-test after DNS changes with [SSL Labs](https://www.ssllabs.com/ssltest/).
88+
- Want automatic updates? Add the Watchtower service shown below or reuse the ready-made sample compose file at `examples/deployment/caddy/docker-compose.yml`.
9289

93-
```caddy
94-
yourdomain.com {
95-
reverse_proxy html2rss:3000
96-
}
97-
```
90+
## Secure Your Instance
91+
92+
Harden the application before inviting other users:
9893

99-
### Traefik (Auto-discovery)
94+
- Set strong credentials for health checks and any protected feeds
95+
- Configure `BASE_URL` with the final HTTPS domain before the first public run
96+
- Prefer environment files (`.env`) stored outside version control for secrets
97+
- Keep admin-only routes behind basic auth or IP restrictions in your proxy
10098

10199
```yaml
102100
services:
103-
traefik:
104-
image: traefik:v3.0
105-
command:
106-
- --providers.docker=true
107-
- --providers.docker.exposedbydefault=false
108-
- --entrypoints.web.address=:80
109-
- --entrypoints.websecure.address=:443
110-
- --entrypoints.web.http.redirections.entrypoint.to=websecure
111-
- --entrypoints.web.http.redirections.entrypoint.scheme=https
112-
ports:
113-
- "80:80"
114-
- "443:443"
115-
volumes:
116-
- /var/run/docker.sock:/var/run/docker.sock:ro
117101
html2rss:
118-
image: html2rss/html2rss-web:latest
102+
image: gilcreator/html2rss-web:latest
119103
environment:
120-
- BASE_URL=https://yourdomain.com
121-
labels:
122-
- traefik.enable=true
123-
- traefik.http.routers.html2rss.rule=Host(`yourdomain.com`)
124-
- traefik.http.routers.html2rss.entrypoints=websecure
125-
- traefik.http.routers.html2rss.tls.certresolver=letsencrypt
126-
- traefik.http.services.html2rss.loadbalancer.server.port=3000
104+
RACK_ENV: production
105+
LOG_LEVEL: warn
106+
HEALTH_CHECK_USERNAME: your-secure-username
107+
HEALTH_CHECK_PASSWORD: your-very-secure-password
108+
BASE_URL: https://yourdomain.com
127109
```
128110

129-
## Reliability & Monitoring
111+
Store these variables in a `.env` file and reference it with `env_file:` as demonstrated in the Caddy example.
112+
113+
## Operate & Monitor
114+
115+
Keep the instance healthy once it is in production:
130116

131-
- **Enable auto-updates** using [watchtower](https://containrrr.dev/watchtower/) or similar tools
132-
- **Monitor the health check endpoint** (`/health_check.txt`) to detect issues early
133-
- **Set up logging** to track errors and performance
134-
- **Use environment variables** for configuration instead of hardcoded values
117+
- Monitor `https://yourdomain.com/health_check.txt` from your uptime tool
118+
- Review `docker compose logs` regularly for feed errors or certificate renewals
119+
- Enable automatic image updates so security patches roll out quickly
120+
- Right-size CPU and memory to avoid starvation when parsing large feeds
135121

136-
### Example: Adding Watchtower for Auto-updates
122+
### Auto-update with Watchtower
137123

138124
```yaml
139125
services:
140126
watchtower:
141127
image: containrrr/watchtower
128+
depends_on:
129+
- html2rss
130+
- caddy
131+
command:
132+
- --cleanup
133+
- --interval
134+
- "300"
135+
- html2rss
136+
- caddy
142137
volumes:
143138
- /var/run/docker.sock:/var/run/docker.sock
144-
environment:
145-
- WATCHTOWER_CLEANUP=true
146-
- WATCHTOWER_POLL_INTERVAL=300
139+
restart: unless-stopped
147140
```
148141

149-
## Performance Optimization
150-
151-
- **Configure appropriate resource limits** for your Docker containers
152-
- **Use a CDN** for static assets if serving many users
153-
- **Monitor memory usage** — html2rss-web can be memory-intensive with large feeds
154-
- **Set up caching** for frequently accessed feeds
142+
Check `docker compose logs watchtower` occasionally to confirm updates are applied.
155143

156-
### Example: Resource Limits
144+
### Resource Guardrails
157145

158146
```yaml
159147
services:
160148
html2rss:
161-
image: html2rss/html2rss-web:latest
149+
image: gilcreator/html2rss-web:latest
162150
deploy:
163151
resources:
164152
limits:
@@ -169,41 +157,11 @@ services:
169157
cpus: "0.25"
170158
```
171159

172-
## Environment Configuration
173-
174-
For production, update your environment variables:
175-
176-
```yaml
177-
services:
178-
html2rss:
179-
image: html2rss/html2rss-web:latest
180-
environment:
181-
RACK_ENV: production
182-
LOG_LEVEL: warn
183-
HEALTH_CHECK_USERNAME: your-secure-username
184-
HEALTH_CHECK_PASSWORD: your-very-secure-password
185-
BASE_URL: https://your-domain.com
186-
```
187-
188-
> 💡 **Security Tip**: Use a [password manager](https://bitwarden.com/password-generator/) to generate strong, unique passwords for all authentication endpoints.
189-
190-
## Share Your Instance
191-
192-
Once your instance is running smoothly:
193-
194-
- **[Add it to our community wiki](https://github.com/html2rss/html2rss-web/wiki/Instances)** so others can discover it
195-
- **Test thoroughly** with various feed types before sharing
196-
- **Monitor usage** and be prepared to scale if needed
197-
198-
### Before Going Public
199-
200-
1. **Test your setup** with different feed configurations
201-
2. **Verify HTTPS** is working correctly
202-
3. **Check performance** under load
203-
4. **Review security settings** and access controls
160+
Adjust the limits to match your host capacity. Increase memory if you process many large feeds.
204161

205-
## Need Help?
162+
## Share & Support
206163

207-
- **Deployment issues?** Check our [troubleshooting guide](/troubleshooting/troubleshooting)
208-
- **Security questions?** Join our [community discussions](https://github.com/orgs/html2rss/discussions)
209-
- **Want to contribute?** See our [contributing guide](/get-involved/contributing)
164+
- Test different feed sources before inviting external users
165+
- Add your instance to the [community wiki](https://github.com/html2rss/html2rss-web/wiki/Instances) if you want it listed publicly
166+
- Visit the [troubleshooting guide](/troubleshooting/troubleshooting) or join the [community discussions](https://github.com/orgs/html2rss/discussions) when you need help
167+
- Ready to contribute fixes or docs? See the [contributing guide](/get-involved/contributing)

0 commit comments

Comments
 (0)