mirror of
https://github.com/supabase/supabase.git
synced 2026-10-05 01:15:03 +03:00
docs: lead self-hosting overview with what/why/CTA, restructure secondary content (#48415)
## I have read the [CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md) file. YES ## What kind of change does this PR introduce? Docs restructure of the self-hosting overview: short fit intro, Get started / community listings above the fold, parallel h2 sections for how self-hosting differs (including local development), responsibilities, and telemetry, plus a streamlined support listing with better card content. Closes DOCS-1251. ## What is the current behavior? - Linear item: Explore two PR approaches for the self-hosting page - The self-hosting overview page (`/guides/self-hosting`) is the top search hit for "supabase self-hosting," but reads as a wall of text: three full prose/bullet sections (differs / responsibilities / telemetry) come before the getting-started CTA, which is buried as one small card partway down the page. ## What is the new behavior? - Short fit intro; `self-hosting-get-started` and `self-hosting-community` listings sit directly under the intro. - Top-level h2s for how self-hosting differs, responsibilities, telemetry, and support (no "More about self-hosting" wrapper). - Under differs: rewritten single-project + platform-gap copy, plus `### Not the same as local development` (CLI stack is not a production self-host; points to Docker / community options). - Telemetry clarifies CLI local-dev telemetry vs Docker Compose (no phone-home). - Merged support into a single `self-hosting-support` listing; Enterprise subsection unchanged. - Minor a11y: `aria-hidden` on GlassPanel decorative icon background. ## Additional context - Worktree: `~/GitHub/supabase/supabase-worktrees/nikrichers/docs-1251-self-hosting-inform` - Review: removed the "More about self-hosting" grouping after feedback that it undersold differs / responsibilities. - Companion prototype PR 48416 is closed; this branch is the direction under review. - Verification: | Check | Result | | ----------------------------------------------- | ------------------------------------------------------------------ | | `pnpm lint:mdx content/guides/self-hosting.mdx` | Pass — no errors/warnings on this file | | Vercel docs preview | Pass — full-page after screenshot captured from the preview deploy | ### Proof: intro and get-started above the fold; parallel h2s for differs, responsibilities, and telemetry **Verified:** `pnpm lint:mdx content/guides/self-hosting.mdx` (pass) · Vercel docs preview (pass) ### Before & After | [Before (production)](https://supabase.com/docs/guides/self-hosting) | [After (PR preview)](https://docs-git-nikrichers-docs-1251-self-hosting-inform-supabase.vercel.app/docs/guides/self-hosting) | | ------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------- | |  |  | ### Test plan - [ ] Visit the preview link and confirm the page opens with intro above the Get started listings - [ ] Confirm parallel h2s for differs / responsibilities / telemetry / support (no "More about self-hosting") - [ ] Confirm "Not the same as local development" distinguishes the CLI stack from self-hosting - [ ] Confirm Support and community is one card grid - [ ] Check mobile width — layout should still be usable - [ ] Confirm `/guides/self-hosting/docker` link still works <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **Documentation** - Reorganized the self-hosting guide with clearer getting-started resources and community links. - Added dedicated guidance for local development, managed Supabase, telemetry, and self-hosting responsibilities. - Consolidated support resources into one section covering discussions, issues, chat, Reddit, and sharing experiences. - **Accessibility** - Marked decorative icon backgrounds as hidden from assistive technologies. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Nik Richers <nik@validmind.ai> Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
5 files changed
+31
-49
No files matched your search
@@ -10,6 +10,7 @@ import {
|
||||
import { useSendTelemetryEvent } from '~/lib/telemetry'
|
||||
import Link from 'next/link'
|
||||
import { useCallback, useMemo } from 'react'
|
||||
import ReactMarkdown from 'react-markdown'
|
||||
import { Badge } from 'ui'
|
||||
import { GlassPanel } from 'ui-patterns/GlassPanel'
|
||||
import { Heading } from 'ui/src/components/CustomHTMLElements'
|
||||
@@ -66,7 +67,11 @@ function ContentListingsGroup({ group }: { group: ContentListingGroup }) {
|
||||
<section className="space-y-4">
|
||||
<ContentListingGroupHeading group={group} />
|
||||
<div className="not-prose space-y-4">
|
||||
{group.description && <p className="text-foreground-light">{group.description}</p>}
|
||||
{group.description && (
|
||||
<div className="text-foreground-light [&_a]:text-foreground [&_a]:underline [&_p]:m-0">
|
||||
<ReactMarkdown>{group.description}</ReactMarkdown>
|
||||
</div>
|
||||
)}
|
||||
<ul className={listClassName}>
|
||||
{items.map((item) => {
|
||||
const external = isExternalContentListingHref(item.href)
|
||||
|
||||
@@ -7,14 +7,21 @@ hideToc: true
|
||||
|
||||
Self-hosting is a good fit if you need full control over your data, have compliance requirements that prevent you from using managed services, or want to run Supabase in an isolated environment.
|
||||
|
||||
<ContentListings id="self-hosting-get-started" />
|
||||
|
||||
<ContentListings id="self-hosting-community" />
|
||||
|
||||
## How self-hosted Supabase differs
|
||||
|
||||
Self-hosted Supabase is different from:
|
||||
Self-hosted Supabase runs as a single project which means that Studio doesn't support multiple organizations or projects. Most settings are configured through [environment variables](https://github.com/supabase/supabase/blob/master/docker/.env.example).
|
||||
|
||||
- **Supabase CLI** (local development), which is intended for development and testing only.
|
||||
- **Managed Supabase** platform, which is fully hosted and operated by Supabase.
|
||||
Unlike the managed platform, which is fully hosted and operated by Supabase, branching, advanced metrics beyond logs, managed backups and PITR, analytics and vector buckets, ETL, and the platform management API are **unavailable**.
|
||||
|
||||
Self-hosted Supabase mimics a single project. Studio doesn't support multiple organizations or projects. Platform-only [features](/features) such as branching, advanced metrics beyond logs, managed backups and PITR, analytics and vector buckets, ETL, and the platform management API are **unavailable** in self-hosted configuration. Most settings are configured through [environment variables](https://github.com/supabase/supabase/blob/master/docker/.env.example).
|
||||
### Not the same as local development
|
||||
|
||||
[Supabase CLI](/docs/guides/local-development/cli/getting-started) runs a local stack for development and testing. That stack is not a self-hosted deployment: it is not hardened for production and must not be exposed to external traffic.
|
||||
|
||||
To self-host, use [Docker](/docs/guides/self-hosting/docker) or one of the community deployment options.
|
||||
|
||||
## Your responsibilities when self-hosting
|
||||
|
||||
@@ -32,21 +39,13 @@ When you self-host, **you are responsible for**:
|
||||
|
||||
Self-hosted Supabase (run via Docker Compose) **does not phone home or collect any telemetry**.
|
||||
|
||||
The **Supabase CLI** is a [separate tool](/docs/guides/local-development/cli/getting-started) and collects usage telemetry to help improve the developer experience. See [CLI telemetry](/docs/guides/local-development/cli/getting-started#telemetry) for opt-out methods.
|
||||
|
||||
<ContentListings id="self-hosting-get-started" />
|
||||
|
||||
<ContentListings id="self-hosting-community" />
|
||||
The **Supabase CLI**, a separate tool also used for [local development](/docs/guides/local-development/cli/getting-started), collects usage telemetry to help improve the developer experience. See [CLI telemetry](/docs/guides/local-development/cli/getting-started#telemetry) for opt-out methods.
|
||||
|
||||
## Support and community
|
||||
|
||||
Self-hosted Supabase is community-supported.
|
||||
|
||||
<ContentListings id="self-hosting-resolve-issues" />
|
||||
|
||||
<ContentListings id="self-hosting-get-help" />
|
||||
|
||||
<ContentListings id="self-hosting-share-experience" />
|
||||
<ContentListings id="self-hosting-support" />
|
||||
|
||||
### Enterprise self-hosting
|
||||
|
||||
|
||||
@@ -23,10 +23,8 @@ import { realtimeExamples, realtimeGetStarted, realtimeResources } from './realt
|
||||
import { resourcesMigrate, resourcesOverview, resourcesPostgres } from './resources.data'
|
||||
import {
|
||||
selfHostingCommunity,
|
||||
selfHostingGetHelp,
|
||||
selfHostingGetStarted,
|
||||
selfHostingResolveIssues,
|
||||
selfHostingShareExperience,
|
||||
selfHostingSupport,
|
||||
} from './self-hosting.data'
|
||||
import { storageExamples, storageGetStarted, storageResources } from './storage.data'
|
||||
import { telemetryDebugging, telemetryMonitoring } from './telemetry.data'
|
||||
@@ -59,9 +57,7 @@ const ALL_GROUPS: readonly ContentListingGroup[] = [
|
||||
resourcesPostgres,
|
||||
selfHostingGetStarted,
|
||||
selfHostingCommunity,
|
||||
selfHostingResolveIssues,
|
||||
selfHostingGetHelp,
|
||||
selfHostingShareExperience,
|
||||
selfHostingSupport,
|
||||
storageGetStarted,
|
||||
storageExamples,
|
||||
storageResources,
|
||||
|
||||
@@ -25,7 +25,7 @@ export const selfHostingCommunity: ContentListingGroup = {
|
||||
type: 'grid',
|
||||
columns: 2,
|
||||
description:
|
||||
"There are several other options to deploy Supabase. If you're interested in helping these projects, visit our Community page.",
|
||||
"There are several other options to deploy Supabase. If you're interested in helping these projects, visit our [Community page](https://supabase.com/contribute).",
|
||||
items: [
|
||||
{
|
||||
title: 'Kubernetes',
|
||||
@@ -44,9 +44,8 @@ export const selfHostingCommunity: ContentListingGroup = {
|
||||
],
|
||||
}
|
||||
|
||||
export const selfHostingResolveIssues: ContentListingGroup = {
|
||||
id: 'self-hosting-resolve-issues',
|
||||
description: 'For resolving common issues:',
|
||||
export const selfHostingSupport: ContentListingGroup = {
|
||||
id: 'self-hosting-support',
|
||||
type: 'grid',
|
||||
columns: 2,
|
||||
items: [
|
||||
@@ -54,51 +53,33 @@ export const selfHostingResolveIssues: ContentListingGroup = {
|
||||
title: 'GitHub Discussions',
|
||||
href: 'https://github.com/orgs/supabase/discussions?discussions_q=is%3Aopen+label%3Aself-hosted',
|
||||
icon: '/docs/img/icons/github-icon',
|
||||
description: 'Questions, feature requests, and workarounds',
|
||||
description: 'Ask questions, resolve common issues, and make feature requests',
|
||||
},
|
||||
{
|
||||
title: 'GitHub Issues',
|
||||
href: 'https://github.com/supabase/supabase/issues?q=is%3Aissue%20state%3Aopen%20label%3Aself-hosted',
|
||||
icon: '/docs/img/icons/github-icon',
|
||||
description: 'Known issues',
|
||||
description: 'Find out about known issues and workarounds',
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
export const selfHostingGetHelp: ContentListingGroup = {
|
||||
id: 'self-hosting-get-help',
|
||||
description: 'Get help and connect with other users:',
|
||||
type: 'grid',
|
||||
columns: 2,
|
||||
items: [
|
||||
{
|
||||
title: 'Discord',
|
||||
href: 'https://discord.supabase.com',
|
||||
icon: '/docs/img/icons/discord-icon',
|
||||
hasLightIcon: false,
|
||||
description: 'Real-time chat and community support',
|
||||
description: 'Connect with other users and get help',
|
||||
},
|
||||
{
|
||||
title: 'Reddit',
|
||||
href: 'https://www.reddit.com/r/Supabase/',
|
||||
icon: '/docs/img/icons/reddit-icon',
|
||||
hasLightIcon: false,
|
||||
description: 'Official Supabase subreddit',
|
||||
description: 'Join the official Supabase subreddit',
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
export const selfHostingShareExperience: ContentListingGroup = {
|
||||
id: 'self-hosting-share-experience',
|
||||
description: 'Share your self-hosting experience:',
|
||||
type: 'grid',
|
||||
columns: 2,
|
||||
items: [
|
||||
{
|
||||
title: 'GitHub Discussions',
|
||||
title: 'Share your experience',
|
||||
href: 'https://github.com/orgs/supabase/discussions/39820',
|
||||
icon: '/docs/img/icons/github-icon',
|
||||
description: "Self-hosting: What's working (and what's not)?",
|
||||
description: 'Share your self-hosting experience',
|
||||
},
|
||||
],
|
||||
}
|
||||
@@ -33,6 +33,7 @@ const IconBackground = ({
|
||||
'shrink-0',
|
||||
showIconBg ? 'bg-surface-75 border w-8 h-8 flex items-center justify-center rounded-sm' : ''
|
||||
)}
|
||||
aria-hidden="true"
|
||||
>
|
||||
{children}
|
||||
</div>
|
||||
|
||||
Reference in new issue
Block a user