Commit Graph
14682 Commits
Author SHA1 Message Date
kevinveenbirkenbach fcf46bc978 fix(user-backup,ssh): correct authorized_keys rendering and newline handling
- Prefix backup SSH keys safely without regex backreferences
- Switch authorized_keys content to literal block for deterministic output
- Strip literal "\n" and trailing whitespace from SSH keys
- Remove fragile ternary-based newline logic to avoid malformed files

https://chatgpt.com/share/695e895d-15e8-800f-864f-92a59b10733a
2026-01-07 17:26:57 +01:00
kevinveenbirkenbach 557c579bca Minor Matrix Optimations 2026-01-07 15:25:24 +01:00
kevinveenbirkenbach ca1809a25a feat(dev-nix): enable shell integration by default and finalize official installer flow
- Enable Nix shell snippet by default for reliable PATH setup
- Remove unused vendored installer file
- Ensure /usr/local/bin/nix symlink for systemd and non-login environments
- Always create /etc/nix and deploy nix.conf
- Clarify role description and promote lifecycle to beta

https://chatgpt.com/share/695e483c-1f68-800f-9f94-87d5295b871d
2026-01-07 14:12:28 +01:00
kevinveenbirkenbach 7359e88f88 fix(dev-nix): use official installer on non-Arch x86_64 and fix localhost become
- Restrict pacman-based Nix install to Arch Linux x86_64 only
- Use official Nix installer as fallback on ARM and other platforms
- Prevent sudo usage on localhost when fetching installer checksum
- Align README with actual online, verified installer behavior

https://chatgpt.com/share/695e483c-1f68-800f-9f94-87d5295b871d
2026-01-07 12:49:04 +01:00
kevinveenbirkenbach ad4f22719f feat(mediawiki): persist extensions via volume and streamline install/update flow
- Persist MediaWiki extensions in dedicated Docker volume
- Mount LocalSettings.php and runtime configs read-only from host
- Replace install/update logic with handler-driven maintenance/run.php
- Consolidate install & extension tasks, remove legacy patching logic
- Add schema support for wgSecretKey credential
- Improve idempotency, ordering, and container safety
2026-01-07 11:11:28 +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 964a0070c7 fix(ci): fix printf argument mismatch in deploy test script
ShellCheck SC2183: add missing format specifier for ALWAYS_EXCLUDE

https://chatgpt.com/share/695d9599-94a8-800f-8e82-979345be5384
2026-01-07 00:06:56 +01:00
kevinveenbirkenbach f3fa8d7680 fix(ci): avoid git ownership issues by syncing source as root
- Replace clean-container with compose down for predictable teardown
- Add explicit up/down targets to Makefile
- Sync bind-mounted source into internal repo using rsync --chown=root:root
- Prevent git dubious ownership errors in CI containers running as root

https://chatgpt.com/share/695d7045-a1f8-800f-83d0-f5872d85cfcf
2026-01-06 21:27:43 +01:00
kevinveenbirkenbach b04fb1e031 feat(coturn): make TLS optional via COTURN_TLS_ENABLED
- Allow disabling TURN/TLS ports, cert mounts, and flags
- Keep STUN/TURN healthcheck valid without TLS
- Prepare role for non-TLS dev and internal setups

https://chatgpt.com/share/695d5a2b-f57c-800f-88a1-de42d84c4a10
2026-01-06 19:53:27 +01:00
kevinveenbirkenbach 7c6af3e474 ci(deploy): unify deploy workflows and persist logs as artifacts
https://chatgpt.com/share/695d590e-5164-800f-876f-3d79009b197d
2026-01-06 19:48:08 +01:00
kevinveenbirkenbach 13ea5fb63f Release version 0.8.0 v0.8.0 2026-01-06 17:40:15 +01:00
kevinveenbirkenbach e7cde82928 Merge pull request #48 from kevinveenbirkenbach/feature/openldap-ci
Feature/openldap ci
2026-01-06 17:38:19 +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 e7c464f988 refactor(openldap): install ldapsm via sys-pip-install
- Replace pkgmgr-based ldapsm installation with system pip
- Install ldapsm once before applying schema tasks
- Simplify schema task files by removing duplicate installs

https://chatgpt.com/share/695d2615-d664-800f-b821-5705c631bfe8
2026-01-06 17:30:06 +01:00
kevinveenbirkenbach 70149e7fa0 Release version 0.7.2 v0.7.2 2026-01-06 15:52:33 +01:00
kevinveenbirkenbach b4c10ac1e2 Merge pull request #47 from kevinveenbirkenbach/feature/lifecycle
Merge Request Summary – Lifecycle-aware CI & role metadata
2026-01-06 15:49:38 +01:00
kevinveenbirkenbach 46ca6c5cbe chore: bump cleanback to 1.2.1 (timestamp-based force-keep)
https://chatgpt.com/share/695d1ed9-44f0-800f-a236-e903c61036cb
2026-01-06 15:45:37 +01:00
kevinveenbirkenbach 8cd0c941f0 **ci(deploy): gate CI deploys by tested lifecycle**
* Introduce lifecycle gating to CI deploy tests
* Only allow roles with tested lifecycles (alpha, beta, rc, stable)
* Automatically exclude roles with untested or missing lifecycle metadata
* Simplify static BASE_EXCLUDE by relying on lifecycle filtering

https://chatgpt.com/share/695d16d9-e210-800f-92d7-a1a429644be2
2026-01-06 15:06:03 +01:00
kevinveenbirkenbach dd729fd35d Introduced lifecycle into meta/main.yml roles 2026-01-06 14:42:52 +01:00
kevinveenbirkenbach 29483a6415 cli: add lifecycle_filter command and fix help forwarding
- Introduce meta roles lifecycle_filter CLI to select roles by lifecycle
- Support whitelist/blacklist modes, selection filtering, and auto-detected roles dir
- Fix blacklist handling for roles with missing lifecycle
- Forward --help correctly to subcommand argparse
- Add unit tests for lifecycle filtering logic

https://chatgpt.com/share/695d09d2-c864-800f-9e23-b9db0c6f3537
2026-01-06 14:10:33 +01:00
kevinveenbirkenbach cebefc87a2 ci: align workstation deploy workflow with Makefile test-deploy
* update test-deploy-workstation workflow to use make clean-container and make test-deploy with TEST_DEPLOY_TYPE=workstation
* extend Makefile test-deploy to accept TEST_DEPLOY_TYPE (default server) and pass it through to scripts/tests/deploy.sh
* note: add missing newline at end of test-deploy-workstation.yml to avoid diff noise
2026-01-06 13:41:28 +01:00
kevinveenbirkenbach 0e667ad8c9 Release version 0.7.1 v0.7.1 2026-01-06 13:26:18 +01:00
kevinveenbirkenbach 5f05fad15e ansible: switch web-app-sphinx to prebuilt infinito-sphinx container
- Remove pkgmgr-based installation and local build logic
- Use published GHCR image ghcr.io/kevinveenbirkenbach/infinito-sphinx
- Simplify docker-compose template to image-based deployment
- Add explicit docker service configuration (image, version, port, name)
- Clean up obsolete env template and handler workarounds

https://chatgpt.com/share/695c16f5-b790-800f-9381-f957229cc3c6
2026-01-06 13:20:39 +01:00
kevinveenbirkenbach 63c8225173 fix(xwiki): stabilize REST auth and superadmin setup
* Replace heredoc-based Dockerfile logic with printf to avoid silent build failures
* Ensure superadmin credentials are reliably written into xwiki.cfg at build time
* Introduce shared REST session task to fetch JSESSIONID and XWiki-Form-Token
* Use cookie + CSRF token headers consistently for all REST write operations
* Switch uri auth parameters to url_username / url_password for clarity and consistency
* Normalize internal URLs via XWIKI_DOCKER_REACH_URL
* Make extension install, admin setup, and cleanup idempotent and reliable

https://chatgpt.com/share/695c1c63-0218-800f-ba36-f7640b0d1f2f
2026-01-05 21:17:26 +01:00
kevinveenbirkenbach 4b23d9fda9 Reset database to null for logout 2026-01-05 18:32:39 +01:00
kevinveenbirkenbach aa28b08d7b ansible: restore task timing output via callbacks_enabled
Re-enable timer and profile_tasks by switching from deprecated
callback_whitelist to callbacks_enabled, ensuring task and total
runtime are shown again with the yaml stdout callback.

https://chatgpt.com/share/695bee3b-c7b8-800f-ba1b-14edd4f6fe24
2026-01-05 18:00:29 +01:00
kevinveenbirkenbach 56ac1acdaf Solvewd variable bug 2026-01-05 17:57:16 +01:00
kevinveenbirkenbach 40ffd613ad ci: remove ci-publish workflow to avoid skipped image builds
* Delete ci-publish.yml which relied on workflow_run and skipped publishing on test failures
* Ensure images are built and published directly on version tag pushes
* Keep stable tagging gated by successful code analyses only

https://chatgpt.com/share/695be89a-6f30-800f-bee4-40cfd4ef6263
v0.7.0-test
2026-01-05 17:36:19 +01:00
kevinveenbirkenbach 9dd3ec7080 Replaced {{ PATH_INFINITO_DATABASE_SECRETS | dirname }} by {{ PATH_INFINITO_SECRETS_DIR }} 2026-01-05 17:11:25 +01:00
kevinveenbirkenbach 45fb54e43a Revert "Changed touch to file"
This reverts commit 707323035a.
2026-01-05 17:09:48 +01:00
kevinveenbirkenbach 56589c7d89 Release version 0.7.0 v0.7.0 2026-01-05 17:03:20 +01:00
kevinveenbirkenbach 6936d84798 ci: always build & publish images for version tags, gate stable on tests
- Always build and publish Docker images for v* tags (version + latest),
  independent of test results
- Run full code analyses in parallel and only mark Git + container :stable
  when all checks succeed
- Replace rebuild-on-stable with pure imagetools retagging (no rebuild)
- Prevent race conditions by ordering stable tagging after image publish
- Ensure latest always tracks the most recent version image

https://chatgpt.com/share/695bdfa5-dbe0-800f-bb1c-4fe81eba6058
2026-01-05 16:58:21 +01:00
kevinveenbirkenbach 754d073aac pkgmgr-install: ensure venv PATH and stabilize pkgmgr execution
- Explicitly export PKGMGR_VENV and prepend its bin directory to PATH
- Avoid hard-coded pkgmgr binary paths
- Improve robustness of non-interactive pkgmgr update execution
- Load docker-compose handlers explicitly in web-app-sphinx

https://chatgpt.com/share/695bc971-fd58-800f-bde6-7d36e72ef5dd
2026-01-05 15:23:37 +01:00
kevinveenbirkenbach d7a5c8d9ca Added YAML Output for Ansible
https://chatgpt.com/share/695bb21c-a83c-800f-baae-90ef7442c0b3
2026-01-05 13:44:05 +01:00
kevinveenbirkenbach 6ded013bb8 Changed variables to constants 2026-01-02 14:15:13 +01:00
kevinveenbirkenbach 528e0ad1f8 Fix Matomo bootstrap and token initialization logic
- Ensure Matomo is bootstrapped when API token is missing, even if already installed
- Make Matomo load conditional on reachability and token availability
- Move run-once flag in sys-token-store to ensure proper token hydration
- Improve trusted_hosts patching to include service and Docker reach host
- Clean up redundant conditions and minor task inconsistencies

https://chatgpt.com/share/6957bc5f-ff70-800f-a3bd-c4cf2518a336
2026-01-02 13:38:48 +01:00
kevinveenbirkenbach 6160b16af0 Removed item in loop 2026-01-02 11:04:46 +01:00
kevinveenbirkenbach 7dea10949a Ensure Matomo is loaded when unreachable or token is missing
- Include sys-token-store as a dependency for frontend injections
- Make Matomo loading conditional on reachability or missing token
- Handle undefined reachability checks conservatively
- Remove redundant empty-token validation spacing
- Ensure deterministic and idempotent Matomo bootstrap behavior

https://chatgpt.com/share/69579627-1b40-800f-971b-039bc8dc413b
2026-01-02 10:55:47 +01:00
kevinveenbirkenbach 707323035a Changed touch to file 2026-01-02 10:38:50 +01:00
kevinveenbirkenbach 6e5516c3d7 Replaced 127.0.0.1 by DOCKER_REACH_HOST 2026-01-02 04:56:39 +01:00
kevinveenbirkenbach 4dcffa8601 Changed 127.0.0.1 to DOCKER_BIND_HOST 2026-01-02 04:26:41 +01:00
kevinveenbirkenbach f012daca3d Updated changelog 2025-12-31 19:01:58 +01:00
kevinveenbirkenbach d92ecbb66c Merge pull request #46 from kevinveenbirkenbach/feature/echoserver-optimation
Feature/echoserver optimation
2025-12-31 18:58:53 +01:00
kevinveenbirkenbach 861098272e Release version 0.6.0 v0.6.0 2025-12-31 18:58:32 +01:00
kevinveenbirkenbach 588cfc22bc Rebuild yay automatically when libalpm ABI changes
- Detect broken yay binaries via ldd (missing shared libraries)
- Remove stale /usr/bin/yay to force a clean rebuild
- Ensure build prerequisites (git, base-devel, patch) are installed
- Harden yay build with strict shell flags
- Normalize task formatting and quoting

https://chatgpt.com/share/6955615b-63b8-800f-b365-0060bad50609
2025-12-31 18:45:42 +01:00
kevinveenbirkenbach 0f7add0f1a Unify Mailu token handling via users[*].tokens and clean up inventory validation
- Migrate Mailu credentials from legacy mailu_token to tokens['web-app-mailu']
- Update all affected application templates to use the new token structure
- Adjust inventory validation to no longer special-case mailu_token
- Minor typing and formatting cleanups in inventory creation and tests

https://chatgpt.com/share/69554915-87c8-800f-afd5-12118dbb1107
2025-12-31 17:02:20 +01:00
kevinveenbirkenbach bace99c9c6 Fix pip installation and stabilize cleanback service execution
- Switch sys-pip-install to ansible.builtin.pip with dynamically resolved pip executable
- Remove hardcoded python/pip paths to ensure cross-distro compatibility
- Separate cleanback package pinning from executed command
- Fix systemd ExecStart to call cleanback binary instead of package spec
- Improve robustness against PATH and interpreter mismatches

https://chatgpt.com/share/69554856-3920-800f-995e-8b6948e1d09c
2025-12-31 16:59:12 +01:00
kevinveenbirkenbach 15219a8192 Fail early if Matomo API token is empty
Add a validation guard after token store inclusion to abort execution
when users.administrator.tokens['web-app-matomo'] is empty or whitespace.
This prevents silent Matomo API failures caused by misconfigured tokens.

https://chatgpt.com/share/69552203-4f40-800f-94b1-7ce54ca81d0a
2025-12-31 14:15:40 +01:00
kevinveenbirkenbach 93f09ac0a7 feat(token-store): hydrate runtime tokens + unify Matomo token usage
**Body**

* add sys-token-store filter plugin to hydrate users.*.tokens from persisted store (users win if non-empty)
* load token store during sys-token-store core run and inject hydrated tokens into users fact
* remove legacy lookup task and simplify docs + store path naming
* switch Matomo frontend injection to use hydrated users.administrator.tokens[web-app-matomo] directly
* ensure Mailu token handling uses sys-token-store write task and checks token presence via users.*.tokens
* add unittest for token hydration filter plugin with path-based module loading
2025-12-31 13:43:29 +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