Hosting model for client/demo sites: shared vs. dedicated nodes #1

Open
opened 2026-10-15 23:52:12 -04:00 by jfraeys · 1 comment
Owner

Decide and build a hosting model for client/demo sites: shared multi-tenant host vs. a dedicated node per client.

Today's demo model is path-prefixed sessions on one shared web host (per-session content repos, TTL expiry via create-session.sh/destroy-session.sh). This issue is about adding the option of a client getting its own dedicated node instead of (or alongside) that shared model.

Depends on / entangled with the site-separation branch (sitemeta/sitectl, extracting a site into its own repo) — that work is what makes a site portable enough to actually place on a different node, so it's a likely prerequisite rather than parallel work.

Open questions:

  • When does a client warrant a dedicated node vs. shared hosting (resource/isolation/pricing tradeoff)?
  • How does provisioning a new node plug into the existing demo-session lifecycle tooling?
  • Does this wait on site-separation merging, or can a first cut start against today's engine?
Decide and build a hosting model for client/demo sites: shared multi-tenant host vs. a dedicated node per client. Today's demo model is path-prefixed sessions on one shared `web` host (per-session content repos, TTL expiry via `create-session.sh`/`destroy-session.sh`). This issue is about adding the option of a client getting its own dedicated node instead of (or alongside) that shared model. Depends on / entangled with the `site-separation` branch (`sitemeta`/`sitectl`, extracting a site into its own repo) — that work is what makes a site portable enough to actually place on a different node, so it's a likely prerequisite rather than parallel work. Open questions: - When does a client warrant a dedicated node vs. shared hosting (resource/isolation/pricing tradeoff)? - How does provisioning a new node plug into the existing demo-session lifecycle tooling? - Does this wait on `site-separation` merging, or can a first cut start against today's engine?
Author
Owner

Reconciled against docs/separation-plan.md (branch site-separation), section "Host layout":

Hosting density (one client per instance vs. several per Linode/OVH instance) is undecided; keep both possible. The engine and scripts must not assume one site per host... Provisioning client hosts (Terraform) and a multi-site Ansible role stay in the infrastructure repository and are out of scope here.

So this issue's engine-side half (not hard-coding one-site-per-host — install dir, webroot, API port, systemd unit name, nginx server block all per-site-configured) is covered by #7 (Release A step 4 — the per-site release-directory/blue-green layout already generalizes this, following the existing coach-api-demo@<token> pattern). The actual shared-vs-dedicated-node decision, and Terraform/multi-site-Ansible provisioning, is explicitly out of scope for this repo and belongs in the infra repo instead — this issue should track that decision and any coaching-site-repo-side follow-up only, not duplicate #7's engine work.

Reconciled against `docs/separation-plan.md` (branch `site-separation`), section "Host layout": > Hosting density (one client per instance vs. several per Linode/OVH instance) is undecided; keep both possible. The engine and scripts must not assume one site per host... Provisioning client hosts (Terraform) and a multi-site Ansible role stay in the infrastructure repository and are out of scope here. So this issue's engine-side half (not hard-coding one-site-per-host — install dir, webroot, API port, systemd unit name, nginx server block all per-site-configured) is covered by [#7](https://git.jfraeys.com/jfraeys/coaching-site/issues/7) (Release A step 4 — the per-site release-directory/blue-green layout already generalizes this, following the existing `coach-api-demo@<token>` pattern). The actual shared-vs-dedicated-node *decision*, and Terraform/multi-site-Ansible provisioning, is explicitly out of scope for this repo and belongs in the infra repo instead — this issue should track that decision and any coaching-site-repo-side follow-up only, not duplicate #7's engine work.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
jfraeys/coaching-site#1
No description provided.