• About Me
  • Resume
  • Mail
  • folio
  • Atlas
  • Docs
  • Fikaspelet
  • Shipit

folio

The self-hosted platform this site runs on: one CMS, many sites, on Kubernetes at home

folio is the platform behind this site. I built it so that people close to me can have a website they update themselves, without touching code, and to learn Docker, Kubernetes and GitOps properly by running something real.

It runs two sites today: this one and verategge.se, an artist’s portfolio. Each site has its own database, CMS instance and domain, but the backend is shared: one Payload CMS, one contact-form API, and one Helm chart with a values file per site. A new site needs a values file and a frontend, not a new backend.

Everything runs on a single-node k3s cluster on a Linux home server. Argo CD keeps the cluster in line with Git, and GitLab CI builds only the images whose code changed and commits the new version, so a push to main is live a few minutes later. Visitors reach it through a Cloudflare Tunnel, so nothing on the home network is open to the internet. Each pod only accepts connections from the pods that use it, and the CMS admin sits behind Cloudflare Access.

Content appears on the site the moment it’s saved, through on-demand revalidation in Next.js. Every upload is re-encoded, which strips GPS data from phone photos. The database and all media are backed up every night, encrypted, to Cloudflare R2, and the backup has been restored and verified.

I built it with Claude Code as my pair programmer: I set the direction and made the decisions, and it let me move fast in tools I was still learning. That’s the way of working my thesis argues for, with AI supporting a developer’s planning and judgement rather than replacing it.

The code is private for now and may be published later.

Built with: Next.js, React, TypeScript, Payload CMS, PostgreSQL, Node.js, Fastify, Docker, Kubernetes (k3s), Helm, Argo CD, GitLab CI, Traefik, Cloudflare, Garage (S3), restic, Linux

  • Visit verategge.se →
  • About Me
  • Resume
  • Mail
  • folio
  • Atlas
  • Docs
  • Fikaspelet
  • Shipit
  • LinkedIn
  • GitLab
  • Instagram