diff --git a/apps/docs/components/ContentListings/ContentListings.client.tsx b/apps/docs/components/ContentListings/ContentListings.client.tsx index 548bde14d50..2e699cbd2d6 100644 --- a/apps/docs/components/ContentListings/ContentListings.client.tsx +++ b/apps/docs/components/ContentListings/ContentListings.client.tsx @@ -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 }) {
- {group.description &&

{group.description}

} + {group.description && ( +
+ {group.description} +
+ )}
    {items.map((item) => { const external = isExternalContentListingHref(item.href) diff --git a/apps/docs/content/guides/self-hosting.mdx b/apps/docs/content/guides/self-hosting.mdx index 9345b7b846f..2c97bc044a3 100644 --- a/apps/docs/content/guides/self-hosting.mdx +++ b/apps/docs/content/guides/self-hosting.mdx @@ -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. + + + + ## 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. - - - - +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. - - - - - + ### Enterprise self-hosting diff --git a/apps/docs/data/content-listings/index.ts b/apps/docs/data/content-listings/index.ts index ef18cdc48ae..cd9935a9e6b 100644 --- a/apps/docs/data/content-listings/index.ts +++ b/apps/docs/data/content-listings/index.ts @@ -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, diff --git a/apps/docs/data/content-listings/self-hosting.data.ts b/apps/docs/data/content-listings/self-hosting.data.ts index c83ef00c456..0150b3e6519 100644 --- a/apps/docs/data/content-listings/self-hosting.data.ts +++ b/apps/docs/data/content-listings/self-hosting.data.ts @@ -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', }, ], } diff --git a/packages/ui-patterns/src/GlassPanel/index.tsx b/packages/ui-patterns/src/GlassPanel/index.tsx index 430a8d48bb4..75251a6bdcd 100644 --- a/packages/ui-patterns/src/GlassPanel/index.tsx +++ b/packages/ui-patterns/src/GlassPanel/index.tsx @@ -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}