Skip to content

docs: add self-host cloud guides and blog post#2766

Open
steebchen wants to merge 5 commits into
mainfrom
docs/self-host-cloud-guides
Open

docs: add self-host cloud guides and blog post#2766
steebchen wants to merge 5 commits into
mainfrom
docs/self-host-cloud-guides

Conversation

@steebchen

@steebchen steebchen commented Jun 20, 2026

Copy link
Copy Markdown
Member

Summary

Adds a blog post on deploying LLM Gateway on cloud platforms, restructures the docs Self Host section into a card-based landing page with per-target guides, and adds an Infrastructure-as-Code section to the enterprise page.

Blog (apps/ui)

  • New post: How to Deploy LLM Gateway on Cloud Platforms — covers the components needed (stateless gateway/API/UI/worker + managed Postgres/Redis + provider keys), how they fit together, managed-service recommendations per cloud, and a "Why we recommend Kubernetes" section with the Helm chart. Links to the new docs and the Enterprise Terraform offer.
  • OG image generated with gpt-image-2 (1536×1024), text-free.

Docs Self Host section (apps/docs)

Converts the single self-host.mdx into an expandable folder under the Self Host tab:

  • index.mdx — landing page using a new SelfHostCards component, grouped into Single host (Docker, Docker Compose) and Cloud (Kubernetes/Helm, AWS, GCP, Azure), styled to match the Introduction page cards.
  • docker.mdx, docker-compose.mdx, kubernetes.mdx — single container, multi-container, and Helm chart deep-dive.
  • aws.mdx, gcp.mdx, azure.mdx — what to configure per cloud (managed Postgres, Redis, compute/k8s, networking, secrets) plus the Helm deploy. Each has a Terraform/IaC enterprise callout at the top and bottom linking to /enterprise.

Enterprise page (apps/ui)

  • New InfrastructureAsCodeEnterprise section ("Deploy your whole stack in one command") between pricing and open-source, pitching the Terraform modules with a /enterprise#contact CTA.

Verification

  • pnpm format and the docs build pass; blog passes content-collections schema validation.
  • Pre-existing unrelated gpt-tokenizer module-resolution error in apps/ui (untouched by this PR).

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Comprehensive self-hosting guides for Docker, Docker Compose, Kubernetes, AWS, GCP, and Azure
    • Infrastructure as Code (Terraform) enterprise provisioning capability
  • Documentation

    • New blog post: "How to Deploy LLM Gateway on Cloud Platforms" with production architecture guidance
    • Self-hosting navigation interface for platform selection

Add a blog post on deploying LLM Gateway on cloud platforms, restructure
the docs Self Host section into a card landing page with Docker, Docker
Compose, Kubernetes, AWS, GCP, and Azure guides, and add an
Infrastructure-as-Code section to the enterprise page.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Walkthrough

Removes the monolithic self-host.mdx and replaces it with a structured self-host/ directory containing an index page, Docker, Docker Compose, Kubernetes, AWS, GCP, and Azure guides, a SelfHostCards navigation component with PostHog click tracking, a meta.json, a new InfrastructureAsCodeEnterprise UI section on the enterprise page, and a cloud deployment blog post.

Changes

Self-host documentation restructure

Layer / File(s) Summary
SelfHostCards component and self-host index page
apps/docs/components/self-host-cards.tsx, apps/docs/content/self-host/index.mdx, apps/docs/content/self-host/meta.json
Defines Option/Group types and a groups config array for navigation cards, implements SelfHostCards with a PostHog docs_self_host_card_click event on each card click, renders the component on the index MDX page alongside deployment guidance, and registers the section via meta.json with defaultOpen and the ordered slug list.
Docker and Docker Compose deployment guides
apps/docs/content/self-host/docker.mdx, apps/docs/content/self-host/docker-compose.mdx
Adds a unified Docker image guide (docker run command, named volumes, env vars, management commands, next steps) and a Docker Compose guide (unified vs. split service options, access URLs, env vars, management commands, multi-key load balancing with health-aware routing, and indexed provider configuration values).
Kubernetes/Helm deployment guide
apps/docs/content/self-host/kubernetes.mdx
Adds prerequisites, OCI Helm chart installation from GHCR with version pinning, values.yaml configuration with secrets and connection URLs, guidance to use the cluster secret manager, and horizontal scaling notes.
AWS, GCP, and Azure cloud deployment guides
apps/docs/content/self-host/aws.mdx, apps/docs/content/self-host/gcp.mdx, apps/docs/content/self-host/azure.mdx
Adds three cloud-specific guides each with an architecture component-to-service mapping table, configuration steps for managed PostgreSQL, Redis, Kubernetes, networking, secrets, Helm deployment with example values.yaml, and Enterprise Terraform callouts.
Cloud deployment blog post
apps/ui/src/content/blog/2026-06-20-deploy-llmgateway-on-cloud-platforms.md
Adds a blog post describing stateless service vs. stateful store architecture, request flow through Redis/Postgres/upstream, managed database recommendations per cloud provider, Kubernetes/Helm rationale, links to cloud-specific guides, Docker alternatives, and the Enterprise Terraform option.

InfrastructureAsCodeEnterprise UI section

Layer / File(s) Summary
IaC component definition and enterprise page wiring
apps/ui/src/components/enterprise/iac.tsx, apps/ui/src/app/enterprise/page.tsx
Defines a highlights data array and the InfrastructureAsCodeEnterprise component (headline, CTA linking to /enterprise#contact, terraform apply preview block, highlights list), then imports and inserts the component into the Enterprise page between PricingEnterprise and OpenSourceEnterprise.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~15 minutes

Possibly related PRs

  • theopenco/llmgateway#2638: Modifies apps/ui/src/app/enterprise/page.tsx by inserting SecurityEnterprise into the Enterprise page component list, the same file this PR modifies to add InfrastructureAsCodeEnterprise.
  • theopenco/llmgateway#2641: Also modifies the Enterprise page composition in apps/ui/src/app/enterprise/page.tsx by adding SupportEnterprise and reworking SecurityEnterprise in the same render list area.
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change: adding comprehensive self-hosting cloud deployment guides and a related blog post.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/self-host-cloud-guides

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@steebchen

Copy link
Copy Markdown
Member Author

Images automagically compressed by Calibre's image-actions

Compression reduced images by 77%, saving 1.3 MB.

Filename Before After Improvement Visual comparison
apps/ui/public/blog/deploy-llmgateway-on-cloud-platforms.png 1.6 MB 386.8 KB 77.0% View diff

@steebchen

Copy link
Copy Markdown
Member Author

Images automagically compressed by Calibre's image-actions

Compression reduced images by 12.5%, saving 48.2 KB.

Filename Before After Improvement Visual comparison
apps/ui/public/blog/deploy-llmgateway-on-cloud-platforms.png 386.8 KB 338.6 KB 12.5% View diff

@steebchen

Copy link
Copy Markdown
Member Author

Images automagically compressed by Calibre's image-actions

Compression reduced images by 12%, saving 40.5 KB.

Filename Before After Improvement Visual comparison
apps/ui/public/blog/deploy-llmgateway-on-cloud-platforms.png 338.6 KB 298.1 KB 12.0% View diff

@steebchen

Copy link
Copy Markdown
Member Author

Images automagically compressed by Calibre's image-actions

Compression reduced images by 10.5%, saving 31.4 KB.

Filename Before After Improvement Visual comparison
apps/ui/public/blog/deploy-llmgateway-on-cloud-platforms.png 298.1 KB 266.7 KB 10.5% View diff

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 6dbc1a8d97

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Provide a `values.yaml` to point the chart at your managed database and cache and to set your secrets:

```yaml
config:

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Use Helm values the chart actually reads

For users following this Kubernetes guide (and the linked cloud guides), the sample values.yaml is placed under a top-level config key, but the chart never reads .Values.config; it renders database/auth/provider settings from auth.*, postgresql.enabled/externalPostgresql.*, redis.enabled/externalRedis.*, and llmProviders.* in infra/helm/llmgateway/values.yaml and templates/secret.yaml. As written, these managed DB/cache endpoints, auth secrets, and provider keys have no effect, so the release keeps the built-in stores/default secrets instead of the intended production configuration.

Useful? React with 👍 / 👎.

```yaml
config:
DATABASE_URL: "postgres://user:password@your-postgres-host:5432/llmgateway"
REDIS_URL: "redis://your-redis-host:6380"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Document a Redis endpoint this client can use

This Azure example points Redis at port 6380, which Azure documents as the TLS endpoint, but the app's Redis clients only pass host/port/password to ioredis and the Helm values expose no TLS option. In an Azure Cache for Redis deployment that keeps the default TLS-only access, the API/gateway/worker/auth Redis connections will fail; the guide should either require a supported non-TLS endpoint/port or document/add TLS-capable Redis configuration.

Useful? React with 👍 / 👎.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (2)
apps/ui/src/content/blog/2026-06-20-deploy-llmgateway-on-cloud-platforms.md (2)

39-43: 💤 Low value

Minor: Consider tightening line 43 by removing or replacing "exactly".

The word "exactly" in "which is exactly what a managed database gives you" is slightly filler and is flagged as overused. Either remove it or use a more precise alternative:

  • Remove: "which is what a managed database gives you."
  • Replace: "which is precisely what a managed database gives you." (though "exactly" and "precisely" have similar overuse concerns)
  • Rephrase: "and managed databases deliver all of these."
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/ui/src/content/blog/2026-06-20-deploy-llmgateway-on-cloud-platforms.md`
around lines 39 - 43, In the blog post's "How the pieces fit together" section,
the word "exactly" appears in the phrase "which is exactly what a managed
database gives you" at the end of the last paragraph. This word is identified as
filler and adds unnecessary verbosity. Remove the word "exactly" from this
phrase to tighten the writing and improve clarity, resulting in "which is what a
managed database gives you." Alternatively, consider rephrasing the entire
clause to something more direct like "and managed databases deliver all of
these" if you prefer a more substantial revision.

Source: Linters/SAST tools


76-78: 💤 Low value

Minor: Reduce repetitive opening phrase in the cloud guides list.

The three bullet points (lines 76–78) all start with "- [Deploy on", which creates a monotonous rhythm. Consider varying the first cloud's phrasing or restructuring to improve readability:

Current:

- [**Deploy on AWS**](...) — EKS, RDS, ElastiCache, and Secrets Manager.
- [**Deploy on Google Cloud**](...) — GKE, Cloud SQL, Memorystore, and Secret Manager.
- [**Deploy on Azure**](...) — AKS, Azure Database for PostgreSQL, Azure Cache for Redis, and Key Vault.

Suggested alternative:

- [**AWS**](...) — EKS, RDS, ElastiCache, and Secrets Manager.
- [**Google Cloud**](...) — GKE, Cloud SQL, Memorystore, and Secret Manager.
- [**Azure**](...) — AKS, Azure Database for PostgreSQL, Azure Cache for Redis, and Key Vault.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/ui/src/content/blog/2026-06-20-deploy-llmgateway-on-cloud-platforms.md`
around lines 76 - 78, The three cloud deployment bullet points at lines 76-78
have repetitive opening phrasing with "- [**Deploy on" repeated identically for
AWS, Google Cloud, and Azure. To improve readability and reduce monotony,
simplify the link text by removing the "Deploy on" prefix from each of the three
links, keeping only the cloud provider names (AWS, Google Cloud, Azure) as the
link text while maintaining all the URLs and the service information that
follows the em-dash unchanged.

Source: Linters/SAST tools

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@apps/ui/src/content/blog/2026-06-20-deploy-llmgateway-on-cloud-platforms.md`:
- Around line 39-43: In the blog post's "How the pieces fit together" section,
the word "exactly" appears in the phrase "which is exactly what a managed
database gives you" at the end of the last paragraph. This word is identified as
filler and adds unnecessary verbosity. Remove the word "exactly" from this
phrase to tighten the writing and improve clarity, resulting in "which is what a
managed database gives you." Alternatively, consider rephrasing the entire
clause to something more direct like "and managed databases deliver all of
these" if you prefer a more substantial revision.
- Around line 76-78: The three cloud deployment bullet points at lines 76-78
have repetitive opening phrasing with "- [**Deploy on" repeated identically for
AWS, Google Cloud, and Azure. To improve readability and reduce monotony,
simplify the link text by removing the "Deploy on" prefix from each of the three
links, keeping only the cloud provider names (AWS, Google Cloud, Azure) as the
link text while maintaining all the URLs and the service information that
follows the em-dash unchanged.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 268f2e4d-bf23-470c-a541-2611edf8467b

📥 Commits

Reviewing files that changed from the base of the PR and between 2bf78b7 and dc1ac68.

⛔ Files ignored due to path filters (1)
  • apps/ui/public/blog/deploy-llmgateway-on-cloud-platforms.png is excluded by !**/*.png
📒 Files selected for processing (13)
  • apps/docs/components/self-host-cards.tsx
  • apps/docs/content/self-host.mdx
  • apps/docs/content/self-host/aws.mdx
  • apps/docs/content/self-host/azure.mdx
  • apps/docs/content/self-host/docker-compose.mdx
  • apps/docs/content/self-host/docker.mdx
  • apps/docs/content/self-host/gcp.mdx
  • apps/docs/content/self-host/index.mdx
  • apps/docs/content/self-host/kubernetes.mdx
  • apps/docs/content/self-host/meta.json
  • apps/ui/src/app/enterprise/page.tsx
  • apps/ui/src/components/enterprise/iac.tsx
  • apps/ui/src/content/blog/2026-06-20-deploy-llmgateway-on-cloud-platforms.md
💤 Files with no reviewable changes (1)
  • apps/docs/content/self-host.mdx

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant