- docs/installation.md: Netinstall + Dualboot Schritt-für-Schritt (LUKS nur am Notebook) - docs/postinstall-ansible.md: Ablauf + restmanuelle Schritte - roles/base: APT-Sources mit non-free-firmware + Backports, Locale, Tastatur, Zeitzone, Grundpakete - roles/desktop_kde: Plasma 6 + SDDM (ohne Recommends, kompakt) - roles/hardening: SSH key-only, UFW, unattended-upgrades - roles/dev_tools: Node.js via NodeSource, Python, Perl, Git-Defaults - roles/workstation_apps: Firefox, Thunderbird, LibreOffice, Codecs, KeePassXC - roles/claude_workspace (NEU): Claude Code + ccusage, SSH-Key für Gitea, Workspace-Clone (recurse-submodules), ~/.claude/settings.json - site.yml: alle Rollen mit Tags
linux-workstations
Linux-Dualboot-Rollout auf Toms drei Arbeitsrechnern, parallel zu Windows.
Zielgeräte
| Host | Rolle | Hardware | Status |
|---|---|---|---|
| notebook | mobile Arbeit | TBD | geplant |
| pc | Hauptrechner | TBD | geplant |
| werkstatt | Werkstatt-PC | TBD | geplant |
Hardware-Inventar wird pro Host in
ansible/host_vars/<host>.ymlgepflegt.
Entscheidungen
- Distribution: Debian 13 "Trixie" Stable mit KDE Plasma 6 (Netinstall,
firmware-netinst) - Konfigurationsmanagement: Ansible-Playbook (in
ansible/) - Bootloader/Dualboot: GRUB neben bestehendem Windows-Bootloader;
os-proberaktiviert
Begründung siehe docs/distro-auswahl.md.
Struktur
linux-workstations/
├── README.md
├── docs/
│ ├── distro-auswahl.md # ADR Distribution
│ ├── installation.md # Schritt-für-Schritt Netinstall + Dualboot
│ └── postinstall-ansible.md # Bootstrap & Ablauf
└── ansible/
├── ansible.cfg
├── inventory.yml
├── site.yml # Top-Level Playbook
├── group_vars/all.yml
├── host_vars/{notebook,pc,werkstatt}.yml
└── roles/
├── base/ # APT-Quellen, Locale, Firmware, Grundpakete
├── desktop_kde/ # KDE Plasma 6 + SDDM + Apps
├── hardening/ # SSH, UFW, unattended-upgrades
├── dev_tools/ # Git, Node.js (NodeSource), Python, Perl
├── workstation_apps/ # Browser, Office, Multimedia
└── claude_workspace/ # Claude Code, ccusage, Workspace-Clone, ~/.claude/settings.json
Workflow (Kurz)
Siehe docs/installation.md und docs/postinstall-ansible.md für Details.
# Nach Debian-Erstinstallation auf Zielrechner:
ssh-copy-id tom@notebook.egonlebt.lan
ansible -i ansible/inventory.yml notebook -m ping
ansible-playbook -i ansible/inventory.yml ansible/site.yml --limit notebook --check --diff
ansible-playbook -i ansible/inventory.yml ansible/site.yml --limit notebook
# Anschließend manuell pro Maschine (~1 min):
# 1. Public-Key aus ~/.ssh/id_ed25519_gitea.pub auf Gitea hochladen
# 2. ansible-playbook ... --tags claude_workspace (holt Workspace nach)
# 3. Auf dem Zielrechner: `claude` → OAuth-Login
Repo
- Gitea: http://docker.egonlebt.lan:3000/egon/linux-workstations
- Eingebunden als Submodule in
claude-workspace
Description
Languages
INI
100%