From cbe24c03dfa2785f33215431df830906d205dadb Mon Sep 17 00:00:00 2001 From: Michael Wegener Date: Sun, 12 Jul 2026 13:10:21 +0200 Subject: [PATCH] docs: add platform/packages/onlyoffice.docs localhost sites + cert regen to Caddy docs - Added platform.localhost (-> localhost:10080) and packages.localhost (-> localhost:20080) to stack.md sites table (total now 17) - Documented onlyoffice.docs.localhost (pre-existing in Caddy config, was undocumented) - Regenerated mkcert cert with explicit SANs for the 3 new hostnames (onlyoffice.docs.localhost is multi-label, not covered by *.localhost wildcard) - Fixed wildcard note: multi-label hosts require explicit SANs - Updated manual-overrides with cert regeneration row + site delta - Updated CHANGELOG with cert regen + site additions --- CHANGELOG.md | 2 ++ docs/tech/manual-overrides.md | 4 +++- docs/tech/stack.md | 15 +++++++++------ 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c61c76a..24c4f44 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Identified failed `archlinux-keyring-wkd-sync.service` in system health check. ### Added +- Regenerated mkcert cert at `/etc/caddy/localhost{,-key}.pem` to add explicit SANs for `platform.localhost`, `packages.localhost`, and `onlyoffice.docs.localhost` (pre-existing in Caddy config but missing from cert, causing TLS validation failures). Cert now has 19 SANs, valid until 2028-10-12 (2026-07-12). +- Added `platform.localhost` (-> `localhost:10080`, amicron-platform Docker) and `packages.localhost` (-> `localhost:20080`, satis Docker) to `/etc/caddy/conf.d/localhost-dev.conf`. Docker port mappings updated: `~/internal/amicron-platform/docker-compose.override.yml` `10080:80`, `~/internal/satis/docker-compose.yml` nginx `20080:80`. Both upstreams plain HTTP on high ports; Caddy terminates TLS. Also documented `onlyoffice.docs.localhost` in `docs/tech/stack.md` (pre-existing in Caddy config, was undocumented). Total `*.localhost` sites now 17. The three form the local E2E test triangle: `platform.localhost` (ERP) -> `packages.localhost` (Satis) -> shared Firebird 3.0.14 database (token validation), mirroring the production `platform.auc.de` + `packages.auc.de` + shared Firebird setup (2026-07-12). - Enabled click-and-drag window movement and resizing under the SUPER modifier, and enabled border dragging to resize tiled windows natively, updating both the Hyprland configuration template and keybindings cheatsheet (2026-07-09). - Documented local dev services in `docs/tech/stack.md`: Caddy (systemd `caddy.service` on port 443) with 14 `*.localhost` sites and mkcert TLS at `/etc/caddy/`. Registered as a manual override in `docs/tech/manual-overrides.md` (no `caddy` Ansible role exists yet) (2026-07-06). - Investigation learning record `docs/learnings/2026-07-06-caddy-onlyoffice-mcp-sse-investigation.md`: Caddy `context canceled` SSE aborts (~1.5ms) on `onlyoffice.localhost/mcp` forwarded to `localhost:3847` (OnlyOffice MCP server). Upstream verified alive (HTTP 406 to plain GET = expected). Handed off to GitLab issue [satware/mcp/onlyoffice#92](https://gitlab.satware.com/satware/mcp/onlyoffice/-/work_items/92) with 5 hypotheses, 7 investigation tasks, and a proposed Caddy `flush_interval -1` + `transport http { versions 1.1 }` mitigation (not applied yet) (2026-07-06). diff --git a/docs/tech/manual-overrides.md b/docs/tech/manual-overrides.md index a1762f9..76d070e 100644 --- a/docs/tech/manual-overrides.md +++ b/docs/tech/manual-overrides.md @@ -6,7 +6,7 @@ tags: - manual-overrides - infrastructure - configuration -last_updated: '2026-07-06' +last_updated: '2026-07-12' --- # Manual System Overrides @@ -22,6 +22,8 @@ This document tracks all persistent system changes implemented manually that are | Date | Change | Rationale | Ansible Status | |------|--------|-----------|----------------| +| 2026-07-12 | Regenerated mkcert cert at `/etc/caddy/localhost{,-key}.pem` to add explicit SANs for `platform.localhost`, `packages.localhost`, and `onlyoffice.docs.localhost` (the latter was pre-existing in Caddy config but missing from the cert, causing TLS validation failures). Cert now has 19 SANs total, valid until 2028-10-12. | `onlyoffice.docs.localhost` is a multi-label subdomain not covered by `*.localhost` wildcard. Required explicit SAN. | Same as parent Caddy row | +| 2026-07-12 | Added `platform.localhost` (-> `localhost:10080`) and `packages.localhost` (-> `localhost:20080`) to `/etc/caddy/conf.d/localhost-dev.conf`. Docker port mappings: `~/internal/amicron-platform/docker-compose.override.yml` `10080:80`, `~/internal/satis/docker-compose.yml` nginx `20080:80`. Both upstreams are plain HTTP on high ports; Caddy terminates TLS. Also documented `onlyoffice.docs.localhost` (pre-existing in config, was undocumented). Total sites now 17. | Local HTTPS dev for amicron-platform (ERP), satis (Composer package repository), and shared Firebird 3.0.14 database. The three form the local E2E test triangle: `platform.localhost` (ERP) -> `packages.localhost` (Satis) -> Firebird (token validation). Mirrors the production `platform.auc.de` + `packages.auc.de` + shared Firebird setup. | Same as parent Caddy row - candidate for Ansible role when issue #92 resolves | | 2026-07-06 | Caddy reverse-proxy + mkcert TLS at `/etc/caddy/` (`Caddyfile` + `conf.d/localhost-dev.conf` + `localhost{,-key}.pem`) | Local HTTPS dev for 14 `*.localhost` sites (mcp, artifacts, onlyoffice, demo.satware.com clone, 10 placeholders). Caddy runs as systemd `caddy.service` on port 443. NOT managed by this repo - no `caddy` Ansible role exists. The `onlyoffice.localhost` site (-> `localhost:3847`) is emitting `context canceled` SSE aborts; see `docs/learnings/2026-07-06-caddy-onlyoffice-mcp-sse-investigation.md` and GitLab issue [satware/mcp/onlyoffice#92](https://gitlab.satware.com/satware/mcp/onlyoffice/-/work_items/92). | Candidate for Ansible role (`caddy` + `mkcert`); defer until issue #92 resolves to avoid masking root cause | | 2026-07-03 | Patched `remmina-plugin-rdp.so` in `~/.config/remmina/plugins/` | Remmina 1.4.43 crashes (SIGSEGV) on Wayland when `keymap` is set in a profile. Built from `~/external/remmina/` fork with NULL check fix. Alt plugin dir loads before system plugin. MR !2757 submitted upstream. See `docs/learnings/2026-07-03-remmina-wayland-crash-fix.md`. | Remove when upstream fix is released and packaged | | 2026-06-17 | Discovered and deleted `br_vm_internal` bridge (10.10.2.0/24) | Externally-created bridge, no NM config file, no VMs attached. Origin unknown — likely ad-hoc `nmcli con add` or manual `brctl` session (Jun 10). Traffic-shaping qdisc (`htb`) suggests prior VM network isolation attempt. Deleted via `nmcli con delete` + `ip link delete`. | N/A (removed) | diff --git a/docs/tech/stack.md b/docs/tech/stack.md index 879efae..15e8ea8 100644 --- a/docs/tech/stack.md +++ b/docs/tech/stack.md @@ -6,7 +6,7 @@ tags: - software-stack - inventory - tech-stack -last_updated: '2026-07-06' +last_updated: '2026-07-12' --- # Software Stack - mw-pfeddersheim-workstation @@ -107,9 +107,9 @@ for the active Caddy/OnlyOffice investigation. | Package | `caddy` (pacman) | | Service | `caddy.service` (enabled, runs as `caddy` user) | | Config | `/etc/caddy/Caddyfile` + `/etc/caddy/conf.d/localhost-dev.conf` | -| TLS | mkcert-generated pair at `/etc/caddy/localhost{,-key}.pem` | +| TLS cert | mkcert-generated pair at `/etc/caddy/localhost{,-key}.pem`; includes explicit SANs for all 19 hostnames (wildcard `*.localhost` only covers single-label subdomains like `mcp.localhost`; multi-label hosts like `onlyoffice.docs.localhost` and `demo.satware.com.localhost` require explicit SANs) | | Admin endpoint | Unix socket `/run/caddy/admin.socket` | -| Sites | 14 `*.localhost` virtual hosts (see table below) | +| Sites | 17 `*.localhost` virtual hosts (see table below) | #### `*.localhost` sites @@ -120,10 +120,13 @@ for the active Caddy/OnlyOffice investigation. | `onlyoffice.localhost` | `reverse_proxy localhost:3847` | OnlyOffice MCP server; emitting `context canceled` SSE aborts (issue [#92](https://gitlab.satware.com/satware/mcp/onlyoffice/-/work_items/92)) | | `project-1.localhost` ... `project-10.localhost` | `respond "project-N - placeholder"` | 10 reserved placeholders | | `demo.satware.com.localhost` | `reverse_proxy localhost:38081` | webdevops/php-apache-dev container | +| `platform.localhost` | `reverse_proxy localhost:10080` | amicron-platform Docker (Symfony 7.4 + Vue 3 + Firebird 3.0.14); `~/internal/amicron-platform` | +| `packages.localhost` | `reverse_proxy localhost:20080` | satis Docker (Composer package repository with token-based access control); `~/internal/satis` | +| `onlyoffice.docs.localhost` | `file_server` root `/home/mw/internal/onlyoffice/docs-site/dist` | Starlight static docs build | -Wildcard cert covers one level only. `demo.satware.com.localhost` works -(single label under `*.localhost`); deeper nesting (e.g. -`sub.demo.satware.com.localhost`) would NOT be covered. +Wildcard `*.localhost` only matches single-label subdomains (e.g. `mcp.localhost`). +Multi-label hosts like `onlyoffice.docs.localhost` and `demo.satware.com.localhost` +require explicit SANs in the mkcert cert - they are NOT covered by the wildcard. ### Useful Caddy commands