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.
The tech stack
- 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.