All docs pages

Sites and hosting

Choose where sites are hosted

Pick the host your client sites go live on (Vercel, Cloudflare Pages, Netlify or your own server), set it up, and see which add-ons need Vercel.

Klaudius puts every site live on the host you chose during setup: Vercel (the default), Cloudflare Pages, Netlify or your own server. They differ in setup and in which add-ons you can sell.

Switch any time in Settings → Change setup → Website hosting, or ask Klaudius. It checks the new host's details before anything changes.

Which add-ons need Vercel

The editor (CMS), the booking system and the live Google rating need a server behind the site, so they only run on Vercel. On other hosts, Client add-ons on the Runs page marks them "Needs a site hosted on Vercel." Go-live SEO, invoices and quotes, monthly fees and the AI receptionist work on every host.

A site that already has one of these add-ons can't be redeployed on another host. If you move away from Vercel, keep those clients there.

Vercel

Setup asks for a Vercel token:

  1. Open https://vercel.com/account/settings/tokens.
  2. Create a token named Klaudius, with Scope set to Full Account and Expiration set to No Expiration. A token limited to one project can't create the project each new site needs.
  3. Paste the token into setup.

Newer Vercel accounts also need the Vercel team (optional) box filled in: it's the part straight after vercel.com/ in your Vercel dashboard's address. Older accounts can leave it blank. You can change it in Settings → Website hosting.

Each client site becomes its own Vercel project, pitched at its free vercel.app address.

Pitch sites on your own domain

To pitch sites at addresses like acme-bakery.sites.yourstudio.com, put a pattern such as https://{slug}.sites.yourstudio.com in Pitch sites on your own domain (optional) in Settings → Website hosting. Klaudius puts each business's short name where {slug} is. Give the sites a level of their own (the sites. part), so they never clash with your own website.

One DNS record covers every client: a CNAME for *.sites.yourstudio.com pointing at the value Vercel recommends for your account, which Klaudius can look up. Each first deploy waits about a minute for the site's security certificate; if it isn't ready, the site is pitched on its vercel.app address until a later deploy. Let's Encrypt, which issues the certificates, allows at most 50 new ones a week per registered domain.

Cloudflare Pages

The free tier offers unlimited sites and bandwidth and 500 builds a month, and Klaudius uploads finished files, so builds rarely count.

Setup needs an API token and your Account ID. To make the token:

  1. Open https://dash.cloudflare.com/profile/api-tokens, choose Create Token, then Create Custom Token → Get started.
  2. Name it Klaudius.
  3. Under Permissions, add exactly one row: Account → Cloudflare Pages → Edit. A token without it is the most common cause of a 403 error at deploy time.
  4. Under Account Resources, select your account.
  5. Choose Continue to summary → Create Token, and copy it. Cloudflare shows it only once.

The Account ID is the 32-character string in your dashboard's address (dash.cloudflare.com/<ID>), also on the Workers & Pages overview page.

Each site gets an address like acme-bakery.pages.dev, with a few random characters added if the name is taken.

Netlify

The free Starter tier gives you unlimited sites and 100 GB of bandwidth a month, and Klaudius uploads finished files, so build minutes are never used.

Setup needs a personal access token:

  1. Open https://app.netlify.com/user/applications#personal-access-tokens and choose New access token.
  2. Name it Klaudius and leave the expiry at No expiration (recommended), or pick a duration.
  3. Choose Generate token and copy it. Netlify shows it only once.

If you belong to several Netlify teams, tell Klaudius which one should own your client sites.

Each site gets an address like acme-bakery.netlify.app. Netlify site names are shared across all accounts, so if someone else has the name, the deploy stops and tells you; ask Klaudius to rename the site and deploy again.

Your own server

Pick My own server (SSH). Each deploy builds the site on your computer and copies the files to your server over SSH, from Mac, Windows or Linux. Two values configure it, editable later in Settings → Website hosting:

  • SSH destination: where the files land, for example deploy@203.0.113.7:/var/www/klaudius-sites. Each client gets its own folder under it.
  • Site address pattern: each site's public address, for example https://{slug}.sites.your-domain.com. This is the address Klaudius records and pitches.

Set the server up once with wildcard DNS (*.sites.your-domain.com pointing at the server), a wildcard TLS certificate (Let's Encrypt with DNS validation) and one wildcard virtual host that maps each subdomain to its client's folder; after that, deploys need nothing from you. Ask Klaudius to walk you through nginx or Caddy. If the first deploy can't reach the site, Klaudius offers to help finish the setup.

  • {slug} must be in the host name, not the path: every site is served from the root of its own address.
  • Sign-in is by SSH key only. Your key must already be authorised on the server; a deploy stops rather than ask for a password. A non-standard port or key file comes from your computer's own SSH configuration.
  • If you send printed letters with the letter code on, a letter client's site is locked by a rule that only Apache reads (with mod_rewrite and AllowOverride FileInfo). On nginx or Caddy, switch off Letter sites open with their code in Settings → Pipeline settings, or those deploys stop at the lock check.

Ask Klaudius

  • Switch my hosting to Cloudflare Pages
  • Set up my sites to be pitched on sites.yourstudio.com
  • Walk me through setting up Caddy for my own server