Getting started

Host a website on NebuliHost, then add logic that runs on the server, without running a server yourself.

Create a server

A server is one website with its own address. Create one under Add Server and it's online straight away at https://your-site.thehsi.cloud, showing a placeholder page.

The id becomes the address, so it has to be 5 to 63 characters of lowercase letters, numbers and dashes, and can't start or end with a dash. How many servers you can have, and how much storage each one gets, depends on your plan: see Upgrade.

Upload your site

There are three ways to get files onto a server. They all end up in the same place.

HowBest for
The file manager on the server's pageChanging a few files by hand
Uploading a zip on the server's pageUploading a whole site at once
The APIDeploying from scripts and CI

A zip can be applied in two ways:

  • Add & overwrite keeps your other files, and replaces those with the same path.
  • Replace makes the server contain exactly what's in the zip, and deletes everything else, except your private .internal folder.

If everything in the zip is inside one folder with an index.html in it (my-site/index.html), that folder is removed, so the site ends up at the root. A bad zip never changes your live site: it's checked and unpacked completely before anything is moved into place. Zips can't contain symbolic links or be password-protected.

How a site is laid out

PathWhat it is
index.htmlThe page shown at your site's address
index.chtmlThe same for a dynamic page, if there's no index.html
Other filesServed as they are, at the same path
*.chtmlDynamic pages, rendered on the server for each visitor
.internal/Private: visitors can never reach anything in here. Your recipes and stored values live here. It shows in the file manager with a warning, because changing it by hand can break your site
/__recipes/Reserved address, used by dynamic pages

Your first dynamic page

A recipe is a small function, written as JSON, that runs on our servers. A .chtml page is HTML that can use recipes. Here's one of each, adding 19% tax to a price.

Open your server's page and choose Recipes for the node editor. You can build this one there, or use Import JSON in its ⋯ menu and save it as with_tax:

{
  "name": "Add 19% tax",
  "parameters": { "net": "number" },
  "recipe": [
    { "action": "multiply", "values": ["$net", 1.19] },
    { "action": "format", "format": "%(.2f) €", "values": ["$0"] }
  ]
}

And this as shop.chtml:

<!doctype html>
<html>
  <body>
    <p>Price: %{ with_tax(10) }%</p>
  </body>
</html>

Open https://your-site.thehsi.cloud/shop.chtml and you'll see Price: 11.90 €. The visitor's browser only ever receives the result, never the recipe.

Where to go next

  • Dynamic pages: everything .chtml pages can do, including calling recipes from JavaScript.
  • Recipes: how to write them, and every action available.
  • API: manage servers and deploy from scripts and CI.