This website is the result of three main things:

  • Pulling data from Obsidian Sync
  • Building the HTML with the Garden project
  • Serving the HTML output with nginx

It’s all deployed as a single pod on my k3s cluster, with two init containers and three runtime containers. The two init containers first:

  • Download the current state of my garden vault into an ephemeral volume using obsidian headless
  • Build that state into some HTML content that is stored in an ephemeral volume. Once those init containers are done, the nginx server starts serving files with read-only access to the output of the garden project. The other two containers are running a continuous sync with Obsidian so that the documents can be updated live, and a continuous build so that updated vault files results in updated web content. No more manual intervention.

One thing that does need some tweaking is the ability to actually customize my garden project, ie: to name the website, theme it, configure plugins, etc. But for now, I am happy with being able to update it whenever I want without needing to go in and kill the pod.