Commit Graph

49 Commits

Author SHA1 Message Date
Micha cd650b19ac Close Gitea signup, dedup posture-check alerts, extend Borg scope
Operational hardening across several services after live incident
analysis between 2026-05-18 and 2026-05-20:

- Gitea: disable public registration and OpenID signup/signin to
  stop the external POST / 5xx bursts that triggered availability
  alerts. New repo-wide policy requires every productive
  Micha/homelab-infra Komodo stack to ship with an active
  Gitea->Komodo webhook on the current stack ID (documented in
  CLAUDE.md, AI_CONTEXT.md, WORKFLOW.md).
- posture-check: extract the Disk1 fstype check into its own
  function so the documented Disk1 NTFS exception no longer raises
  ntfy warnings, skip POSIX inode checks on NTFS, and dedup ntfy
  alerts via a fingerprint state file with ALERT_REPEAT_SECONDS
  (default 24h). Repeat-spam on the same cause now suppressed.
- docker-critical-events: parse the event JSON for container name,
  action, exit code and signal; drop `die exit=0` events (clean
  stops); ship a structured ntfy message instead of the raw event
  line.
- Borg UI: mount /mnt/user/services into the backup container as
  /local/services:ro and include homelab-infra, stacks and
  posture-check in all-important-sources.txt. RESTORE_MATRIX and
  DISASTER_RECOVERY updated accordingly.
- Unraid user scripts: document the new
  homelab-operations-report-daily cron job and the SMTP password
  file it expects on the host.
- MIGRATION_LOG: capture the four live events from this window -
  Gitea 5xx burst + signup closure, Komodo webhook reconciliation,
  posture-check host-version verification, Borg scope extension,
  and Traefik 5xx alert detuning.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 11:05:35 +02:00
Micha 59bec9ac77 Fix Glance live widget data sources 2026-05-18 09:35:53 +02:00
Micha 9f86da708a Add Glance live network widgets 2026-05-18 08:31:57 +02:00
Micha d6170211c4 Refine Glance network widgets 2026-05-18 08:13:13 +02:00
Micha fb681086f3 Restyle Glance dashboard layout 2026-05-18 08:03:59 +02:00
Micha 5b101f3b3d Keep only verified Glance community widget 2026-05-17 18:20:56 +02:00
Micha 2dd5590a2a Polish Glance community widgets 2026-05-17 18:16:05 +02:00
Micha 175cd6951f Add Glance community homelab widgets 2026-05-17 18:07:57 +02:00
Micha aeb7573b03 Remove noisy Glance dashboard widgets 2026-05-17 17:08:10 +02:00
Micha 215f44b962 Fix Glance monitor health checks 2026-05-17 17:05:23 +02:00
Micha c3c8060ddf Add Glance homelab dashboard stack 2026-05-17 16:51:43 +02:00
Micha b7dfdad621 Consolidate monitoring target stack 2026-05-17 10:41:29 +02:00
Micha 878ad2d5f1 Harden backup and posture checks 2026-05-16 13:04:22 +02:00
Micha 2cc39c73f6 Add validated Paperless restore test pattern 2026-05-07 11:01:27 +02:00
Micha d351b1cac8 Add validated Gitea restore test pattern 2026-05-07 10:00:58 +02:00
Micha df4d335907 Document validated Vaultwarden restore pattern 2026-05-07 09:39:29 +02:00
Micha e0e12f1173 Document stale Komodo webhook cleanup 2026-05-06 18:55:56 +02:00
Micha 403b5fa77c Clarify Komodo webhook secret handling 2026-05-06 18:53:47 +02:00
Micha 9b4d37ca81 Split Komodo webhook secret 2026-05-06 18:50:14 +02:00
Micha 014e51fd67 Configure Authelia GMX SMTP notifier 2026-05-06 18:41:24 +02:00
Micha f94a55e093 Protect mail archiver and document Hermes restore 2026-05-06 18:23:01 +02:00
Micha bdba76cebc Clean up compose metadata and placeholders 2026-05-05 20:16:48 +02:00
Micha 78b9a6e362 Pin versioned app image digests 2026-05-05 20:13:49 +02:00
Micha 374a3198ed Document ops exceptions and Hermes route 2026-05-05 19:42:42 +02:00
Micha 986d8dd3f5 Pin stateful service image digests 2026-05-05 19:33:28 +02:00
Micha d6e686ae80 Document Authelia host ACL merge 2026-05-04 20:27:07 +02:00
Micha b1fbb310fb Document Komodo self-stack drift recovery 2026-05-04 20:21:23 +02:00
Micha 821fe99807 Document GitOps drift recovery and InfluxDB LAN access 2026-05-04 15:23:49 +02:00
Micha 2f7b1a0aa2 Prepare Home Assistant weather export to InfluxDB
Prepare Home Assistant weather export to InfluxDB
2026-05-04 13:29:06 +02:00
Micha c736aadf1e Use file secret for Grafana InfluxDB token
Use file secret for Grafana InfluxDB token
2026-04-30 11:27:06 +02:00
Micha 8a43914d05 Prepare BentoPDF and Grafana InfluxDB stacks
Prepare BentoPDF and Grafana InfluxDB stacks
2026-04-30 10:29:53 +02:00
Micha fbdb017c08 Add Nextcloud and Stirling PDF with repo-aligned networking and docs
Add Nextcloud and Stirling PDF with repo-aligned networking and docs
2026-04-19 20:16:13 +02:00
Micha 054e674d55 update
update
2026-04-19 18:42:56 +02:00
Micha f7927b95f4 update
update
2026-04-19 14:38:58 +02:00
Micha 57ddb56ec9 repair
repair
2026-04-19 10:18:12 +02:00
Micha 0648201f79 gpt repair
gpt repair
2026-04-19 10:07:12 +02:00
Micha fc2793f2b8 korrektur
korrektur
2026-04-19 09:58:50 +02:00
Micha 317c56b8de recovery
recovery plan
2026-04-18 10:05:53 +02:00
Micha 0e68ce489f Erklärung Paperless
Paperless Erklärung
2026-04-17 13:15:20 +02:00
Micha 85a8d0c2f2 Protect Traefik dashboard with Authelia
Protect Traefik dashboard with Authelia
2026-04-17 13:11:43 +02:00
Micha 718305cb98 Update Doku
Update Docu
2026-04-17 11:29:38 +02:00
Micha bbdf2ffb60 updates
Repo sauber machen
2026-04-15 13:40:03 +02:00
Micha 96984ca0de Finish merge and update borg-ui backup mounts 2026-04-12 17:49:44 +02:00
Micha 681ea211ce docs/MIGRATION_LOG.md aktualisiert 2026-03-28 19:45:17 +00:00
Micha 73137b78d9 Migration Log – 2026-03-25
# 🗓️ Migration Log – 2026-03-25

## 🔧 Ziel der Session

* Bereinigung und Härtung der bestehenden Container-Architektur
* Umstellung auf Git-basierte Stacks (Gitea + Portainer)
* Entfernung unnötiger Angriffsflächen (Ports, bridge-Netzwerke)

---

## 🔐 Vaultwarden – Finalisierung

### Änderungen

* Migration auf `frontend_net`
* Entfernung von Host-Port
* Integration über Traefik (`vault.kaleschke.info`)
* Nutzung von `ADMIN_TOKEN_FILE` statt Klartext
* Entfernung alter `config.json`

### Ergebnis

* sauberer, sicherer Betrieb
* keine Secrets im Klartext
* reproduzierbar über Git

---

## 🗄️ PostgreSQL (postgresql17) – Migration

### Ausgangszustand

* lief als Einzelcontainer
* im `bridge` Netzwerk
* Port `5432` öffentlich
* Passwort im Klartext sichtbar

### Änderungen

* Migration in Git-Stack (`infra/postgresql17`)
* Entfernung von Port-Binding (`5432`)
* nur noch im `backend_net`
* Einführung von Secret-Datei (`POSTGRES_PASSWORD_FILE`)
* Restart-Policy auf `unless-stopped`

### Vorgehen

1. Backup via `pg_dumpall`
2. Zustand via `docker inspect` gesichert
3. Container gestoppt & entfernt
4. neuer Stack über Gitea deployed
5. Funktion geprüft (DB + abhängige Services)

### Ergebnis

* Daten unverändert erhalten
* kein externer Zugriff mehr möglich
* zentrale DB für:

  * mail-archiver
  * paperless-ngx

---

## 🍽️ Mealie – Neuaufbau

### Ausgangszustand

* Zugriff über Port `9935`
* DB im `frontend_net`
* Klartext-Passwort in Compose
* kein Traefik

### Änderungen

#### Architektur

* Einführung von `mealie_internal` Netzwerk
* `mealie-postgres` nur noch intern erreichbar
* `mealie` in:

  * `frontend_net` (Traefik)
  * `mealie_internal` (DB)

#### Zugriff

* Entfernung von Port `9935`
* Integration über Traefik (`mealie.kaleschke.info`)

#### Secrets

* Entfernung von Klartext-Passwort aus Compose
* Nutzung von Portainer Environment Variable:

  * `MEALIE_DB_PASSWORD`

### Besonderheit

* `env_file` mit Host-Pfad funktionierte nicht
* Ursache: Portainer Git-Stacks haben keinen Zugriff auf `/mnt/...`

### Lösung

* Secrets über Portainer UI verwaltet
* Compose nutzt `${MEALIE_DB_PASSWORD}`

### Ergebnis

* saubere Trennung von App und DB
* keine offenen Ports
* Git-Repo ohne Secrets

---

## 🔁 DIUN

### Änderungen

* Integration ins `frontend_net`
* Nutzung von Container-Namen für Gotify

---

## ⚠️ Wichtige Learnings

### Portainer + Git + env_file

* Host-Pfade (`/mnt/...`) sind nicht erreichbar
* `env_file` daher ungeeignet

👉 Lösung:

* Nutzung von Portainer Environment Variables

---

### `_FILE` Support ist nicht universell

* Vaultwarden → unterstützt `_FILE`
* PostgreSQL → unterstützt `_FILE`
* Mealie → unterstützt `_FILE` **nicht**

---

### Migration ohne Risiko

* Daten liegen immer im Volume
* Container können jederzeit neu gebaut werden
* Backup + Inspect vor Änderung ist Pflicht

---

## 🏁 Fazit

Alle kritischen Services wurden erfolgreich:

* abgesichert
* strukturiert
* in Git überführt

👉 System ist jetzt:

* reproduzierbar
* deutlich sicherer
* architektonisch sauber
2026-03-25 19:13:35 +00:00
Micha 5027422629 docs/MIGRATION_LOG.md aktualisiert 2026-03-25 19:07:03 +00:00
Micha acabbd68a0 docs/MIGRATION_LOG.md aktualisiert
### Vaultwarden – Details

- Migration auf GitOps (Gitea + Portainer) erfolgreich
- Direkter Host-Port (4743) entfernt
- Traefik Routing via Docker Labels
- ADMIN_TOKEN von ENV auf File-Secret umgestellt
- Konflikt mit alter Traefik File-Config behoben (vaultwarden.yml deaktiviert)
2026-03-23 18:35:36 +00:00
Micha 7a7df8f12c docs/MIGRATION_LOG.md aktualisiert 2026-03-23 17:04:23 +00:00
Micha 69477e512b Add full homelab structure 2026-03-23 17:54:57 +01:00