Commit Graph
14682 Commits
Author SHA1 Message Date
kevinveenbirkenbach b878f5d2a0 refactor(systemd): replace get_service_name filter with unit_name lookup plugin
https://chatgpt.com/share/e/699449d6-580c-8013-8bcc-6a8545c6762f
2026-02-17 11:58:25 +01:00
kevinveenbirkenbach bb0174625a feat(version): introduce controller-side version lookup plugin
- Remove legacy FILE_VERSION path usage
- Add custom lookup plugin `version` to read pyproject.toml
- Resolve version via [project].version with poetry fallback
- Refactor sys-version role to use lookup('version')
- Add unit tests for version lookup plugin

https://chatgpt.com/share/e/699433f7-1278-8013-af8e-da1b7f303886
2026-02-17 10:52:55 +01:00
kevinveenbirkenbach 2169e4816a refactor(sys-version): store version in /etc/environment as INFINITO_VERSION
- Replace FILE_VERSION file output with environment variable persistence
- Write INFINITO_VERSION into /etc/environment using lineinfile
- Ensure idempotent updates (no duplicate entries)
- Update README and meta description accordingly
- Introduce INFINITO_VERSION_ENV_NAME variable

https://chatgpt.com/share/e/699433f7-1278-8013-af8e-da1b7f303886
2026-02-17 10:25:05 +01:00
kevinveenbirkenbach 680a1e13ce Replaced hardcoded /etc/environment by variable. 2026-02-17 10:13:10 +01:00
kevinveenbirkenbach a9baff978e Release version 4.0.3 v4.0.3 2026-02-16 23:52:32 +01:00
kevinveenbirkenbach 13571f83f4 Optimized whitespacing 2026-02-16 23:50:57 +01:00
kevinveenbirkenbach 548c8d8f5f web-app-matomo: refactor bootstrap into separate run and debug tasks 2026-02-16 23:48:42 +01:00
kevinveenbirkenbach f57d62f9da Removed when guard 2026-02-16 23:22:44 +01:00
kevinveenbirkenbach afc099f975 web-app-matomo: retry bootstrap and extend failure diagnostics 2026-02-16 20:37:27 +01:00
kevinveenbirkenbach 98e1f39291 fix(install): add retry logic for pip installs in python setup script
Add retry wrapper (7 attempts, 20s delay) around pip install
commands to mitigate transient network errors (e.g. GitHub 403,
rate limits, temporary connectivity issues) during CI builds.

https://chatgpt.com/share/e/69933fb2-9c94-8013-815d-4f9509b0456f
2026-02-16 17:03:18 +01:00
kevinveenbirkenbach a688216720 Release version 4.0.2 v4.0.2 2026-02-15 16:50:53 +01:00
kevinveenbirkenbach 2234594c35 Upgraded Meatomo Bootstrap to 1.1.13 2026-02-15 15:20:14 +01:00
kevinveenbirkenbach ef716a70c5 Release version 4.0.1 v4.0.1 2026-02-15 01:54:41 +01:00
kevinveenbirkenbach 46fb83980f Merge pull request #90 from kevinveenbirkenbach/fix/mig
Fix/mig
2026-02-15 01:50:39 +01:00
kevinveenbirkenbach 4c81090385 Removed debug code with none existing --debug paremeter 2026-02-14 21:56:17 +01:00
kevinveenbirkenbach 3769232838 Raised Matomo version to 1.1.12 2026-02-14 19:06:47 +01:00
kevinveenbirkenbach ab26b713fd web-app-matomo: increase installer step timeout for flaky setupSuperUser 2026-02-14 19:02:22 +01:00
kevinveenbirkenbach f3e0d0879f Added some other bundle drafts 2026-02-14 16:48:06 +01:00
kevinveenbirkenbach 131f520acc Solved integration tests 2026-02-14 16:46:06 +01:00
kevinveenbirkenbach 0b1b435eda Merge branch 'master' into fix/mig 2026-02-14 15:30:21 +01:00
kevinveenbirkenbach 5ef66e045e Merge branch 'master' of github.com:kevinveenbirkenbach/infinito-nexus 2026-02-14 15:11:36 +01:00
kevinveenbirkenbach 5c62a7f0ce Quote MATOMO admin password in bootstrap env 2026-02-14 15:00:39 +01:00
kevinveenbirkenbach ae59969c50 refactor(mig): use published image and align debian default alias 2026-02-14 14:17:47 +01:00
kevinveenbirkenbach 9ed864e1e2 ci(images): rename mirror workflows and add scheduled CI image cleanup
- rename mirror-images-* workflows to images-mirror-*
- update ci-orchestrator job ids and dependencies accordingly
- add weekly + manual GHCR cleanup workflow (images-cleanup-ci)
- extract cleanup logic into scripts/administration/ghcr/cleanup_ci_images.sh
- support org and user GHCR owners via automatic API scope detection
- delete only ci-* tagged image versions older than N days (default: 7)

https://chatgpt.com/share/e/69906083-93d4-8013-bd0b-e441615e72bf
2026-02-14 12:46:04 +01:00
kevinveenbirkenbach bd77319e51 Upgradet matomo-bootrstrap to 1.1.10 2026-02-14 12:20:52 +01:00
kevinveenbirkenbach 5722d028ec Changed default dstro from arch to debian, because it's slimmer 2026-02-14 11:38:26 +01:00
kevinveenbirkenbach 9e2ac1531c Upgraded matomo-bootstrap to 1.1.9 2026-02-14 11:05:12 +01:00
kevinveenbirkenbach 0ce1c15f4b web-app-matomo: bump matomo-bootstrap to 1.1.7 and add installer timeout env vars
- Update bootstrap image from 1.1.4 to 1.1.7
- Explicitly set installer stability timeouts:
  - MATOMO_INSTALLER_READY_TIMEOUT_S
  - MATOMO_INSTALLER_STEP_TIMEOUT_S
  - MATOMO_INSTALLER_STEP_DEADLINE_S
  - MATOMO_INSTALLER_TABLES_CREATION_TIMEOUT_S
  - MATOMO_INSTALLER_TABLES_ERASE_TIMEOUT_S

Improves robustness on slow VPS/CI environments and aligns role
with current bootstrap image defaults.
2026-02-14 05:49:43 +01:00
kevinveenbirkenbach a561e05b78 Patched latest matomo version 2026-02-13 20:20:59 +01:00
kevinveenbirkenbach 1488943402 Release version 4.0.0 v4.0.0 2026-02-13 10:51:49 +01:00
kevinveenbirkenbach f1c308d501 Merge pull request #89 from kevinveenbirkenbach/fix/onlyoffice
Refactor domain handling, introduce bundle-based inventories, and stabilize TLS + dashboard integration
2026-02-13 10:45:51 +01:00
kevinveenbirkenbach 3e9de04704 refactor: move server inventories into bundles 2026-02-13 10:14:17 +01:00
kevinveenbirkenbach c1ec02912d fix(web-app-dashboard): validate dashboard domains against DOMAIN_PRIMARY 2026-02-13 08:16:59 +01:00
kevinveenbirkenbach 37ecc016ce fix(constructor): normalize svc-prx-openresty domain override to list format
* change `svc-prx-openresty` override in `CURRENT_PLAY_DOMAINS` from `{ canonical: [...] }` to `list[str]`
* align with legacy `domains` schema expected by `tls_common.resolve_primary_domain_from_app()`
* prevent *invalid primary domain* error in TLS lookup
* ensure consistent domain structure across applications

https://chatgpt.com/share/698e5ccd-7658-800f-9614-211013316bdf
2026-02-13 00:05:44 +01:00
kevinveenbirkenbach 535ff88189 fix(domains): robust recursive flattening in generate_all_domains and remove json workaround
* replace shallow flatten logic with recursive _add helper to correctly handle nested dict/list structures
* prevent unhashable _AnsibleLazyTemplateList from reaching set(flat)
* remove unnecessary to_json/from_json roundtrip in constructor
* add unittest coverage for mixed str/list/dict domain inputs and deduplication behavior

https://chatgpt.com/share/698e598e-3284-800f-9917-ca1eaa4e6572
2026-02-12 23:51:37 +01:00
kevinveenbirkenbach efa6c4bdf0 fix(local-test): make apps discovery JSON-safe and container-compatible
- force PYTHON=python3 for scripts/meta/resolve/apps.sh to avoid host venv leakage into container exec
- pipe output through jq to guarantee compact JSON array only
- tolerate compose warnings on stdout during discovery
- add debug fallback printing first lines of raw apps.sh output when discovery is empty

This aligns local test behavior with CI discovery robustness without changing CI logic.

https://chatgpt.com/share/698e24d6-7200-800f-a2f5-28a81a639cf3
2026-02-12 20:06:58 +01:00
kevinveenbirkenbach 640988690a refactor(constructor): normalize domain handling and fully qualify ansible builtins
* replace implicit modules with ansible.builtin.* for consistency
* normalize redirect domain sources and targets to avoid string slicing issues
* wrap domain lookups in list before flatten/first to prevent single-character truncation
* materialize CURRENT_PLAY_DOMAINS before generate_all_domains to eliminate _AnsibleLazyTemplateList errors
* minor whitespace and formatting cleanup for improved readability

https://chatgpt.com/share/698de3f8-2d50-800f-ab99-edcce4f0734a
2026-02-12 18:11:13 +01:00
kevinveenbirkenbach e32b0d5069 test(lint): exclude inventories from vars usage validation
* introduce EXCLUDED_TOP_LEVEL_DIRS in test_vars_usage_in_yaml
* skip files under inventories/ when scanning YAML/Jinja sources
* prevent bundle metadata vars from triggering false-positive unused var failures

Inventories are declarative data bundles, not task/template files,
and may legitimately contain vars not referenced in Jinja or Ansible expressions.

https://chatgpt.com/share/698df4ba-20b4-800f-93ab-ee5d54f62dca
2026-02-12 17:41:25 +01:00
kevinveenbirkenbach a09479a5b6 fix(constructor): normalize redirect domain sources to avoid unhashable lazy list errors
* ensure source and target domains are flattened and cast to string
* prevent _AnsibleLazyTemplateList from being used as dict keys in items2dict
* stabilize generate_all_domains execution for redirect mappings
* switch to ansible.builtin.set_fact for consistency

https://chatgpt.com/share/698de3f8-2d50-800f-ab99-edcce4f0734a
2026-02-12 17:18:21 +01:00
kevinveenbirkenbach 7facf4b952 feat(inventories): introduce bundle-based server inventories
* add inventories/README.md defining bundle-conform inventory structure
* introduce server bundles under inventories/servers/
* add metadata under all.vars.infinito.bundle (title, description, logo, tags, categories)
* activate roles declaratively via group names
* define single default host "server" for all bundles
* add bundle READMEs with purpose, target audience, and architecture overview
* include bundles:
  - education-suite
  - community-hub
  - enterprise-stack
  - startup-essentials
  - media-company
  - independent-content-creator
  - digital-office
  - power-sale-package
  - friends-and-family
  - personal-nexus

Inventories now act as declarative infrastructure bundles.
No additional bundle manifest format required.

https://chatgpt.com/share/698df4ba-20b4-800f-93ab-ee5d54f62dca
2026-02-12 16:41:38 +01:00
kevinveenbirkenbach 9f973f4236 fix(constructor): normalize DOMAIN_PRIMARY to flat string list for svc-prx-openresty
* flatten DOMAIN_PRIMARY before merging into CURRENT_PLAY_DOMAINS
* convert lazy template values to plain strings to avoid unhashable type errors
* fix generate_all_domains failure caused by nested _AnsibleLazyTemplateList

https://chatgpt.com/share/698de3f8-2d50-800f-ab99-edcce4f0734a
2026-02-12 15:58:00 +01:00
kevinveenbirkenbach b29dc58f1f fix(webserver,tls): ensure primary domain mapping for svc-prx-openresty in constructor
* explicitly merge DOMAIN_PRIMARY as canonical domain for svc-prx-openresty into CURRENT_PLAY_DOMAINS
* prevents tls lookup failures when rendering default_server.conf.j2
* stabilize domain mapping for webserver + OpenResty bootstrap phase
* normalize ansible.builtin.set_fact usage in constructor stage
* minor whitespace alignment in WEBSERVER_CPUS_EFFECTIVE

https://chatgpt.com/share/698de3f8-2d50-800f-ab99-edcce4f0734a
2026-02-12 15:30:11 +01:00
kevinveenbirkenbach 6a54a7cb6d Bind Primary Domain to OpenResty to prevent:
The lookup plugin 'tls' failed: tls: domain 'infinito.example' not found (domains/applications)
Origin: /root/Repositories/github.com/kevinveenbirkenbach/infinito-nexus/roles/sys-svc-webserver-core/templates/default_server.conf.j2
2026-02-12 14:34:19 +01:00
kevinveenbirkenbach 92946ee008 refactor(core): introduce SOFTWARE_DOMAIN and unify homepage, tls, service, and oidc defaults
* add SOFTWARE_DOMAIN derived from SOFTWARE_NAME lowercased
* introduce DOMAIN_HOMEPAGE defaulting to dashboard domain if present, otherwise SOFTWARE_DOMAIN
* add automatic primary → homepage redirect mapping in constructor
* migrate TLS and CA paths from SOFTWARE_NAME|lower to SOFTWARE_DOMAIN
* update systemd unit suffix and timer/service discovery globs to SOFTWARE_DOMAIN
* switch OIDC default realm and client id to SOFTWARE_DOMAIN
* adjust SuiteCRM well-known software name to SOFTWARE_DOMAIN
* update unit tests to use SOFTWARE_DOMAIN for strict Jinja expansion

https://chatgpt.com/share/698db094-22bc-800f-8454-10d97f817659
2026-02-12 11:50:55 +01:00
kevinveenbirkenbach 6efde55647 refactor(dashboard): rename web-app-desktop to web-app-dashboard and update service toggle
* replace compose.services.desktop with compose.services.dashboard across all roles
* rename role web-app-desktop to web-app-dashboard
* rename sys-front-inj-desktop to sys-front-inj-dashboard
* update resolver mapping to include web-app-dashboard when dashboard is enabled
* adjust CSP filters to reference dashboard for frame-ancestors handling
* update lookup plugins, filter plugins, templates, vars and run_once flags
* migrate all tests to dashboard naming and service key
* update role dependencies and port mappings
* remove legacy desktop role and variables

BREAKING CHANGE:
The service key compose.services.desktop has been renamed to compose.services.dashboard.
All custom configs, inventories, or overrides must be updated accordingly.

https://chatgpt.com/share/698da7ad-1978-800f-82b4-4755b17be026
2026-02-12 11:12:49 +01:00
kevinveenbirkenbach a9fd8f68d5 Merge branch 'fix/onlyoffice' of github.com:kevinveenbirkenbach/infinito-nexus into fix/onlyoffice 2026-02-12 09:40:20 +01:00
kevinveenbirkenbach 866efd091f refactor(sys-ctl-hlth-csp): add retry logic and use container wrapper for CSP image pull
* replace docker with container wrapper for image pull
* add retry mechanism with 6 attempts and 20s delay
* register pull result and retry until successful
* improve deployment reliability against transient registry errors

https://chatgpt.com/share/698d9150-064c-800f-a16b-650e09473e87
2026-02-12 09:37:26 +01:00
kevinveenbirkenbach e24b05106b Removed concurrency for manual ci test 2026-02-12 01:38:45 +01:00
kevinveenbirkenbach e540495ad0 refactor(web-app-matomo): wait for container health instead of running + port check
Replace running and HTTP wait logic with direct health status check via container inspect and remove redundant wait_for step

https://chatgpt.com/share/698d1e2f-1f40-800f-92bc-10a736358b40
2026-02-12 01:37:39 +01:00
kevinveenbirkenbach 2c347a335e feat(web-app-chess): define conservative default resource limits
Add *cpus*, *mem_reservation*, *mem_limit*, and *pids_limit* defaults for web-app-chess to ensure predictable and lightweight runtime behavior.

fix(web-svc-onlyoffice): correct typo in CI resource limit comment

https://chatgpt.com/share/698cffcb-e4a8-800f-a674-22bdfad0a765
2026-02-11 23:22:42 +01:00