diff --git a/src/components/sections/SupportSection.astro b/src/components/sections/SupportSection.astro
new file mode 100644
index 0000000..ced8b3f
--- /dev/null
+++ b/src/components/sections/SupportSection.astro
@@ -0,0 +1,189 @@
+---
+// The page a certification reviewer or a procurement team gets sent to.
+//
+// SUSE Ready for Rancher asks the vendor to (a) provide commercial support on
+// named Rancher and RKE2/K3s versions and (b) publish those versions in its
+// documentation *and on its web site*. This is the web-site half; the
+// repository half is docs/RANCHER.md. The two tables must stay in step — if one
+// gains a row or a validated version, so does the other, in the same change.
+import SectionHeader from './SectionHeader.astro';
+import { VENDOR, VENDOR_ADDRESS_FULL } from '../../data/company';
+
+const RANCHER_DOCS = 'https://github.com/libredb/libredb-studio/blob/main/docs/RANCHER.md';
+const SECURITY_MD = 'https://github.com/libredb/libredb-studio/blob/main/SECURITY.md';
+const ISSUES = 'https://github.com/libredb/libredb-studio/issues';
+const SUSE_CATALOG = 'https://www.suse.com/pcsc/viewVersionPage?versionID=26969';
+
+// "Supported" is what the commitment above covers. "Validated" is what we have
+// actually exercised end to end and published a result for — an em dash means
+// supported on the same terms but not yet in a published test run. Never turn a
+// dash into a version without a run behind it: this table is read as evidence.
+const platforms = [
+ {
+ component: 'SUSE Rancher Prime and Rancher (community)',
+ supported: '2.9 or later',
+ validated: '2.14.3 (community build)',
+ },
+ { component: 'SUSE K3s', supported: '1.26 or later', validated: 'v1.31.14+k3s1, v1.35.5+k3s1' },
+ { component: 'SUSE RKE2', supported: '1.26 or later', validated: '—' },
+ { component: 'Kubernetes', supported: '1.26 or later', validated: 'v1.31.14, v1.35.5' },
+ { component: 'Any CNCF-conformant distribution', supported: '1.26 or later', validated: '—' },
+ { component: 'Architectures', supported: 'linux/amd64, linux/arm64', validated: 'linux/amd64' },
+];
+
+const scope = [
+ {
+ area: 'Deployment',
+ detail:
+ 'Helm chart installation, upgrades and rollback on the versions above — including the Rancher Apps catalog path via a ClusterRepo, and air-gapped installs from your own registry.',
+ },
+ {
+ area: 'Configuration',
+ detail:
+ 'OIDC single sign-on, role mapping, storage backends, seed connections, ingress and TLS, and the hardened chart defaults (non-root, read-only root filesystem, NetworkPolicy, PDB, HPA).',
+ },
+ {
+ area: 'Defects',
+ detail:
+ 'Triage and fixes for reproducible defects, shipped in tagged releases. Serious bugs are disclosed in the release notes rather than fixed quietly.',
+ },
+ {
+ area: 'Security',
+ detail:
+ 'Coordinated disclosure, timely patching of critical vulnerabilities, and advisories published in the repository security tab.',
+ },
+];
+
+const channels = [
+ { need: 'Commercial support enquiries', href: `mailto:${VENDOR.email}`, label: VENDOR.email, external: false },
+ { need: 'Security vulnerabilities', href: SECURITY_MD, label: 'SECURITY.md', external: true },
+ { need: 'Community questions and bug reports', href: ISSUES, label: 'GitHub issues', external: true },
+];
+---
+
+
+
+
+
+
+ The vendor of record
+
+ LibreDB Studio is developed, published and commercially supported by{' '}
+ {VENDOR.legalName} ({VENDOR.tradeName}), a company registered in
+ Türkiye. LibreDB is the product brand; {VENDOR.tradeName} is the legal entity behind the commitment on this page.
+
+ {VENDOR_ADDRESS_FULL}
+
+
+
+
+
+ {VENDOR.tradeName} provides commercial support for LibreDB Studio on every Rancher, K3s, RKE2 and Kubernetes version
+ listed below.
+ Support is available in English and Turkish. LibreDB Studio itself stays MIT-licensed and free — support is a service
+ on top of it, never a paywall in front of it.
+
+
+
Supported platform versions
+
+
+
+
+
+ | Component |
+ Supported |
+ Validated |
+
+
+
+ {
+ platforms.map((p) => (
+
+ | {p.component} |
+ {p.supported} |
+ {p.validated} |
+
+ ))
+ }
+
+
+
+
+
+ Supported is what the commitment above covers.
+ Validated is what we have exercised end to end and published a result for;
+ an em dash means the same support terms apply, but no test run is published yet. The chart uses only core Kubernetes APIs
+ and carries no distribution-specific dependencies, so the version floor comes from the chart's{' '}
+ kubeVersion constraint rather than from distribution features.
+
+
+
+ Rancher deployment & validation record →
+
+
+
What support covers
+
+
+ {
+ scope.map((s) => (
+
+ {s.area}
+ {s.detail}
+
+ ))
+ }
+
+
+
How to reach us
+
+
+
+
+ -- supported is a promise; validated is a receipt. This page keeps them apart.
+
+
+
diff --git a/src/data/deploy-targets.test.ts b/src/data/deploy-targets.test.ts
index bc9a6c6..e8598c2 100644
--- a/src/data/deploy-targets.test.ts
+++ b/src/data/deploy-targets.test.ts
@@ -36,6 +36,16 @@ test('only open-source platforms declare a github repo (stars constraint)', () =
expect(starRepos.length).toBeGreaterThan(0);
});
+test('rancher is listed under kubernetes and points at our Rancher docs', () => {
+ const rancher = deployTargets.find((t) => t.slug === 'rancher');
+ expect(rancher).toBeDefined();
+ expect(rancher?.category).toBe('kubernetes');
+ // Stays 'available' until rancher/partner-charts#1158 merges and the chart
+ // ships in Rancher's own Partners repository.
+ expect(rancher?.status).toBe('available');
+ expect(rancher?.docsUrl).toContain('docs/RANCHER.md');
+});
+
test('official integrations are present', () => {
const official = deployTargets.filter((t) => t.status === 'official').map((t) => t.slug);
for (const slug of ['railway', 'caprover', 'dokploy', 'cosmos', 'kubero']) {
diff --git a/src/data/deploy-targets.ts b/src/data/deploy-targets.ts
index a08ff0c..4fb86f4 100644
--- a/src/data/deploy-targets.ts
+++ b/src/data/deploy-targets.ts
@@ -153,6 +153,21 @@ export const deployTargets: DeployTarget[] = [
logo: '/logos/deploy/kubernetes.svg',
blurb: 'helm install from the published OCI chart',
},
+ // Listed in the SUSE Partner Certification & Solutions Catalog. Install today
+ // is a ClusterRepo pointing at our chart repo; once rancher/partner-charts#1158
+ // lands, the chart also ships in Rancher's own Partners repository — bump the
+ // status to 'official' then, not before.
+ {
+ name: 'Rancher',
+ slug: 'rancher',
+ category: 'kubernetes',
+ status: 'available',
+ url: 'https://www.rancher.com',
+ github: 'rancher/rancher',
+ docsUrl: 'https://github.com/libredb/libredb-studio/blob/main/docs/RANCHER.md',
+ logo: '/logos/deploy/rancher.svg',
+ blurb: 'Apps catalog install via ClusterRepo — SUSE catalog listed',
+ },
{
name: 'Kubero',
slug: 'kubero',
diff --git a/src/data/section-seo.ts b/src/data/section-seo.ts
index 175d04c..6ed15cb 100644
--- a/src/data/section-seo.ts
+++ b/src/data/section-seo.ts
@@ -1,6 +1,7 @@
// src/data/section-seo.ts
// Per-section structured data injected into by the dynamic route.
import { deployTargets } from './deploy-targets';
+import { VENDOR } from './company';
const SITE = 'https://libredb.org';
const REPO = 'https://github.com/libredb/libredb-studio';
@@ -55,6 +56,24 @@ export const sectionSeo: Record = {
softwareVersion: 'beta',
},
],
+ // Partner programmes resolve the support provider from structured data as well
+ // as the prose, so the Service node points at the same @id as the vendor
+ // Organization node in company.ts — one entity, described once.
+ support: [
+ {
+ '@context': 'https://schema.org',
+ '@type': 'Service',
+ name: 'LibreDB Studio commercial support',
+ serviceType: 'Commercial software support',
+ description:
+ 'Commercial support for LibreDB Studio on SUSE Rancher Prime, RKE2, K3s and Kubernetes — Helm chart installation and upgrades, configuration, defect fixes and security patches.',
+ provider: { '@id': VENDOR.schemaId },
+ areaServed: 'Worldwide',
+ availableLanguage: ['en', 'tr'],
+ url: `${SITE}/support/`,
+ about: { '@id': 'https://libredb.org/#application' },
+ },
+ ],
docker_compose: [
{
'@context': 'https://schema.org',
diff --git a/src/data/sections.test.ts b/src/data/sections.test.ts
index 8341c87..8612647 100644
--- a/src/data/sections.test.ts
+++ b/src/data/sections.test.ts
@@ -18,6 +18,17 @@ test('docker_compose table exists with page SEO', () => {
expect(d.pageDescription.length).toBeGreaterThan(0);
});
+test('support section exists at /support and names the platform columns', () => {
+ const s = sectionById['support'];
+ expect(s).toBeDefined();
+ expect(s.slug).toBe('support');
+ expect(s.table).toBe('support');
+ expect(s.schema).toBe('studio');
+ // The certification evidence lives in these three columns; renaming one
+ // silently breaks the parity with the table in docs/RANCHER.md.
+ expect(s.columns.map((c) => c.name)).toEqual(['component', 'supported', 'validated']);
+});
+
test('every section has page SEO fields', () => {
for (const s of sections) {
expect(typeof s.slug).toBe('string');
diff --git a/src/data/sections.ts b/src/data/sections.ts
index b60455d..184afb2 100644
--- a/src/data/sections.ts
+++ b/src/data/sections.ts
@@ -260,6 +260,26 @@ export const sections: SectionMeta[] = [
'How LibreDB Studio handles security: OIDC Single Sign-On with PKCE, JWT in httpOnly cookies, role-based access control, environment-variable seed credentials, TLS/SSH tunnels to databases, data masking, audited open source, and responsible vulnerability disclosure.',
schema: 'studio',
},
+ {
+ id: 'support',
+ table: 'support',
+ query: 'SELECT component, supported, validated FROM supported_platforms;',
+ rows: 6,
+ cols: 3,
+ execMs: 2,
+ columns: [
+ { name: 'component', type: 'TEXT' },
+ { name: 'supported', type: 'TEXT' },
+ { name: 'validated', type: 'TEXT' },
+ ],
+ explain:
+ 'Who stands behind LibreDB Studio commercially — Sekoya, the vendor of record — on which Rancher, RKE2, K3s and Kubernetes versions, what that support covers, and how to reach us. Separates supported (the commitment) from validated (the published test run).',
+ slug: 'support',
+ pageTitle: 'Commercial Support — LibreDB Studio on Rancher, RKE2, K3s & Kubernetes',
+ pageDescription:
+ 'Commercial support for LibreDB Studio from Sekoya Grup Bilisim ve Teknoloji Ltd. Sti., the vendor of record: supported SUSE Rancher Prime, RKE2, K3s and Kubernetes versions, what support covers (Helm install and upgrades, configuration, defect fixes, security patches), and how to reach us.',
+ schema: 'studio',
+ },
{
id: 'deploy',
table: 'deploy',
diff --git a/src/lib/github-stars.ts b/src/lib/github-stars.ts
index 0d8aeac..41f6298 100644
--- a/src/lib/github-stars.ts
+++ b/src/lib/github-stars.ts
@@ -11,6 +11,7 @@ export const FALLBACK_STARS: Record = {
'Dokploy/dokploy': 35000,
'kubero-dev/kubero': 4300,
'kubernetes/kubernetes': 123000,
+ 'rancher/rancher': 25800,
'azukaar/Cosmos-Server': 6000,
};
diff --git a/src/pages/[section].astro b/src/pages/[section].astro
index 2eff7c4..d3f4232 100644
--- a/src/pages/[section].astro
+++ b/src/pages/[section].astro
@@ -13,6 +13,7 @@ import TechStackSection from '../components/sections/TechStackSection.astro';
import GetStartedSection from '../components/sections/GetStartedSection.astro';
import FaqSection from '../components/sections/FaqSection.astro';
import SecuritySection from '../components/sections/SecuritySection.astro';
+import SupportSection from '../components/sections/SupportSection.astro';
import DeploySection from '../components/sections/DeploySection.astro';
import DockerComposeSection from '../components/sections/DockerComposeSection.astro';
import DatabaseSection from '../components/sections/DatabaseSection.astro';
@@ -35,6 +36,7 @@ const COMPONENTS: Record = {
get_started: GetStartedSection,
faq: FaqSection,
security: SecuritySection,
+ support: SupportSection,
deploy: DeploySection,
docker_compose: DockerComposeSection,
database: DatabaseSection,