|
3 | 3 | See the [Tunables Reference](../reference/tunables.md) for the exact list of algorithms and thresholds. |
4 | 4 |
|
5 | 5 | ## Required vs Optional Variables |
6 | | -**Required**: |
7 | | -* `DATABASE_URL`, `REDIS_URL`, `QDRANT_URL`, `SECRET_KEY`, `NEWSLETTER_API_BASE_URL`. |
| 6 | + |
| 7 | +**Required**: |
| 8 | + |
| 9 | +* `DATABASE_URL`, `REDIS_URL`, `QDRANT_URL`, `SECRET_KEY`, `NEWSLETTER_PUBLIC_URL`. |
| 10 | + |
8 | 11 | **Optional but critical for AI**: |
| 12 | + |
9 | 13 | * `OPENROUTER_API_KEY` (Required for relevance tie-breaking and categorization). |
10 | 14 |
|
11 | 15 | ## Secrets Handling |
| 16 | + |
12 | 17 | * In Docker Compose: Loaded tightly from the `.env` file mapped securely to the container. |
13 | 18 | * In Kubernetes: Expected to be mapped into the Pod `env` spec via Secrets. |
14 | 19 |
|
15 | 20 | ## Internal vs Public URLs |
| 21 | + |
16 | 22 | Due to container networking: |
17 | | -* `NEWSLETTER_API_BASE_URL` (Internal) will reference inner hostnames like `http://nginx`. |
| 23 | + |
| 24 | +* `NEWSLETTER_API_INTERNAL_URL` (Internal) should reference inner hostnames like `http://nginx` when the frontend talks to the backend over a private Docker or Kubernetes network. |
18 | 25 | * `NEWSLETTER_PUBLIC_URL` (Public) should point to your real FQDN (e.g. `https://news.mydomain.com`) used in emails. |
19 | 26 |
|
| 27 | +For local Docker Compose development, the default split is usually: |
| 28 | + |
| 29 | +* `NEWSLETTER_API_INTERNAL_URL=http://nginx` |
| 30 | +* `NEWSLETTER_PUBLIC_URL=http://127.0.0.1:8080` |
| 31 | + |
20 | 32 | ## Email Provider (Anymail) |
| 33 | + |
21 | 34 | Newsletter intake relies on Resend webhooks and Django Anymail forwarding. |
22 | 35 | Configured via: |
| 36 | + |
23 | 37 | * `RESEND_API_KEY` |
24 | 38 | * `RESEND_INBOUND_SECRET` |
25 | 39 | * `DEFAULT_FROM_EMAIL` |
26 | 40 |
|
27 | 41 | ## LLM Provider Routing |
| 42 | + |
28 | 43 | Select between `local`, `ollama` or remote providers using `EMBEDDING_PROVIDER`. Set URLs correctly to point to either the internal container (`http://ollama:11434`) or external APIs (`https://api.openai.com/v1`). |
29 | 44 |
|
30 | 45 | ## OAuth Provider Toggles |
| 46 | + |
31 | 47 | If `LINKEDIN_CLIENT_ID` or `REDDIT_CLIENT_ID` are present, their respective capabilities light up dynamically in the application. |
0 commit comments