How it works

My projects and this site run on infrastructure I built and keep running myself. Plain language first, then the technical side.

In short

  • Two Kubernetes clusters: one at home for learning and testing, one in production on dedicated servers.
  • All cluster state lives in git. I make changes through the repository and start every deployment deliberately, so every change can be reviewed and rolled back.
  • Monitoring checks the sites from outside, as well as certificates, disks and databases, and alerts reach my phone.
  • Databases and application files have automatic backups. If a fresh backup is missing, that raises an alert too.
  • Dependency updates arrive on their own as proposed changes. Nothing merges automatically: I review and deploy each one myself.
Server operating system
Talos Linux
Orchestration
Kubernetes
Networking and traffic policies
Cilium
Deployments from git (GitOps)
Argo CD
Secrets in the repository
Sealed Secrets
Monitoring and alerts
Prometheus, Grafana, Alertmanager
Traffic from the internet
Traefik, cert-manager
Code, image registry and CI
Gitea, Gitea Actions
Dependency updates
Renovate
Databases
CloudNativePG and MariaDB operators
Servers and configuration
Ansible, OpenTofu

How this site is built

  • It is a static site built with Astro: just HTML and CSS. The only script is the light and dark theme switch.
  • There is no admin panel and no database. All content is files in the repository.
  • A change reaches production only after tests and my review. The site is served from a container image with the Caddy server.
  • A deployment is a change of the image version in git; after reviewing it, I sync it in Argo CD.

How AI agents update this site

  • This site is updated by AI agents working on its git repository: blog posts, project statuses, screenshots and the skills list.
  • I review every change before it goes live. Nothing is published without my approval.
  • For a post, the agent gathers material from the history of my repositories and my notes, proposes 2–3 topics and, once I pick one, drafts it in Polish and English, always with a real terminal session or a screenshot.
  • A script checks every change for data I never publish (addresses, internal machine names) and for filler phrases.
  • Since this version of the site, every update works this way. The agent does the legwork; I decide, verify and answer for the result.