2026-05-17 21:12:09 +02:00
|
|
|
# linux-workstations
|
|
|
|
|
|
|
|
|
|
Linux-Dualboot-Rollout auf Toms drei Arbeitsrechnern, parallel zu Windows.
|
|
|
|
|
|
|
|
|
|
## Zielgeräte
|
|
|
|
|
|
2026-05-17 21:33:03 +02:00
|
|
|
| Host | Rolle | Hardware | Status |
|
|
|
|
|
|------|-------|----------|--------|
|
|
|
|
|
| notebook | mobile Arbeit | TBD | geplant |
|
|
|
|
|
| pc | Hauptrechner | TBD | geplant |
|
|
|
|
|
| werkstatt | Werkstatt-PC | TBD | geplant |
|
2026-05-17 21:12:09 +02:00
|
|
|
|
2026-05-17 21:33:03 +02:00
|
|
|
> Hardware-Inventar wird pro Host in `ansible/host_vars/<host>.yml` gepflegt.
|
2026-05-17 21:12:09 +02:00
|
|
|
|
2026-05-17 21:33:03 +02:00
|
|
|
## Entscheidungen
|
2026-05-17 21:12:09 +02:00
|
|
|
|
2026-05-17 21:33:03 +02:00
|
|
|
- **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-prober` aktiviert
|
2026-05-17 21:12:09 +02:00
|
|
|
|
2026-05-17 21:33:03 +02:00
|
|
|
Begründung siehe `docs/distro-auswahl.md`.
|
2026-05-17 21:12:09 +02:00
|
|
|
|
2026-05-17 21:33:03 +02:00
|
|
|
## Struktur
|
2026-05-17 21:12:09 +02:00
|
|
|
|
|
|
|
|
```
|
|
|
|
|
linux-workstations/
|
|
|
|
|
├── README.md
|
2026-05-17 21:33:03 +02:00
|
|
|
├── docs/
|
feat: vollst. Installations-Doku, Ansible-Rollen ausimplementiert, claude_workspace-Rolle
- 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
2026-05-17 21:46:23 +02:00
|
|
|
│ ├── distro-auswahl.md # ADR Distribution
|
|
|
|
|
│ ├── installation.md # Schritt-für-Schritt Netinstall + Dualboot
|
|
|
|
|
│ └── postinstall-ansible.md # Bootstrap & Ablauf
|
2026-05-17 21:33:03 +02:00
|
|
|
└── ansible/
|
|
|
|
|
├── ansible.cfg
|
|
|
|
|
├── inventory.yml
|
|
|
|
|
├── site.yml # Top-Level Playbook
|
|
|
|
|
├── group_vars/all.yml
|
|
|
|
|
├── host_vars/{notebook,pc,werkstatt}.yml
|
|
|
|
|
└── roles/
|
feat: vollst. Installations-Doku, Ansible-Rollen ausimplementiert, claude_workspace-Rolle
- 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
2026-05-17 21:46:23 +02:00
|
|
|
├── base/ # APT-Quellen, Locale, Firmware, Grundpakete
|
|
|
|
|
├── desktop_kde/ # KDE Plasma 6 + SDDM + Apps
|
2026-05-17 21:33:03 +02:00
|
|
|
├── hardening/ # SSH, UFW, unattended-upgrades
|
feat: vollst. Installations-Doku, Ansible-Rollen ausimplementiert, claude_workspace-Rolle
- 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
2026-05-17 21:46:23 +02:00
|
|
|
├── dev_tools/ # Git, Node.js (NodeSource), Python, Perl
|
|
|
|
|
├── workstation_apps/ # Browser, Office, Multimedia
|
|
|
|
|
└── claude_workspace/ # Claude Code, ccusage, Workspace-Clone, ~/.claude/settings.json
|
2026-05-17 21:12:09 +02:00
|
|
|
```
|
2026-05-17 21:33:03 +02:00
|
|
|
|
feat: vollst. Installations-Doku, Ansible-Rollen ausimplementiert, claude_workspace-Rolle
- 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
2026-05-17 21:46:23 +02:00
|
|
|
## Workflow (Kurz)
|
|
|
|
|
|
|
|
|
|
Siehe `docs/installation.md` und `docs/postinstall-ansible.md` für Details.
|
2026-05-17 21:33:03 +02:00
|
|
|
|
|
|
|
|
```bash
|
feat: vollst. Installations-Doku, Ansible-Rollen ausimplementiert, claude_workspace-Rolle
- 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
2026-05-17 21:46:23 +02:00
|
|
|
# Nach Debian-Erstinstallation auf Zielrechner:
|
|
|
|
|
ssh-copy-id tom@notebook.egonlebt.lan
|
2026-05-17 21:33:03 +02:00
|
|
|
ansible -i ansible/inventory.yml notebook -m ping
|
feat: vollst. Installations-Doku, Ansible-Rollen ausimplementiert, claude_workspace-Rolle
- 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
2026-05-17 21:46:23 +02:00
|
|
|
|
|
|
|
|
ansible-playbook -i ansible/inventory.yml ansible/site.yml --limit notebook --check --diff
|
2026-05-17 21:33:03 +02:00
|
|
|
ansible-playbook -i ansible/inventory.yml ansible/site.yml --limit notebook
|
feat: vollst. Installations-Doku, Ansible-Rollen ausimplementiert, claude_workspace-Rolle
- 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
2026-05-17 21:46:23 +02:00
|
|
|
|
|
|
|
|
# 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
|
2026-05-17 21:33:03 +02:00
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Repo
|
|
|
|
|
|
|
|
|
|
- Gitea: http://docker.egonlebt.lan:3000/egon/linux-workstations
|
|
|
|
|
- Eingebunden als Submodule in `claude-workspace`
|