Single source of truth for Birkly CMS documentation

Configure where admin lives, where visitors see your site, and how extra hostnames route — all from Settings → Site delivery in the admin panel.

Technical storage: settings/hosting.json (schema v2). Birkly routes HTTP by hostname using this file; your reverse proxy (Dokploy, nginx, Apache) only forwards traffic to PHP.

Concepts

SettingMeaning
CMS URLAdmin, API, birkly-client.js base (e.g. https://cms.example.com)
Public site URLWhere visitors see the marketing site (optional)
Public website modeNone · Hosted elsewhere · In Birkly (project/)
Primary vs aliasOne canonical URL per surface; extra hostnames are aliases
Delivery role (Domains tab)How each registered hostname routes: CMS alias · Public alias · API only

Domains tab serves two purposes:

  1. CORS / Public API allowlist for birkly-client.js and public APIs
  2. Delivery role — syncs alias hostnames with hosting.json (P66)

Register every hostname you use in production, then assign the correct delivery role.

Delivery health dashboard

At the top of Site delivery and Project → Overview, the Delivery status strip runs live probes:

StatusMeaning
GreenConfiguration and runtime checks pass
YellowUsable but needs attention (missing alias suggestion, etc.)
RedBroken routing or unreachable public URL

Actions:

  • Refresh — re-run probes
  • Repair delivery — preview/apply non-destructive fixes (schema migration, domain sync)

Use Fix links on individual checks to jump to Hosting, Domains, or Redirects.

Setup wizard

Settings → Site delivery → Hosting URLs hosts the setup wizard:

  1. Detect — reads current request, project folder, env overrides
  2. Propose — suggests CMS/public URLs and www↔apex aliases (nothing saved until you confirm)
  3. Apply suggestion — writes hosting.json and re-probes

When BIRKLY_CMS_BASE_URL (or related env vars) are set, URL fields are read-only but probes still run.

Multi-domain example

HostDelivery roleServes
cms.example.comCMS (primary)Admin + API
staging-cms.example.comCMS aliasSame as CMS
www.example.comPublic (primary)project/ site
example.comPublic alias301 → www (default)
legacy.example.comAPI onlyCORS only — no routing

Both CMS and public hostnames must point to the same app on Dokploy (Path /, Internal Path /). See Hosting on Dokploy.

Redirects

Settings → Site delivery → Redirects rules are enforced in the PHP router (v1). Export snippets for nginx/Apache are documentation only until you configure the edge separately.

Migration & repair

Upgrading from older installs:

  • v1 configs load unchanged in memory
  • Schema v2 persists on Save, Apply suggestion, or Repair delivery
  • .bak backup created before writes; rollback restores prior file

After upgrade, a non-blocking notice appears if probes fail — the site keeps prior behavior until you repair.

Subdirectory installs

When Birkly is not at the web root, URL builders include the install base path. Verify probes show correct install_base_path and that asset links on the public site do not double-prefix /project/.

AI / MCP

Agents can call:

  • get_site_delivery_status
  • run_site_delivery_probe

Playbook topic: site-delivery (via read_birkly_docs).