Skip to content

Deploy static web content with Caddy

This example uses Caddy, one of the most popular web servers. Caddy can be used with Unikraft / KraftCloud to serve static web content.

To run this example, follow these steps:

  1. Install the kraft CLI tool and a container runtime engine, e.g. Docker.

  2. Clone the examples repository and cd into the examples/caddy/ directory:

Terminal window
git clone
cd examples/caddy/

Make sure to log into KraftCloud by setting your token and a metro close to you. We use fra0 (Frankfurt, 🇩🇪) in this guide:

Terminal window
# Set KraftCloud access token
# Set metro to Frankfurt, DE

When done, invoke the following command to deploy this application on KraftCloud:

Terminal window
kraft cloud deploy -p 443:2015 .

The output shows the instance URL and other details:

Terminal window
[] Deployed successfully!
────────── name: caddy-vhf4m
────────── uuid: db624eff-4739-4500-873c-f7c58e4eefd7
───────── state: running
─────────── url:
───────── image: caddy@sha256:25df97e3c43147c683f31dd062d0fa75122358b596de5804ca246c4e8613dd56
───── boot time: 20.18ms
──────── memory: 128 MiB
service group: frosty-sky-vz8kwsm
── private fqdn: caddy-vhf4m.internal
──── private ip:
────────── args: /usr/bin/caddy run --config /etc/caddy/Caddyfile

In this case, the instance name is caddy-vhf4m and the URL is They are different for each run.

Use curl to query the KraftCloud instance of Caddy.

Terminal window
Hello World!

At any point in time, you can list information about the instance:

Terminal window
kraft cloud instance list
caddy-vhf4m running 1 minute ago caddy@sha25:25df97e3c43147c683f... 128 MiB /usr/bin/caddy run --config /e... 20180us

When done, you can remove the instance:

Terminal window
kraft cloud instance remove caddy-vhf4m

Customize your Application

To customize the application, update the files in the repository, listed below:

  • Kraftfile: the KraftCloud specification
  • rootfs/var/www/index.html: the index page of the content served
  • rootfs/etc/caddy/Caddyfile: the Caddy configuration file
spec: v0.6
runtime: caddy:latest
rootfs: ./rootfs

Update the contents of the rootfs/var/www directory to serve different static web content. For example, you could change the contents of rootfs/var/www/index.html to:

<!DOCTYPE html>
<h2>Hello, World!</h2>

After re-deploying the Caddy image on KraftCloud, using curl or a browser to query it will present the new page contents.

The static web content located in the rootfs/var/www/ can of course be generated offline by tools like Jekyll or Hugo.

If required, you can also customize the configuration of Caddy in rootfs/etc/caddy/Caddyfile. You can set a new webroot (different than rootfs), or a different internal port, or a different index page, etc.

Learn More

Use the --help option for detailed information on using KraftCloud:

Terminal window
kraft cloud --help

Or visit the CLI Reference.