Commit Graph
49 Commits
Author SHA1 Message Date
spektr ca79cc404a LLM-Server: Testing nach bestandener 64k-Abnahme auf 128k-Zielkontext gestellt
inference_engine_ctx_size_override auf null (GNAI-008 7.5, GNAI-010 10.3);
131072 aktiv seit 01.11.2026, kein OOM (VRAM 14,3/14,7 GiB von je 16 GiB).

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-11-01 17:32:17 +01:00
spektrandMistral Vibe 3306b3de4b GNAI-010: Änderungsverlaufseintrag zu v0.8 ergänzt
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-11-01 17:32:17 +01:00
spektr 3548615b2a GNAI-010 v0.8: 64k-Grundabnahme Swift bestanden (Abschnitt 10.5)
Technische Abnahme nach 10.1/10.2 am 31.10.2026 in Testing gefahren und
bestanden: SHA-256 und System-Fingerprint des gepinnten Builds, kein
PublishPort, Unit stabil, n_ctx_slot=65536, GPU-Offload über beide Karten
(12,7/13,1 GiB von je 16 GiB, kein CPU-Offload), Health 200 OK, korrekter
Alias, Thinking-Request mit getrenntem Reasoning und finaler Antwort,
syntaktisch gültiger Tool-Call (get_weather/Berlin). Offen: 128k-Abnahme
(10.3), Wiederanlauf-/Profilwechseltests (10.4), Unsloth-Wiederholung.
Hinweis dokumentiert: load_tensors-Verteilzeilen bei Verbose 3 nicht
gedruckt.

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-11-01 17:32:17 +01:00
spektr 060901d104 LLM-Server: Container-Protokollierung geklärt und in GNAI-010 dokumentiert (v0.7)
conmon schreibt mit dem Journald-Treiber ins System-Journal (Syslog-Identifier
= Container-Name, _COMM=conmon); lesbar als root, podman logs bleibt für das
Workload-Konto leer (Journal-Dateirechte, bewusst keine systemd-journal-
Gruppe). Lesewege in GNAI-010 Abschnitt 8.1; 64k-Bring-up-Startlogs sind
protokollfähig (n_slots=1, n_ctx_slot=65536, Listening, MTP-Tensoren nicht
geladen). Zusätzlich dokumentiert: LLAMA_ARG_HOST-Default des Images und die
bewusst akzeptierte API-Key-Lücke des internen Testing-Netzes.

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-11-01 17:32:17 +01:00
spektr 026c840029 LLM-Server: M2-Vertical-Slice in Betrieb - Swift-Stack läuft, Inferenz nachgewiesen
Erster produktiver Start des llama.cpp-Testing-Stacks auf ghostnet-ki
(31.10.2026). Fix-Liste aus den Live-Läufen:
- Quadlet-Exec ohne Binärnamen (AMD-Image hat ENTRYPOINT /app/llama-server;
  GNAI-010 v0.6 dokumentiert den Befund)
- Deterministischer daemon-reload vor Unit-Zugriff (Handler allein griff nicht,
  wenn ein vorheriger Lauf die Quadlets gerendert hatte)
- Netz-Abhängigkeit Wants/After im Container-Quadlet (Netzwerk-Unit wurde
  nie mitgestartet -> network not found)
- Stopp-Bedingung für Profilwechsel korrigiert (nur aktive Units stoppen)
- Health-Tool-Kette curl/wget/bash-/dev/tcp mit Pfad-Normalisierung; curl -f
  als Gesundheitssignal (Statuszeile stand nie im stdout)
- chdir für alle runuser-Aufrufe der Health-Checks

Nachweise: Health 200 OK, /v1/models Alias korrekt, Idempotenz changed=0,
VRAM 12,6/13,0 GiB von je 16 GiB auf beiden Karten (Layer-Split 1:1),
echte Chat-Completion mit System-Fingerprint des gepinnten Builds,
Reasoning getrennt von der Antwort.

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-11-01 17:32:17 +01:00
spektr 89787b0e23 LLM-Server: IPv6 deaktiviert (host_baseline) + Swift-Repin und wget-4-Download nach Live-Befunden
Betreiberentscheidung 31.10.2026 (GNAI-002 Abschnitt 6): Der KI-Host wird
kohärent IPv4-only betrieben. host_baseline verwaltet
/etc/sysctl.d/99-ghostnet-disable-ipv6.conf (all+default), wendet es bei
Änderung an und verifiziert den Laufzeitwert. Anlass: hängender get_url-
Download durch AAAA-Antworten ohne nutzbare IPv6-Route (Messungen im
Dokument; Pi-hole filtert AAAA nicht, der Host nutzt Pi-hole nicht).

model_store nach Live-Befunden: Swift-Repin auf Repository-Revision
98a6100 (alte Revision entfernt, Datei laut Herausgeber-SHA256SUMS
unverändert; GNAI-010 v0.5) und Download über wget -4 mit expliziter
SHA-256-Verifikation vor dem atomaren Move.

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-11-01 17:32:17 +01:00
spektr d53b2400c9 LLM-Server: llm/ansible für Check-Modus und ansible-core 2.21 fit gemacht
Nach Live-Check-Modus gegen ghostnet-ki (ok=23, changed=4, failed=0):
- Freiraumprüfung auf existierendes Elternelement (df schlägt im Check-Modus
  auf dem noch nicht angelegten Store fehl)
- Rechte-Durchsetzung nur über vorhandene Artefakte (file-Modul im Check-Modus)
- assert ohne loop (2.21 lehnt loop auf assert ab); statische Meldungen,
  Modell-Anwesenheit im Check-Modus nur informell
- find file_type=any für Character-Devices (renderD*)
- README: Aufruf mit --private-key nach Workstation-Konvention

Preview prognostiziert korrekt: 2 Modellverzeichnisse, 2 SOURCE.yml,
Netz-Quadlet, 2 Container-Quadlets; gepinntes ROCm-Image bereits im Store.

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-11-01 17:31:45 +01:00
spektr 7af72785c9 LLM-Server: M2-Vertical-Slice - llm/ansible-Projekt mit model_store und inference_engine
Neues Kontrollprojekt llm-server/llm/ansible (GNAI-008 7.4, GNAI-010):
- Inventar testing (ansible-deploy), Playbook ai.yml
- Rolle model_store: gepinnte Modellartefakte (Swift/Unsloth Q6_K, Revision
  und SHA-256 nach GNAI-010 3.2/3.3), atomare Downloads mit Prüfsummen,
  70-GiB-Freiraumreserve, SOURCE.yml-Herkunftsnachweis je Verzeichnis
- Rolle inference_engine: gepinntes ROCm-Image per Digest, internes
  Quadlet-Netz (Internal=true), zwei gegenseitig ausgeschlossene
  llama-server-Quadlets (Conflicts/Before nach GNAI-010 5.3), 64k-Bring-up-
  Override, Generator-Dry-Run, exklusiver Profilwechsel, Health- und
  Alias-Verifikation; kein Host-Port, kein default.target-Enable
- Syntax-Check und Template-Render-Verifikation bestanden; Live-Check-Modus
  steht aus (KI-Server aktuell ausgeschaltet)

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-11-01 17:31:45 +01:00
spektr f4aef4413b GNAI-008 v0.18: Deployment-Plan überarbeitet (drei Umgebungen, Model-Store, CI/CD-Scope)
Betreiberentscheidungen 31.10.2026: Umgebungen Production, Testing und
Experimental mit exklusivem GPU-Scheduling; Umschaltoperation
ai_environment_switch für kurze Downtimes mit kommunizierten Zeitfenstern;
Wartungsseite oder transparenter Endpunktwechsel für nutzerseitige Dienste;
model_store als Kernrolle für gepinnte Weights in /var/lib/ghostnet-ai/shared;
verallgemeinerte inference_engine-Rolle; Gitea-Actions-Kette mit Runner-Scope
Experimental/Testing und Production ausschließlich über Promotion-Tag;
Strata als erster Experimental-Kandidat (Abschnitt 7.6) mit gfx1030-Vorbehalten.

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-11-01 17:31:45 +01:00
spektr 4098dfac0b LLM-Server: Betreiber-Recherchen zu lokalen Stack-Trends 2026 aufgenommen
Rechercheberichte zu Qwen3.8-Familie, Flash-Next, Strata-Engine (Niko1221),
MTP/n-gram Speculative Decoding und RDNA2-Backends; Grundlage für
GNAI-008 Abschnitt 7.6 und die kommende Experimental-Umgebung.

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-11-01 17:31:45 +01:00
spektr 06fcb26ced CT-103/CT-105: lesenden Infrastruktur-Audit 31.10.2026 dokumentiert (M2-Vorbereitung)
GNAI-006 v2.9: Audit-Abschnitt 2.4 (Dienste, Pins, Firewall-Verhaltenstests,
TLS, DNS/Exposure, Keycloak-Pfade); keine Abweichung vom abgenommenen Zustand;
Fail2Ban-Funktionsabnahme bleibt offen.
GNAI-007 v2.5 + Implementation-Log v2.6: Audit-Abschnitt 10 (Rollenpolicy,
Legacy-Freiheit, Repo-Abgleich der Firewall, Peerbestand, DynDNS, IPv6);
O2/O7 mit Teilnachweisen nachgezogen.

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-11-01 17:31:45 +01:00
spektr 69930f815a Encoding: Pipeline-Konten, NFS-Mount, Layout und Handover-Simulation umgesetzt und verifiziert.
- workload_accounts: gn-media (GID 970), gn-download (983), gn-dashboard (984);
  gn-media als primäre Gruppe der Pipeline-Konten — AUTH_SYS ueber NFSv4 wirkte
  serverseitig nicht mit Supplementary-Gruppen (Betriebsbefund 30.10.2026);
  Sudoers des Deploy-Kontos auf (ALL:ALL) verbreitert (become_user)
- video_encoding: NFS-Client, Mount-Unit und Pipeline-Layout auf dem Export
  (10.0.0.2:/media/datenhdd3/Encoding -> /var/lib/ghostnet-pipeline, ausserhalb
  der Homes); Layout-Anlage als Dienstkonten wegen root_squash; Verifikation
  der Verzeichnisrechte als gn-encoding (2777/2770/0750/2750, Gruppe 970)
- pve_media_cron: Legacy-Crontab (chown root:root + chmod -R 0777 auf allen
  Medienplatten, alle 10 min) entfernt — haette jedes echte Berechtigungsmodell
  plattgewalzt; Backup unter /var/backups/ghostnet/pve/; verify-production
  prueft das Fehlen ab
- verify-pipeline-handover.yml: Handover-Simulation über alle Identitaeten
  (CT-101-.dlc-Drop -> gn-download -> queue -> gn-encoding -> output/state ->
  gn-dashboard); einmal vollstaendig bestanden (30.10.2026)
- Doku: GNENC-000/001/002, GNAI-017 (6.10/6.11), GNMON-001 auf Stand gebracht

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-10-30 20:47:42 +01:00
spektr 88b063a234 Encoding/CT-101: PVE-Host-NFS konvergiert, Berechtigungsmodell entschieden, Verifikation dokumentiert.
- pve_nfs_export: NFSv4-only via /etc/nfs.conf ([nfsd] vers2/vers3=n; Debian-13-Unit
  startet nfsd ohne EnvironmentFile, RPCNFSDARGS wirkungslos), Restart-Handler,
  selbstheilende nfsd-Versionspruefung; verify-production um Export-Root- und
  Versions-Assertions erweitert
- Autorisierte Konvergenz auf dem PVE-Host: Export-Root 100000:970 2775,
  /proc/fs/nfsd/versions -3 +4 +4.1 +4.2, verify ok=17 changed=0, Idempotenz changed=0
- Berechtigungsmodell (Betreiberentscheidung 30.10.2026): Mode 2777 auf input/- und
  output/-Baum der Pipeline (LXC-idmap-Diskrepanz guest-root vs. UID 982/983:970)
- GNENC-000/001/002, GNAI-017/018/019 auf NFS-auf-PVE-Host-Stand gebracht;
  CT-101-Verifikation ok=47 changed=0 dokumentiert; AGENTS.md-Seccomp-Hinweis korrigiert

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-10-30 19:54:42 +01:00
spektr 6a1eff7392 CT-101 Samba + PVE-Host: NFS auf den Host verlagert, Host per Ansible verwaltet
- CT 101 kennt NFS nicht mehr: samba_nfs-Rolle und Ganesha-Artefakte entfernt,
  kein Podman, keine 2049-Firewall-Regel, kein seccomp-Sondereintrag; live
  restlos bereinigt und deckungsgleich mit dem Playbook (verify ok=47,
  Idempotenz changed=0). Dafür neue SMB-Freigabe [Encoding] (Export-Root) für
  die Kontrolle von anderen Geräten als ghostnet-ki.
- Grund: Weder kernel-nfsd noch Ganesha (VFS-FSAL) laufen in einem
  unprivileged LXC — open_by_handle_at braucht CAP_DAC_READ_SEARCH in der
  init-userns und liefert dort immer EPERM (verifiziert auf Kernel
  7.0.14-14-pve; Web-Recherche: NFS direkt auf dem PVE-Host ist gängige Praxis
  und anerkannte Ausnahme vom Host-Grundsatz).
- Neuer Account ansible-deploy (UID 1001) auf dem PVE-Host 10.0.0.2 nach
  LXC-Muster: gelocktes Passwort, source-restrictierter passphrase-loser Key
  (nur pub im Repo), NOPASSWD-Sudoers; Host-Key-Fingerprint verifiziert.
- Neues Host-Projekt proxmox/pve-host/ansible (Schema wie die CT-Projekte):
  preflight/site.yml/verify-production + Rollen pve_nfs_export (Kernel-NFS,
  /etc/exports nur 10.0.0.90/32, NFSv4-only, Export-Root 100000:970 2775,
  nft 2049 nur von 10.0.0.90) und pve_lxc_conf (seccomp-Leerzeile aus
  101.conf entfernt). Auf dem Host grün: check changed=0, verify ok=15,
  Idempotenz changed=0.
- Abnahme bestanden: NFSv4.2-Mount von ghostnet-ki gegen
  10.0.0.2:/media/datenhdd3/Encoding (Export-Root 100000:970 2775 sichtbar),
  sauberer Unmount. CT 101 nach Reboot: Seccomp 2, keine failed units, 17
  Shares, 10 CIFS-Mounts der Workstation hängen.
- Doku aktualisiert: GNAI-017 §4.1 und GNAI-019 E2/E3/§15 revidiert,
  Bereichsindex ergänzt, READMEs angepasst; PVE-Lifecycle-Skripte ohne
  seccomp-Ausnahme (Hashes aktualisiert).

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-10-30 18:49:10 +01:00
spektr 2753677c7c CT-101 Samba: ganesha 6.5 Client-Allowlist per CLIENT-Block (vor EXPORT)
- Mount von ghostnet-ki schlug mit EPERM fehl: Export hatte "0 defined
  clients" (kein clients-Parameter -> Zugriffspruefung schlaegt fehl)
- Ganesha 6.5: CLIENT-Block mit kleingeschriebenem `clients`, Block MUSS vor
  dem EXPORT stehen (Parser ist reihenfolgeempfindlich); gegen den 6.5-Parser
  verifiziert. EXPORT auf Access_Type = None (deny-by-default), CLIENT gewaehrt
  10.0.0.90 RW; nftables deckelt zusaetzlich auf 2049 nur von 10.0.0.90

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-10-30 16:36:59 +01:00
spektr d3b79d9245 CT-101 Samba: ganesha.conf für Ganesha 6.5 im unprivileged LXC korrigieren
- Allow_Set_IO_Flusher_Fail = true: PR_SET_IO_FLUSHER braucht CAP_SYS_ADMIN
  in der init-userns (im Guest nicht vorhanden) und war FATAL
- NFSv4 RecoveryRoot = /var/lib/nfs-ganesha (rw-State-Volume des Quadlets);
  der Default /var/lib/nfs/ganesha ist im ReadOnly-Container nicht schreibbar
- AccessType -> Access_Type (Ganesha 6.5, sonst "Unknown parameter")
- per-export Client-Liste entfernt: Clients/clients/CLIENT-Block werden vom
  6.5-Parser abgelehnt; die Client-Beschränkung (nur 10.0.0.90) wird durch
  die nftables-Policy durchgesetzt (2049 nur von 10.0.0.90, default drop)
- im Image verifiziert: strict parse (-x) clean, Listener auf *:2049 OK

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-10-30 15:33:32 +01:00
spektr 0979f62ae2 CT-101 Samba: Ganesha-Pidfile im ReadOnly-Container fixen (-p /run/ganesha.pid)
- ganesha.nfsd startete im Quadlet-Container nicht: FATAL open(
  /var/run/ganesha/ganesha.pid) ENOENT — /run ist im Container eine leere
  rw-Tmpfs (ReadOnly=true), das Default-Pidfile-Verzeichnis existiert nicht
- Fix: -p /run/ganesha.pid in der Containerfile-CMD (CLI-Option, per
  ganesha.nfsd -p im Image verifiziert); /run selbst ist rw und existiert
- Containerfile-Checksum neu gepinnt (54cf9cae..., 2026-10-30) in
  samba_nfs-Default und allen drei Inventaren; Image wird beim nächsten
  Lauf automatisch neu gebaut (Label-Vergleich)

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-10-30 15:21:35 +01:00
spektr f77d973b22 CT-101 Samba: Check-Mode-Guards und self-contained Inventory für site.yml
- group_vars spiegelt samba_smb_config_file/passdb_file sowie
  samba_access_admin_user/ssh_dropin, damit backup.yml/verify-production.yml
  ohne geladene Rolle laufen (CT-100/102-Konvention); alle drei Inventare
  byte-identisch
- samba_lxc_baseline: unattended-upgrades.service nach dem apt-Install
  enable+starten, Task mit when: not ansible_check_mode
- samba_nfs: artifact_source_root auf playbook_dir/../.. korrigiert
  (Artifacts liegen in ct-101-samba/, nicht in ansible/); gn-media-Probe mit
  failed_when: false und Assert-Guard für den ersten Check-Mode-Lauf;
  Ganesha-Restart-Handler mit when: not ansible_check_mode
- site.yml --check --diff gegen CT 101 grün: ok=100 changed=20 failed=0

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-10-30 15:12:58 +01:00
spektr 191333b16d CT-101 Samba: ghost-Key-Rotation und Audit-Fixes (pdbedit-Pfad, passdb-Subset, is-active-Probes)
- ghost-Workstation-Key rotiert (Passphrase nicht mehr erinnerlich): neues
  Paar id_ed25519_ghostnet_ct101_ghost, samba-ghost.pub aktualisiert und auf
  CT 101 installiert; GNAI-017 Befund (f) dokumentiert die Rotation
  29.10.2026; altes Paar lokal gelöscht
- pdbedit-Pfad korrigiert: /usr/sbin/pdbedit -> /usr/bin/pdbedit (Debian),
  5 Stellen in audit-production/backup/verify-production/samba_smb
- passdb-Subset-Asserts parsen user:uid:gecos jetzt korrekt per
  regex_replace (audit/verify/samba_smb)
- is-active-Leseproben mit failed_when: false, damit die Asserts die
  klaren Fehlermeldungen liefern (audit/preflight/verify/samba_smb)
- samba_lxc_baseline enabled+startet unattended-upgrades.service nach dem
  Paket-Install (CT-100/102-Konvention), README ergänzt

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-10-29 19:11:57 +01:00
spektr 6b6e4fce6f CT-101 Samba: dark2devil-Cleanup dokumentiert (erledigt 28.10.2026)
- GNAI-017/GNAI-019: Cleanup als erledigt markiert (smbpasswd -x dark2devil
  + userdel -r; passdb danach nur noch ghost/daidalaw/debugofen; Konto war
  gelockt, Shell /bin/false, keine Dateien außerhalb des Home)
- Inventar-Kommentare aktualisiert (UID 1002 wieder frei; ansible-deploy-UID
  1005 erlaeutert); alle drei Inventare byte-identisch
- samba_access-Kommentar angepasst (dark2devil nicht mehr unter den
  produktiven Accounts)

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-10-29 16:57:06 +01:00
spektr 8b21797502 CT-101 Samba: dark2devil-Korrektur, ACL-Abgleich und AGENTS.md-Grundwissen
- dark2devil (UID 1002) aus der gesamten deklarierten State entfernt:
  derselbe Benutzer wie debugofen (Betreiberklärung 2026-10-28); GNAI-019
  Entscheidung 11 revidiert, gn-media-Mitgliedschaft nur ghost
- Share-ACLs im Inventar an die live smb.conf angeglichen (GNAI-018 R4):
  admin users auf elf Shares ergänzt, write list Dokumente/Extern ergänzt,
  Serien2 ohne force user/group; Template [printers] um browseable=no ergänzt
- passdb-Asserts und Audit-Loops auf die drei deklarierten Medien-User
  umgestellt; Platzhalterzahl 11; provision-Script-Hash aktualisiert
- AGENTS.md (Repo-Root) um Grundwissen für Agenten ergänzt:
  ghost-agent-Convention, Account-Landscape/Inventory-Pfade,
  Operator-Run-Steps, LXC-Konventionen, Repo-Konventionen

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-10-28 16:30:33 +01:00
spektrandMistral Vibe 61f2158508 LLM-Server: Encoding-Pipeline (GNENC-002) und Monitoring-Dokumentation (GNMON) aufgenommen; Bereichsindizes aktualisiert
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-10-26 19:20:36 +01:00
spektr 9b3b54bd99 CT-100 DNS: Lookup-Pfade in audit-production.yml und verify-production.yml korrigiert
- 5 template/file-Lookups verwendeten relative Pfade (roles/..., files/...),
  die sich aus playbooks/ nicht auflösen; auf playbook_dir ~ '/../...' umgestellt
- dns_pihole_container_name, dns_pihole_data_directory und dns_pihole_quadlet_path
  aus den Rollen-Defaults in alle 3 Inventories gespiegelt (self-contained inventory)
- Verifiziert: gerendertes Quadlet byte-identisch mit Live-Datei, nftables weicht
  nur um die Managed-Kennung ab, 18/18 Syntax-Checks

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-10-26 19:20:36 +01:00
spektr 220d921e09 CT-101 Samba: Ansible-Migration (GNAI-017/018/019) mit PVE-Skripten, Runbooks und Fresh-State-Rebuild aufgenommen
- Ansible-Projekt proxmox/lxc/ct-101-samba/ansible: 7 Playbooks, 6 Rollen,
  3 Inventories (agent/bootstrap/production), 11 fail-closed Platzhalter
- Design GNAI-019: Samba nativ (templated smb.conf mit testparm-Gate),
  NFS-Ganesha als rootful Quadlet mit Host-Networking und leerem
  lxc.seccomp.profile, NFSv4-only, gn-media GID 970, passdb-Erhalt
- PVE-Skripte: upgrade-ct101-to-debian13.sh (Adoption),
  provision-ct101-samba.sh (Fresh-State-Rebuild), sha256-gepinnt
- Runbooks: Adoption (15 Schritte) und Fresh-State-Rebuild (9 Schritte)
- Dokumentation: GNAI-019 (DEC), GNAI-017 aktualisiert, Index-Einträge;
  Befund Dist-Upgrade 21.10.2026: smb.conf-Verlust aus vzdump-Backup
  wiederhergestellt und verifiziert
- Secrets (SMB-Passwörter, passdb, private Schlüssel) nicht im Repository

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-10-26 19:20:36 +01:00
spektr 26fb86781f Encoding: Profile, Queue-, Aufbewahrungs- und Dashboard-Entscheidungen dokumentiert.
Drei HandBrake-Presets (SVT-AV1 10-bit, MKV, Audio-Passthrough) versioniert
unter llm-server/encoding/profiles/; Profilwahl ueber gleichnamige Ordner
unter input/. Gemeinsamer NFS-Mount mit input/- und output/-Unterverzeichnissen.
Input-Loeschung nach Encoding und Validierung, Output bis Abholung, work/ pro
Lauf. Dashboard-Endpunkte fuer Fortschritt und Ressourcen als Statusanzeige.
Eigene Programme liegen kuenftig unter llm-server/encoding/scripts/.
GNENC-000/001 aktualisiert.

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-10-19 15:22:31 +02:00
spektr aa5b37a191 Encoding: Betreiberentscheidungen zu Encoder, Zeitfenster, Abbruch und Ein-/Ausgabe dokumentiert; HandBrake-Image gepinnt.
HandBrake linuxserver/handbrake:1.11.2-ls48 mit amd64-Manifest-Digest
sha256:fda92bd1...48a3c7 gepinnt und per Pull im rootless Store von
gn-encoding verifiziert. Zeitfenster 00:00-06:00 Uhr Europe/Berlin mit
geordnetem Stopp und naechtlichem Retry; NFS-Mounts fuer Ein- und Ausgabe.
GNENC-000/001 aktualisiert.

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-10-19 15:06:57 +02:00
spektr ba7d829410 Encoding: Ansible-Projekt und Grundzustand für gn-encoding eingerichtet und verifiziert.
llm-server/encoding/ansible/ verwaltet mit video-encoding.yml und der Rolle
video_encoding den CPU-Only-Grundzustand des gesperrten Kontos gn-encoding
(UID/GID 982): Konto-Identität und Passwortsperre, subordinate ID-Bereiche,
Verzeichnisstruktur, Quadlet-Verzeichnis, Linger, getrennter rootless
Podman-Store sowie verwehrter GPU-Zugriff (keine render/video-Gruppe, kein
Lesezugriff auf /dev/kfd oder DRM-Render-Nodes). Ohne beschlossene
Encoder-Entscheidungen stellt die Rolle sicher, dass kein Workload definiert
ist. Check-Mode und zwei Läufe auf ghostnet-ki: jeweils ok=30 changed=0
failed=0. Preflight, host.yml (2x ok=55 changed=0) und ROCm-Probe
(ok=33 changed=0) nach der Projekt-Aufteilung erneut bestanden.
GNENC-000/001, GNAI-000 und GNAI-013 aktualisiert.

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-10-19 14:42:14 +02:00
spektr 92c846f527 LLM-Server: ausführbares Projekt in die Hauptverzeichnisse host/, llm/ und encoding/ aufgeteilt.
Grundkonfiguration des Servers liegt nun unter llm-server/host/ansible/
(vorher llm-server/ansible/), der LLM-Stack-Platzhalter unter llm-server/llm/
und der Encoding-Workload unter llm-server/encoding/. Dokumentation und
Pfadverweise (ansible.cfg roles_path, .venv-Tiefe, Markdown-Links) angepasst;
Linkvalidator meldet broken_local_links=0.

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-10-19 14:42:14 +02:00
spektr 82af4e9235 CT-100 DNS: Migration nach Ansible abgeschlossen. 2026-10-19 12:34:36 +02:00
spektr 00ed091890 CT-102 Keycloak: Migration nach Podman und Ansible abgeschlossen und gehärtet. 2026-10-14 15:01:14 +02:00
spektr b40f726d22 Add: DNS über Pi-Hole LXC. Härtung von CT-105 Wireguard. 2026-10-05 17:45:38 +02:00
spektr 0758813e63 CT-103 SSH Migration abgeschlossen und dokumentiert. 2026-09-24 17:34:33 +02:00
spektr 03a284c66e Sicherheitsarchitektur überprüft. CT-103 SSH login aktualisiert. 2026-09-22 20:27:42 +02:00
spektr 53c5970c60 Projektrestrukturierung und Aufräumen. 2026-09-22 15:07:16 +02:00
spektr e9815adf25 GNAI-008: Planung für LLM-Auswahl und Parameter. 2026-09-21 15:23:08 +02:00
spektr 83668557e5 GNAI-007: ROCm-Probelauf hinzugefügt. 2026-09-21 12:40:17 +02:00
spektr 2f2dbc3252 GNAI007: Render- und GPU-Rechte den beiden KI-Konten hinzugefügt. 2026-09-20 22:38:44 +02:00
spektr bf7431d672 Ghost.net AI Struktur um Encoding erweitert. 2026-09-20 01:04:13 +02:00
spektr 2a2bd2326d GNAI-007: Ansible Rolle zum Installieren von Podman hinzugefügt. 2026-09-20 00:15:28 +02:00
spektr de06eb6129 GNAI-007: Basisfunktionen für Ansible erstellt. 2026-09-19 23:20:35 +02:00
spektr 7d1a3228ef Dokumente vereinheitlicht. 2026-09-19 15:55:58 +02:00
spektr 35bca033a6 GNAI-006: wg-easy-UI-Passwort rotiert 2026-09-19 15:54:37 +02:00
spektr 5dd24aa8e5 GNAI-006: Client-Einrichtungsdocs Linux/KDE + Windows 11 (wg-easy-Profil, Verifikation, Fehlersuche) 2026-09-19 15:54:23 +02:00
spektr ca5673aad5 GNAI-006: DNS Step 6 ok (Wildcard-DynDNS + Redundanz-A-Record, Auflösung verifiziert) 2026-09-19 15:54:17 +02:00
spektr 75a470f74a GNAI-006: Fritzbox ok; DNS-Korrektur (A-Record beim Domain-DNS-Anbieter, nicht NPM); WAN-IP verifiziert 2026-09-19 15:54:04 +02:00
spektr 8a81f92ac1 GNAI-006: WG_ALLOWED_IPS Split-Tunnel Befund + Konfig gesetzt (Android /32-Limitierung, Step 8 aufgeteilt) 2026-09-19 15:53:25 +02:00
spektr 5a5f7aca40 GNAI-006: VPN LXC 105 Umsetzung dokumentiert (nftables, Quadlet, Peers) + Draft-Korrekturen
- Hostname 'wireguard' (statt wireguard-gateway)
- Testmatrix auf 'Ausstehend' (Mobilfunk-Tests noch nicht gelaufen)
- PASSWORD_FORMAT: bcrypt (wg-easy/bcryptjs), nicht Argon2
- Quadlet via EnvironmentFile= (bcrypt hBcChars)
- nftables-Konfig + ip_forward dokumentiert
- wg-easy API-Referenz + allowedIPs-Limitation (Implementation-Log)
- Offene Punkte: Fritzbox-Forward, NPM-Subdomain, Split-Tunnel-Verifikation, Pentest
2026-09-19 15:52:33 +02:00
spektr a42cacd5b5 Add: Reverse Proxy specification. 2026-09-07 16:08:12 +02:00
spektr 8c581330b3 Initial commit 2026-08-28 18:54:45 +02:00