DOCUMENTATION

Hosting

Publish your app's front end next to its backend. Upload a built website, get a secure address right away, and roll back to a recent version in one click.

← All docs

How it works

  • A site is a name and an address: a site called my-app is served at https://my-app.espohost.com. A project can have several sites.
  • Every upload is a deployment: a copy of your files that never changes. A site shows one deployment at a time, the live one, so publishing a new version never alters an old one.
  • Espobase serves your files as they are and doesn't run your code on its hosting servers. For server work, call your project's REST API or an edge function from the page.

1. Publish from the dashboard

  1. Open your project, choose Hosting in the left menu and create a site: a name, an address and, for React, Vue and similar apps, the Single-page app switch.
  2. Click Publish a folder and choose your build folder, for example dist or out. Hidden files are never uploaded.
  3. Your browser fingerprints every file and uploads each distinct file once. When the upload finishes, the new deployment goes live.
  4. Open the address shown on the site's card.

2. Publish from your terminal or CI

With the espobase CLI, publish a build folder with one command:

espobase deploy ./dist --site my-app
# ✓ 42 files · 1.8 MB
# → https://my-app.espohost.com

--message adds a note to the deployment, and --no-activate uploads it without making it live. For CI, create a token with only the Deploy sites permission (Account settings › Developer) and pass it as ESPOBASE_TOKEN. That token can publish, but it can't delete sites or change their settings. espobase sites list shows your sites.

Build from Git

  • Instead of uploading a folder, a site can be built from a public Git repository (GitHub, GitLab, Bitbucket or Codeberg) that holds a Node project. Open the site's card, choose Set up builds, enter the repository and branch (and, if needed, the folder, the commands and the Node version, 20 or 22), then click Build now.
  • Espobase clones the repository, installs the dependencies (using your lockfile: pnpm, yarn or npm) and runs your build command, each step in a locked-down sandbox. The output folder (dist, build, out, public, or the one you set) is published as a new deployment and goes live.
  • A build can use 2 CPUs, 4 GB of memory and 10 minutes. The sandbox has no access to Espobase and holds no Espobase secrets.
  • The log appears on the site's card while the build runs and is kept with it (the latest 30 builds are kept). A site builds one thing at a time, and you can cancel a build that is waiting or running.
  • Builds use your plan's build minutes, rounded up per build. When they are used up, new builds wait for the next billing cycle; the site you already published isn't affected.
  • Under Build variables you can give your build values as environment variables. Public values (like VITE_API_URL) are shown in the dashboard; secrets are encrypted, never shown again and hidden from build logs. Anything a build puts into your site's files can be read by every visitor, so keep secrets out of variables that frameworks copy into the site (names starting with VITE_ or NEXT_PUBLIC_).
  • GitHub (Pro and Group): connect a GitHub account under GitHub in the sidebar, then choose GitHub as the code source in a site's build settings. Private repositories work: Espobase reads them with the app you installed, only for the build. A push to the production branch builds and publishes your site, and each pull request from the same repository gets a preview at its own address (public, hidden from search engines, removed when the pull request closes). Pull requests from forks are never built.

How your site is served

  • HTTPS is automatic. Every site has its own address under espohost.com.
  • /about opens about.html, and /docs opens docs/index.html. A folder address without a trailing slash redirects to the one with it.
  • Add a 404.html to show your own not-found page. Without one, visitors see a plain 404.
  • With Single-page app on, paths that aren't files open index.html, so your app's router can handle them. A missing file with an extension, like /logo.png, still returns 404.
  • Browsers check your files again on every visit (with an ETag), so a new deployment shows up at once. Files under _next/static/ are content-hashed by Next.js and cached for a year.
  • The content type comes from the file's extension.

Your own domain

  1. Open the site's card in Hosting and choose Manage domains, then add your domain, for example www.yourbrand.com.
  2. At your DNS provider, publish the two records shown: a TXT record that proves the domain is yours (keep it in place) and a CNAME from your domain to sites.espohost.com. A bare domain like yourbrand.com can't have a CNAME, so publish the A records shown instead.
  3. Click Check DNS. When the TXT record is found, the domain is verified, and the HTTPS certificate is issued automatically on the first visit, within a few seconds.
  4. The site now answers on your domain and on its espohost.com address. Removing a domain stops it at once.
  5. If your plan later has fewer domains, the extra ones stop being served but are kept.

Bandwidth

  • Bandwidth is the data your sites send to visitors. It's counted for each billing cycle across all of your organization's sites, and you can see it on the Hosting page.
  • You get an email at 75%, 90% and 100% of your plan's bandwidth. Extra traffic is never charged.
  • Between 100% and 125% your sites keep working. Above 125%, visitors see a "bandwidth limit reached" page until the next billing cycle starts, or until you move to a plan with more bandwidth. Nothing is deleted.
  • Traffic is added up every minute, so a pause starts within a few minutes of crossing the line.

Versions and rollback

  • Each deployment is listed on the site's card. Choose Make live on an older one to roll back, and on a newer one to roll forward. It's instant, because only the pointer moves.
  • Espobase keeps the newest 10 deployments of each site and removes older ones automatically. The live deployment is never removed.
  • Developers can publish and roll back. Admins create, rename and delete sites, change the Single-page app setting and delete deployments. Every change is recorded in the audit log.

Security

  • Everything you publish is public. Don't put secrets in your files. The publishable key is made to be public and your row level security rules protect the data; never put a secret key in a site.
  • Sites live on espohost.com, a different domain from Espobase, so a site can't read Espobase cookies or sign-ins.
  • Each uploaded file is checked against the fingerprint and size you declared, and nothing is served that isn't in the deployment's file list.

Plans and limits

  • Free: hosting isn't included.
  • Pro: 10 sites per project, 10 GB of hosted files, 1 custom domain per site, 250 GB of bandwidth a month, 500 build minutes a month.
  • Group: 50 sites per project, 100 GB of hosted files, 5 custom domains per site, 1 TB of bandwidth a month, 2,000 build minutes a month.
  • A deployment can have up to 10,000 files, 50 MB per file and 500 MB in total. An upload that isn't finished within an hour expires.
  • Hosted files are counted across your organization. If you move to a plan with fewer sites, the extra sites stop being served but nothing is deleted.

Not available yet

  • Server-rendered apps (such as Next.js with a server). Static exports work today.