Skip to content

Make self-hosted Pulumi Cloud a first-class, self-serve experience#19757

Draft
joeduffy wants to merge 1 commit into
masterfrom
self-hosted-first-class
Draft

Make self-hosted Pulumi Cloud a first-class, self-serve experience#19757
joeduffy wants to merge 1 commit into
masterfrom
self-hosted-first-class

Conversation

@joeduffy

Copy link
Copy Markdown
Member

Why

Self-hosted Pulumi Cloud has long read as a buried, sales-gated enterprise exception rather than a first-class way to run the product — a perception problem we control. With many HashiCorp migrations coming from on-prem Terraform Enterprise, self-hosting needs to look and feel first-class. This makes it discoverable, positions it as an equal deployment choice, and lets a visitor try it themselves.

What changed

A first-class install front door — new /docs/administration/self-hosting/install/ with a platform picker (Docker / Kubernetes / AWS / Azure / GCP) mirroring the CLI install page, routing to a real, installer-grounded Docker Compose quickstart (run-ee.sh, all-in-one compose, console :3000 / API :8080). Memorable aliases: /self-hosted/ and /self-hosted/install/.

Self-service-forward positioning — the product page hero leads with a "Deploy it yourself" primary CTA; the proof-of-concept form is demoted to "Want a guided rollout?". Dropped the "or self-host if required" hedging on the IaC page (added a first-class self-hosting card), and reframed the pricing FAQ and self-hosted page copy around self-service.

Discoverability — self-hosted added to the header nav (Product + For enterprises), a "Run Pulumi Cloud anywhere" section on the product overview, a pointer from the CLI install landing, a docs nav-weight bump, and an llms.txt entry.

Terraform Enterprise wedge — the Terraform comparison gains a self-hosting row, a reframed commercial-option row, a "Self-hosting and data control" section, and an on-prem FAQ; plus a new from-terraform-enterprise.md migration page (honest, value-based, reusing existing migration paths).

Product dependency (please note)

The self-serve copy assumes an evaluation license a user can obtain without a sales call. That mechanism doesn't exist yet — run-ee.sh requires a PULUMI_LICENSE_KEY sourced through the eval form today — so "get an evaluation license" links point at the closest current path. The content is written to be ready for the packaging change; when a self-serve trial license ships, those links retarget with no rework. (This mirrors GitLab's current motion: a self-serve self-managed trial, not a free-forever edition.)

Intentionally out of scope

Per discussion: sized reference architectures (GitLab's big credibility tool — a worthwhile future follow-up with real sizing data), a dedicated self-hosted hero diagram, and the self-serve license mechanism itself.

Verification

Full Hugo build passes (make ensure + one-shot render): exit 0, zero errors, 3,554 aliases. All new pages render, aliases resolve, the platform picker renders (pulumi-chooser type="cloud" options="docker,kubernetes,aws,azure,gcp"), the nav entry and self-service CTA buttons render. Install commands verified against pulumi/pulumi-self-hosted-installers.

🤖 Generated with Claude Code

Self-hosted Pulumi Cloud has long read as a buried, sales-gated enterprise
exception rather than a first-class way to run the product. That is largely a
perception problem we control: this reframes self-hosting across the website and
docs so a visitor -- especially a Terraform Enterprise team evaluating a move --
can discover it, see it as an equal deployment choice, and try it themselves.

The centerpiece is a new install front door under self-hosting that mirrors the
CLI install page: a platform picker routing to a real Docker Compose quickstart
you can run in about ten minutes. The picker reuses the existing "cloud" chooser
type rather than introducing a new Stencil component, and the quickstart steps
are taken from the actual self-hosted installer (run-ee.sh, the all-in-one
compose file, the console and API ports) rather than invented. Positioning copy
on the product, pricing, and comparison pages drops the "if required" hedging
and leads with "deploy it yourself," demoting the guided proof-of-concept to a
fallback. Discoverability improves through the header nav, a product-overview
section, the CLI install landing, and the docs nav weighting.

The competitive wedge is explicit: the Terraform comparison gains a self-hosting
row and a data-control section, and a new page speaks directly to Terraform
Enterprise teams, reusing the existing migration paths rather than duplicating
them.

One deliberate dependency: the self-serve copy assumes an evaluation license a
user can obtain without a sales call. That mechanism does not exist yet -- today
run-ee.sh requires a license key sourced through the eval form -- so the "get an
evaluation license" links point at the closest current path. The content is
written to be ready for the packaging change; when a self-serve trial license
ships, those links retarget with no rework.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@pulumi-bot

Copy link
Copy Markdown
Collaborator

@pulumi-bot

Copy link
Copy Markdown
Collaborator

Lighthouse Performance Report

Commit: e8405d5 | Metric definitions

Page Device Score FCP LCP TBT CLS SI
Homepage Mobile 🔴 30 5.7s 12.0s 1791ms 0.001 9.1s
Homepage Desktop 🟡 71 0.7s 2.2s 276ms 0.036 2.5s
Install Pulumi Mobile 🟡 53 5.2s 12.7s 272ms 0.029 7.2s
Install Pulumi Desktop 🟡 78 1.1s 2.6s 22ms 0.001 2.7s
AWS Get Started Mobile 🟡 55 6.8s 14.0s 230ms 0.000 6.8s
AWS Get Started Desktop 🟡 84 1.1s 2.5s 24ms 0.031 1.1s

@CamSoper

Copy link
Copy Markdown
Contributor

@joeduffy Is this supposed to be in draft mode? The AGENTS file specifies that's the preference, but I don't know if your agent is aware that it needs to mark the PR Ready for review to kick off the CI review process.

@joeduffy

Copy link
Copy Markdown
Member Author

Yes, supposed to be in draft, we are actively discussing how much we want to promote self-hosted. Thanks for checking and I'll make sure this gets either closed out our promoted as appropriate.

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.

3 participants