Commit Graph
841 Commits
Author SHA1 Message Date
kevinveenbirkenbach 58e1adf244 ports: move oauth2-proxy listener ports to reserved 16480-16499 range
Avoid conflict with ManageSieve (4190) and other well-known services by
moving internal oauth2-proxy callback/listener ports from 418x to the
reserved 16480-16499 range and documenting the block.

https://chatgpt.com/share/696d8034-2b80-800f-99d1-8939bd1236eb
2026-01-19 01:51:57 +01:00
kevinveenbirkenbach daab131b71 ci: auto-detect storage constraints and enable aggressive docker cleanup
- add storage detection utility for CI (DockerRootDir free space check)
- automatically set STORAGE_CONSTRAINED in cli.deploy.test when disk < 100 GiB
- forward STORAGE_CONSTRAINED into generated CI inventory via --vars
- introduce global STORAGE_CONSTRAINED default in group_vars
- run aggressive docker prune handler only in storage constrained mode
- mark CI inventory environment as development

https://chatgpt.com/share/696d6a11-2d90-800f-83e8-a30f6229e2e0
2026-01-19 00:17:31 +01:00
kevinveenbirkenbach 743716ffe6 fix(ldap,rbac,keycloak): ensure empty groupOfNames roles via placeholder member and DN-based mapping
- Add LDAP.RBAC.EMPTY_MEMBER_DN placeholder for empty role groups (schema-compliant groupOfNames)
- Ensure RBAC role entries always contain at least one member
- Align users OU attribute with DN (ou=users)
- Switch Keycloak LDAP group/role mappers to DN-based membership
- Fix missing newline in Keycloak schema file

https://chatgpt.com/share/696b7226-7c18-800f-a0b0-59068bb69d9f
2026-01-17 12:27:22 +01:00
kevinveenbirkenbach d6335f6d22 mailu: unify hostname handling and switch to canonical SYSTEM_EMAIL_HOST
- Use SYSTEM_EMAIL_HOST as single canonical Mailu hostname
- Remove MAILU_HOSTNAMES list handling and related assertion
- Simplify Mailu env HOSTNAMES to single hostname
- Align Mailu server domain config with primary mail domain
- Ensure consistent hostname resolution across email + web services

https://chatgpt.com/share/696ac991-db50-800f-9d3c-ca41bdb7058a
2026-01-17 00:28:14 +01:00
kevinveenbirkenbach 96ef8e014c feat(email): add environment-aware SMTP routing for Docker-in-Docker
- Introduce SYSTEM_EMAIL_ENVIRONMENT abstraction (external/localhost + container)
- Route SMTP via localhost in Docker-in-Docker environments
- Prevent invalid FQDN mail host usage inside DiD
- Disable SMTP auth for localhost-based delivery
- Improve reliability of health checks in containerized setups

This avoids broken mail delivery paths like Docker -> DiD -> DiD and
ensures predictable behavior in CI and nested container environments.
2026-01-16 20:47:48 +01:00
kevinveenbirkenbach fd983bc69c refactor(ci,network): make DNS, IP and domain configuration fully env-driven
- Introduce env.ci as single source of truth for CI networking
- Make docker-compose, CoreDNS and Docker daemon fully env-driven
- Render CoreDNS Corefile from template via envsubst
- Replace hardcoded IPs/domains with environment variables
- Integrate env-based networking into Ansible defaults
- Remove static Corefile and daemon.json

This makes DNS and networking deterministic and reproducible across
host, CoreDNS, infinito runner and Docker-in-Docker.

https://chatgpt.com/share/696a3dda-5c6c-800f-8a16-47c0c604e1e3
2026-01-16 14:30:14 +01:00
kevinveenbirkenbach 989c0c0fa2 refactor(stacks): merge stateful/stateless backend+full stacks into sys-stk-backend/sys-stk-full
- Replace sys-stk-back-stateful + sys-stk-back-stateless with unified sys-stk-backend role
- Replace sys-stk-full-stateful + sys-stk-full-stateless with unified sys-stk-full role
- Add reusable task helpers: _load_service.yml (optional deps) and 01_database.yml (DB bootstrap)
- Switch optional dependency loading (OpenLDAP, Ollama) to service_load_enabled (enabled && shared) + run_once guard
- Remove legacy OLLAMA_LOCAL_ENABLED flag; rely on docker.services.ollama.enabled/shared config
- Update all affected app/service roles and web-app template to use new stack role names

https://chatgpt.com/share/69685fb2-cb1c-800f-a9e8-2f5f765a1a53
2026-01-15 04:31:54 +01:00
kevinveenbirkenbach e29fa82b67 web-svc-coturn: add nginx health service and fix localhost port mapping
- Add minimal nginx sidecar returning OK on root path for health checks
- Bind nginx explicitly to port 80 inside container
- Register web-svc-coturn localhost port (8064)
- Migrate stack usage from sys-stk-semi-stateless to sys-stk-full-stateless
- Normalize variable formatting and fix missing newlines

This enables a lightweight HTTP health endpoint alongside the Coturn service
for monitoring, probes and front-layer integration.

https://chatgpt.com/share/6967fa88-ee04-800f-a52a-47306a945528
2026-01-14 21:20:17 +01:00
kevinveenbirkenbach 334c4b70c7 fix: stabilize rapid deploy env, improve entry.sh debugging and harden contact config
- Fix Makefile rapid deploy target to properly export INFINITO_DISTRO
- Capture stdout/stderr from entry.sh init and raise explicit error on failure
- Add fallback contact addresses for demo environments (email, matrix, mastodon, etc.)
- Quote mailto URLs and identifiers to ensure valid YAML output
- Replace placeholder legal contact with demo user

This prevents YAML parser errors (e.g. `url: mailto:`), improves CI diagnostics,
and ensures desktop contact menu is always rendered with valid defaults.

https://chatgpt.com/share/69679c78-f338-800f-be86-54b3195d19b7
2026-01-14 14:38:42 +01:00
kevinveenbirkenbach 482a9eb65c test(mailu): disable webmail healthcheck in MODE_TEST for local act runs
Disable the Mailu webmail healthcheck when MODE_TEST is enabled to avoid
local AppArmor and startup timing issues on Manjaro during act-based CI
runs. This keeps production and GitHub CI behavior unchanged while
allowing reliable local testing.

Also introduce MODE_TEST flag in inventory and modes configuration.

https://chatgpt.com/share/6965806a-daa0-800f-ad9a-28ddf1c8eabc
2026-01-13 00:14:38 +01:00
kevinveenbirkenbach 198a2fe3cf fix(ansible): enforce system python interpreter and install python-ldap via OS packages
- Stop auto-injecting ansible_python_interpreter from PYTHON env for localhost
- Set ansible_python_interpreter globally to /usr/bin/python3
- Add interpreter to sample inventory
- Remove role-local interpreter overrides
- Switch python-ldap installation to distro package (python-ldap / python3-ldap)
- Drop pip-based python-ldap installation to avoid venv/libldap mismatches

https://chatgpt.com/share/6964335a-29cc-800f-ae65-6a35c7cd2559
2026-01-12 14:48:53 +01:00
kevinveenbirkenbach 054810050d refactor(features): migrate feature flags to docker.services and update AI and LDAP network wiring
* Move top-level features flags to docker.services.<feature>.enabled
* Replace features.local_ai with docker.services.ollama.shared for central AI networking
* Switch central LDAP network gating from docker.services.ldap.enabled to docker.services.ldap.shared
* Add per-app service feature entries like css, javascript, hcaptcha, recaptcha under docker.services
* Update Gitea to use derived GITEA_LDAP_ENABLED and adjust IAM conditions

https://chatgpt.com/share/69641f2f-5d6c-800f-8927-fdb3580e7964
2026-01-11 23:07:25 +01:00
kevinveenbirkenbach 04c9490745 Solved unit and integration tests 2026-01-10 13:07:12 +01:00
kevinveenbirkenbach 493c908931 fix(vars): guard applications access and fix OIDC flavor ternary precedence
- Default applications to an empty mapping to avoid undefined access
- Add explicit parentheses to ensure correct Jinja filter and ternary evaluation
- Stabilize Nextcloud OIDC flavor resolution when inventory provides no applications

https://chatgpt.com/share/695fff6e-8d20-800f-be9a-d0ad30ee198e
2026-01-08 20:17:58 +01:00
kevinveenbirkenbach 047c86058a Added workstation user to pass variables to pass integration tests 2026-01-08 12:36:57 +01:00
kevinveenbirkenbach 8d3e8d0b73 feat(email): unify SYSTEM_EMAIL_* vars and improve msmtp/postfix local delivery
- Replace DEFAULT_SYSTEM_EMAIL merge with flat SYSTEM_EMAIL_* variables
- Update templates across apps to new variable names
- Fix msmtp health check to use -t and local username fallback
- Improve postfix localhost config (localdomain, mydestination, timeouts)
- Extend sys-hostname to ensure /etc/hosts mapping once

https://chatgpt.com/share/695e8f39-0694-800f-b91c-a74f4b78d7c8
2026-01-07 17:52:04 +01:00
kevinveenbirkenbach c2cced7ce7 refactor(mail): unify local-only mail delivery via postfix + msmtp
- introduce configurable mail timeout for msmtp and postfix
- switch health-check mails to local recipients instead of external addresses
- consolidate postfix setup into sys-svc-mail-smtp role
- add proper alias deployment and database generation (lmdb)
- fix relay access denied by enabling local delivery and aliases
- remove deprecated sys-postfix role to avoid configuration conflicts

https://chatgpt.com/share/695e2301-eaf0-800f-8e98-8c602c50d55c
2026-01-07 10:10:14 +01:00
kevinveenbirkenbach 8297f776e3 feat: make failed-backup cleanup safer and reschedule for low-load hours
- Run failed-backup cleanup at 04:00 to avoid overlap with regular backup jobs
- Add explicit timeout and single-worker defaults for large/slow storage
- Align role defaults with cleanback 1.3.0 safety semantics
- Clarify force-keep behavior and failure handling in role README

https://chatgpt.com/share/695d39c5-3390-800f-81b1-10f0f04e1b42
2026-01-06 17:35:12 +01:00
kevinveenbirkenbach 533a1235fe Implement SPOT-based authorized_keys management for users
* Move SSH key handling to users.<name>.authorized_keys (list-only) and write keys via shared user role
* Enforce at least one SSH key for administrator user
* Wrap backup user keys with restricted command wrapper before writing authorized_keys
* Remove legacy inventory file copy and CLI flag/function for administrator authorized_keys
* Extend user setup generator to include authorized_keys field
* Rename administrator scripts path to root scripts path and update dependent variables
* Update inventory sample and docs to reflect new SSH key workflow

https://chatgpt.com/share/695510b8-23f4-800f-b5db-877b07a1469b
2025-12-31 13:01:45 +01:00
kevinveenbirkenbach 2de4c7d314 fix(mail): disable SMTP auth in no-TLS mode and align ports for CI/DinD
- Switch SMTP port dynamically: 465 with TLS, 25 without TLS
- Disable SMTP AUTH automatically when TLS/STARTTLS is not enabled
- Bind Mailu SMTP ports to 0.0.0.0 in Docker-in-Docker environments
- Fix boolean handling in msmtp and Mobilizon SMTP templates
- Ensure plain SMTP (no TLS, no AUTH) works reliably in CI/test setups

https://chatgpt.com/share/69540941-279c-800f-a2b1-79a189c2bdcc
2025-12-30 18:17:46 +01:00
kevinveenbirkenbach 26fa760847 Added system email enabled switch 2025-12-30 12:39:28 +01:00
kevinveenbirkenbach 7141692673 Activated TLS by default 2025-12-30 10:37:50 +01:00
kevinveenbirkenbach 6bc097f96f refactor(email,domain): unify primary domain and TLS handling
- replace localhost special-casing with valid FQDN (infinito.localhost)
- derive system email DOMAIN and HOST directly from DOMAIN_PRIMARY
- align Mailu TLS_FLAVOR with SYSTEM_EMAIL.TLS (mail vs notls)
- tie OIDC_VERIFY_SSL to TLS_ENABLED for consistent test/CI behavior
- update CI deploy script to use new primary domain

https://chatgpt.com/share/695311c0-fbe8-800f-8058-9d40a06b189a
2025-12-30 00:41:46 +01:00
kevinveenbirkenbach ea04035e12 feat(config): rename SSL_ENABLED to TLS_ENABLED across stack
* Replace global `SSL_ENABLED` flag with `TLS_ENABLED`
* Update web protocol/ports (http/https, ws/wss) to use `TLS_ENABLED`
* Switch cert-related roles and nginx TLS header gating to `TLS_ENABLED`
* Update app env templates (BookWyrm, Confluence, Jira, Magento, OpenProject, WordPress, etc.) to use `TLS_ENABLED`
* Adjust inventory generator to write `TLS_ENABLED` and update CLI help text accordingly
* Update unit tests for inventory vars overrides to expect `TLS_ENABLED`

https://chatgpt.com/share/695306ef-a798-800f-b118-e07b525e1811
2025-12-29 23:55:20 +01:00
kevinveenbirkenbach 41d81ee18d Optimized subdomain name 2025-12-29 21:59:22 +01:00
kevinveenbirkenbach e3c459845d Optimized mail domain 2025-12-29 21:54:10 +01:00
kevinveenbirkenbach bf4af7c823 Renamed domain variables 2025-12-29 20:37:47 +01:00
kevinveenbirkenbach d734a15ad6 feat(ci,webserver): add localhost DNS + default vhost 404 assertion
- switch CI DNS to CoreDNS-based *.localhost resolution (A/AAAA → loopback)
- set PRIMARY_DOMAIN to localhost for CI deploys
- add explicit DNS resolution assert for test.localhost
- deploy explicit default_server vhost returning 404 text/plain
- assert default vhost behavior via HTTP before app domains exist

https://chatgpt.com/share/6952cf2a-bbd4-800f-b2b8-c4baba66e301
2025-12-29 19:57:41 +01:00
kevinveenbirkenbach b5a7f277b8 chore(schedule): reduce letsencrypt renew frequency to every two days
- Run certbot renewal only on even days to avoid rate limits
- Align schedule with Let's Encrypt best practices

https://chatgpt.com/share/6951b1f3-f0f0-800f-9d14-682db104cc53
2025-12-28 23:40:27 +01:00
kevinveenbirkenbach c7851645b4 refactor(backup): move backups under /var/lib/infinito and parameterize pull script
- switch compose volumes from /Backups to /var/lib/infinito
- add PATH_INFINITO_BACKUP_DIR and drop BACKUPS_FOLDER_PATH
- update backup provider permissions + cleanup service to use new path
- make pull-specific-host accept --folder and raise if no remote backups
- adjust unit tests accordingly

https://chatgpt.com/share/69515eed-001c-800f-b1da-aee8d8683e63
2025-12-28 19:15:29 +01:00
kevinveenbirkenbach f067166095 refactor(secrets): centralize infinito secrets paths and remove role-local csv vars
- introduce global PATH_INFINITO_* secrets paths in group_vars
- replace BKP_DOCKER_2_LOC_DATABASES_CSV with PATH_INFINITO_DATABASE_SECRETS
- align sys-ctl-bkp-docker-2-loc and sys-token-store to shared secrets layout
- remove role-local defaults in favor of global path definitions
- drop outdated Nextcloud backup recovery docs

https://chatgpt.com/share/695132e1-1768-800f-b7e6-b72927f14b81
2025-12-28 14:38:25 +01:00
kevinveenbirkenbach b207134472 feat(ci): enable systemd-in-docker and use explicit container detection
- Install systemd and dbus in Docker image for CI service tests
- Run systemd as PID 1 with proper container conventions
- Mark container environment explicitly via ENV container=docker
- Simplify container detection to rely on explicit env flag
- Skip host-only tasks (timezone, systemctl handlers) inside containers
- Adjust docker-compose runner for privileged systemd execution
- Reduce CI parallelism to avoid OOM kills

This makes systemd-based Ansible roles reliable in Docker/CI
and avoids fragile virtualization heuristics.

https://chatgpt.com/share/6950110b-111c-800f-bbcd-83a551d5a3b8
2025-12-27 18:14:28 +01:00
kevinveenbirkenbach 1f29519624 centralize system email domain and remove hardcoded admin emails
- derive internal email domain with .localdomain fallback for localhost
- ensure valid email domains for local installations
- remove hardcoded administrator emails from all roles
- prepare roles to consume centrally defined system email settings

https://chatgpt.com/share/694c05d5-e8c0-800f-8d86-602aaa82be21
2025-12-24 16:25:06 +01:00
kevinveenbirkenbach 1104d4710d Normalize docker service reachability via DOCKER_REACH_HOST
Introduce DOCKER_REACH_HOST as a single source of truth for service
reachability checks (wait_for), decoupled from DOCKER_BIND_HOST.

- Default reach host is 127.0.0.1 for host-based execution
- Automatically override to Docker bridge gateway when running
  inside a container (Docker socket mounted)
- Add custom docker_bridge_gateway module for reliable detection
- Update all wait_for tasks to use DOCKER_REACH_HOST
- Remove ad-hoc debug TCP probing logic

This ensures consistent behavior across host runs and
container-based control nodes without breaking existing setups.

https://chatgpt.com/share/694aaf8b-1fe4-800f-88ac-b5f6e508a2e3
2025-12-23 16:04:36 +01:00
kevinveenbirkenbach 2b5ff60a6f infra(docker): drop host networking and normalize port binding logic
This change removes --network=host usage, introduces DOCKER_IN_CONTAINER
for reliable environment detection, and replaces hardcoded localhost
bindings with an explicit DOCKER_BIND_HOST abstraction to avoid nftables
issues in CI/DiD environments.

https://chatgpt.com/share/69497616-7b00-800f-8fa3-ddc6eb9c5e98
2025-12-22 17:46:08 +01:00
kevinveenbirkenbach 657d4a064d Set localhost as default for DNS_PROVIDER, HOSTING_PROVIDER 2025-12-04 10:32:41 +01:00
kevinveenbirkenbach 91d5ba35d1 Add container-aware execution logic and CI stability fixes
- Introduce global IS_CONTAINER flag based on ansible_virtualization facts
- Skip systemd-based handlers and tasks when running inside containers
- Extend EXCLUDED_ROLES list in GitHub Actions test-deploy workflow
- Ensure docker.sock is mounted for all CI deploy stages
- Improve sys-svc-docker by suppressing service restarts inside containers
- Add meta: flush_handlers to properly trigger delayed docker restarts
- Update sys-service handlers with container guards
- Update sys-timer tasks to avoid systemctl inside CI containers
- Enhance drv-non-free role with Manjaro detection and mhwd fallback warning
- Skip swapfile generation in containers
- Minor service template fixes and cleanup in proxy.conf.j2

Details and discussion: https://chatgpt.com/share/6930a4ca-56f4-800f-9b3d-4791f040a03b
2025-12-03 22:00:18 +01:00
kevinveenbirkenbach 94f97ed1f3 Refactor: Migrate deprecated Ansible facts to ansible_facts[] syntax
Why:
- Ansible 2.20+ deprecates INJECT_FACTS_AS_VARS and direct usage of top-level ansible_* facts.
- This change updates all affected roles and vars files to the new supported syntax.
- Ensures compatibility with upcoming Ansible 2.24 removal of implicit fact injection.

Conversation reference:
https://chatgpt.com/share/692f639b-1380-800f-9f18-732f7108e9e2
2025-12-02 23:09:46 +01:00
kevinveenbirkenbach 4b5ba892ba Introduced SSL_ENABLED flag 2025-12-02 13:51:22 +01:00
kevinveenbirkenbach d55ab2a2d7 Add WEBSERVER_CORE_APPLICATIONS and merge them into CURRENT_PLAY_APPLICATIONS
Refactored constructor logic to always include core webserver applications (web-svc-logout, web-svc-cdn) by using a dict2items → selectattr → items2dict merge pipeline.

Conversation reference: https://chatgpt.com/share/692cbd03-19d8-800f-a8a8-f42d73481a0d
2025-11-30 22:54:32 +01:00
kevinveenbirkenbach 26dfab147d Implement reserved username handling for users, LDAP and Keycloak
Add end-to-end support for reserved usernames and tighten CAPTCHA / Keycloak logic.

Changes:

- Makefile: rename EXTRA_USERS → RESERVED_USERNAMES and pass it as --reserved-usernames to the users defaults generator.

- cli/build/defaults/users.py: propagate  flag into generated users, add --reserved-usernames CLI option and mark listed accounts as reserved.

- Add reserved_users filter plugin with  and  helpers for Ansible templates and tasks.

- Add unit tests for reserved_users filters and the new reserved-usernames behaviour in the users defaults generator.

- group_vars/all/00_general.yml: harden RECAPTCHA_ENABLED / HCAPTCHA_ENABLED checks with default('') and explicit > 0 length checks.

- svc-db-openldap: introduce OPENLDAP_PROVISION_* flags, add OPENLDAP_PROVISION_RESERVED and OPERNLDAP_USERS to optionally exclude reserved users from provisioning.

- svc-db-openldap templates/tasks: switch role/group LDIF and user import loops to use OPERNLDAP_USERS instead of the full users dict.

- networks: assign dedicated subnet for web-app-roulette-wheel.

- web-app-keycloak vars: compute KEYCLOAK_RESERVED_USERNAMES_LIST and KEYCLOAK_RESERVED_USERNAMES_REGEX from users | reserved_usernames.

- web-app-keycloak user profile template: inject reserved-username regex into username validation pattern and improve error message, fix SSH public key attribute usage and add component name field.

- web-app-keycloak update/_update.yml: strip subComponents from component payloads before update and disable async/poll for easier debugging.

- web-app-keycloak tasks/main.yml: guard cleanup include with MODE_CLEANUP and keep reCAPTCHA update behind KEYCLOAK_RECAPTCHA_ENABLED.

- user/users defaults: mark system/service accounts (root, daemon, mail, admin, webmaster, etc.) as reserved so they cannot be chosen as login names.

- svc-prx-openresty vars: simplify OPENRESTY_CONTAINER lookup by dropping unused default parameter.

- sys-ctl-rpr-btrfs-balancer: simplify main.yml by removing the extra block wrapper.

- sys-daemon handlers: quote handler name for consistency.

Context: change set discussed and refined in ChatGPT on 2025-11-29 (Infinito.Nexus reserved usernames & Keycloak user profile flow). See conversation: https://chatgpt.com/share/692b21f5-5d98-800f-8e15-1ded49deddc9
2025-11-29 17:40:45 +01:00
kevinveenbirkenbach e754df7e5c Optimized Captcha implementation by solving not defined bugs 2025-11-28 23:38:08 +01:00
kevinveenbirkenbach 654131ab89 Add global CAPTCHA config and EspoCRM seeder
- Introduce shared CAPTCHA settings and RECAPTCHA_ENABLED/HCAPTCHA_ENABLED flags in group_vars
- Wire reCAPTCHA/hCaptcha credentials into EspoCRM, Keycloak, Listmonk and Nextcloud
- Replace EspoCRM set_flags.php with generic seed_config.php and hook it into entrypoint/env
- Fix run_once handling in sys-ctl-cln-disc-space and minor CSS Jinja spacing issue

https://chatgpt.com/share/692a1d4f-1154-800f-a4ae-bb068aa24a53
2025-11-28 23:08:32 +01:00
kevinveenbirkenbach 3dddda39f6 Optimized Listmonk configuration and styling 2025-11-28 14:13:07 +01:00
kevinveenbirkenbach 3912e9b217 Add fediverse_url filter, integrate unified followus URL generation, update Listmonk config, adjust menu categories, and include full Python unittests. Details: https://chatgpt.com/share/69298521-dfc0-800f-9177-fefc7d32fec7 2025-11-28 12:19:12 +01:00
kevinveenbirkenbach ba26e5a53b Added LittleJS draft https://chatgpt.com/share/69288dea-0870-800f-9939-aad7ed2f54b3 2025-11-27 18:44:33 +01:00
kevinveenbirkenbach d7e0123af2 SuiteCRM LDAP integration fixes:
- Correct LDAP attribute FIRSTNAME changed to givenName
- Add automated ldap.yaml rendering and bind mount
- Create LDAP extension directory inside container
- Adjust docker-compose.yml for proper LDAP config mount
- Add strict formatting template for ldap.yaml
- Update paths for SUITECRM_LDAP_CONFIG_HOST and SUITECRM_LDAP_EXTENSION_DIR

Details: https://chatgpt.com/share/6928375d-1458-800f-bcc3-b3364ea69078
2025-11-27 12:35:07 +01:00
kevinveenbirkenbach 6d6b0fdea6 Implemented CLI installer draft and replaced OIDC by OAuth2 Proxy for SuiteCRM - See https://chatgpt.com/share/69274924-9dec-800f-8653-345aa2c25664 2025-11-27 01:10:11 +01:00
kevinveenbirkenbach e6cb0cbed9 Added suitecrm draft - See https://chatgpt.com/share/69274924-9dec-800f-8653-345aa2c25664 2025-11-26 19:38:37 +01:00
kevinveenbirkenbach a312f353fb Refactor JVM memory filters, add Redis sizing and Docker cleanup service
- Replace jvm_filters with unified memory_filters (JVM + Redis helpers)
- Add redis_maxmemory_mb filter and unit tests
- Introduce sys-ctl-cln-docker role (systemd-based Docker prune + anon volumes)
- Refactor disk space health check to Python script and wire SIZE_PERCENT_CLEANUP_DISC_SPACE
- Adjust schedules and services for Docker cleanup and disk space health

See discussion: https://chatgpt.com/share/6925c1c5-ee38-800f-84b6-da29ccfa7537
2025-11-25 15:50:27 +01:00