← Homelab

Mijn werkplek: een Framework 13 met Linux, tot in de details ingericht

Een Framework Laptop 13 met Ubuntu als dagelijkse werkplek: volledig versleuteld, met tmux, starship en mise, vaste toolversies per cluster, veilige contextwissels en een eigen AI-gereedschapskist.

De hardware

LaptopFramework Laptop 13
ProcessorIntel Core Ultra 7 165H
Geheugen64 GB
Opslag1 TB NVMe, volledig versleuteld met LUKS

Een Framework, omdat je hem zelf kunt openen, repareren en upgraden. Dat past bij hoe ik met al mijn systemen omga: ik wil weten wat erin zit.

Ubuntu met GNOME

De laptop draait Ubuntu 24.04 met GNOME op Wayland. Dat is een bewuste keuze voor een werkplek: een ondersteunde standaarddistributie waar de beveiligings- en compliance-eisen van werk op aansluiten.

Daarvoor draaide hij een tijd Omarchy (Arch Linux met Hyprland). Dat mocht om werkredenen niet blijven. Wat er wel van bleef, is de manier van werken:

  • Toetsenbord eerst. Tiling via een GNOME-extensie, en sneltoetsen voor alles. Een scriptje (shortcuts-keys) leest de actieve sneltoetsen direct uit dconf, zodat het overzicht nooit afwijkt van wat het bureaublad echt doet.
  • Volledige schijfversleuteling met LUKS. In de Omarchy-tijd heb ik de versleutelde schijf al eens herindeeld zonder herinstallatie. Zie het artikel.
  • Aanpassen via de ondersteunde weg. Een eigen achtergrond op het inlogscherm via het officiële Ubuntu-schema, niet via gepatchte GNOME-bestanden. Zo overleeft het elke update.

De terminal

  • tmux met Ctrl+Space als prefix, vi-copymode die naar de Wayland-clipboard kopieert, en een popup met alle sneltoetsen en hun beschrijving (prefix ?).
  • starship als prompt, met de Kubernetes-context altijd in beeld.
  • zoxide, fzf, lazygit, Neovim en k9s voor dagelijks werk.

Vaste versies met mise

Alle CLI-tools komen uit mise, met vaste versies waar dat ertoe doet:

  • kubectl staat vast op de minorversie van de clusters. kubectl mag maar één minorversie afwijken van de API-server.
  • flux en istioctl staan op exact de versie die in de clusters draait.
  • kind, helm, rclone, pandoc, node en de AI-CLI's staan er ook in.

Na een clusterupgrade is het bijwerken één regel in config.toml, en elke collega met dezelfde config heeft dezelfde tools.

Veilig wisselen tussen omgevingen

  • Contextwissels met een naam: aliassen per omgeving (acceptatie, productie, lokaal), plus een alias die de actieve context toont. De prompt laat altijd zien waar je zit.
  • Een lokaal testcluster met een vangrail dat elke opdracht weigert als de API-server niet lokaal is. Zie Veilig werken met kubectl.
  • SSH-sleutels per context in de agent laden en weer leegmaken, en een sl-functie met autocompletion op een lijst met hosts.
  • VPN's op afroep: de werk-VPN via een systemd-run-unit met eigen log en status, en WireGuard naar huis met home-up en home-down als split tunnel, zonder DNS-overname en zonder autostart.

AI-gereedschap

  • Claude Code voor het dagelijkse werk, met regels voor data en toestemming. Zie Claude Code met dataveiligheid.
  • cortana, mijn eigen CLI op het lokale model, en ask-claude voor escalatie met goedkeuring.
  • Een route-proxy als systemd user-service die automatisch kiest tussen het thuisnetwerk en de relay.
  • Een wekelijks AI-verslag via een systemd-timer op vrijdag.
  • Andere AI-CLI's (Codex, Gemini, opencode) staan erbij om te vergelijken. Ik kies het gereedschap per taak.

Kleine fixes die ertoe doen

  • De kubectl OIDC-plugin: na een migratie stond een tool met bijna dezelfde naam geïnstalleerd, voor een ander platform. De foutmelding leek een loginprobleem.
  • De connectivity-check van NetworkManager gaf achter de VPN altijd "beperkte verbinding" en een vraagteken op het netwerkicoon. Na het uitsluiten van de bekende oorzaken heb ik hem bewust uitgezet, met de reden erbij vastgelegd.

Waarom zoveel moeite?

Een werkplek die je kent tot op de laatste sneltoets, maakt je sneller en voorkomt fouten. Een context die altijd in beeld is, een guard die productie beschermt, en tools met dezelfde versie als de clusters: dat zijn de dingen die het verschil maken op de dag dat er iets misgaat.