No description
Find a file
2026-06-04 16:32:07 +00:00
main.tf Update main.tf 2026-06-04 16:32:07 +00:00
README.md Update README.md 2026-05-30 07:16:29 +00:00

display_name description icon maintainer_github tags
Sindri (Kubernetes Deployment) Coder workspaces backed by the Sindri image — headless or full XFCE/noVNC desktop, selectable per workspace. ../../../site/static/icon/k8s.png GuillaumeHemmen
kubernetes
container
sindri
xfce
novnc

Sindri Coder Template (Kubernetes Deployment)

Provisions a Kubernetes Deployment + PVC as a Coder workspace, using the Sindri image family. A single template covers both variants:

  • Headless (git.van-hemmen.com/actions/sindri:coder-<tag>) — lightweight coder user environment, code-server, JetBrains Gateway.
  • Desktop (git.van-hemmen.com/actions/sindri:coder-xfce-vnc-<tag>) — same base plus an XFCE desktop served over noVNC.

Each user chooses which variant their workspace runs via a single checkbox at workspace creation time. See the full image-variant feature list in the project README.md.

For template admins

Variables

Variable Required Default Description
namespace yes Kubernetes namespace to create workspaces in. Must already exist.
use_kubeconfig no false true if the Coder host is outside the workspace cluster and uses ~/.kube/config. false if Coder itself runs as a pod in the same cluster and uses its ServiceAccount.
image_tag no "latest" Sindri image tag shared by both variants. Pin to a specific build SHA or Tag (e.g. ecfb1a7adaf7188e97a4d8195d42720ae0b371f7) for reproducible workspaces — SHAs come from the Forgejo Actions builds and the registry tag list.

How the image is selected

The user-facing "Use with desktop" checkbox flips the image between the two variants while keeping the same image_tag:

git.van-hemmen.com/actions/sindri:coder-<image_tag>           # toggle OFF
git.van-hemmen.com/actions/sindri:coder-xfce-vnc-<image_tag>  # toggle ON

Bumping every workspace to a newer build is a one-line image_tag change in the template.

Architecture

This template provisions:

  • A Kubernetes Deployment (ephemeral pod).
  • A Kubernetes PersistentVolumeClaim mounted at /home/coder (persistent across workspace restarts).

Anything outside /home/coder is not persisted. The Sindri image is designed for this — the per-user runtime (NVM/Node, bash prompt, gitignore, etc.) is provisioned at workspace start by coder-init (and coder-init-desktop for the XFCE variant). See the main README.md for details.

For workspace users

Choose your workspace flavor

When creating a workspace, you'll see:

  • Use with desktop (XFCE + noVNC) — leave off for a lightweight headless workspace (code-server + JetBrains Gateway). Turn on for a full XFCE desktop accessible in your browser via noVNC, plus Firefox and JetBrains Toolbox preinstalled.
  • CPU / Memory — pick the size you need. At least 4 cores and 8 GB RAM are recommended when running with the desktop enabled or when running JetBrains IDEs locally inside the workspace.
  • Home disk size — size of the persistent /home/coder volume.

You can flip "Use with desktop" on or off later by editing your workspace parameters and restarting. The new image is pulled on the next start; your /home/coder PVC is preserved.

Apps exposed by the workspace

App Available in Notes
code-server Both variants Browser-based VS Code at the workspace root.
Desktop (noVNC) Desktop only Hidden when "Use with desktop" is off. XFCE session via noVNC in the browser.
JetBrains Gateway Both variants Connects to the workspace over SSH — works fine on the headless variant too.

More details

For the deeper image-variant feature lists, software-rendering notes, JetBrains Toolbox specifics, and the PVC state matrix, see the project README.md.

Note

This template is a starting point. Fork and edit the Terraform if you need to extend it for your use case.