Commit Graph
301 Commits
Author SHA1 Message Date
admin cc9880e09c chore(traefik): remove flat traefik.env, superseded by traefik/traefik.env 2026-07-25 22:20:27 -07:00
admin 1494224194 chore(traefik): remove flat traefik.yaml, superseded by traefik/traefik.yaml 2026-07-25 22:20:27 -07:00
admin d16203b873 chore(auth): remove flat auth.yaml, superseded by auth/auth.yaml 2026-07-25 22:20:26 -07:00
admin c2069e3e0d feat(traefik): migrate to folder-based stack layout 2026-07-25 22:19:26 -07:00
admin 6caa7f0a33 feat(traefik): migrate to folder-based stack layout 2026-07-25 22:19:25 -07:00
admin 7ccff906fd feat(auth): migrate to folder-based stack layout 2026-07-25 22:19:24 -07:00
admin 68f89ef139 chore(ci): remove root .woodpecker.yml, superseded by .woodpecker/deploy.yml
Woodpecker ignores this file entirely once .woodpecker/ folder exists
(config resolution: .woodpecker/ > .woodpecker.yaml > .woodpecker.yml).
Content preserved verbatim in .woodpecker/deploy.yml.
2026-07-25 22:00:57 -07:00
admin 270489b207 fix(ci): move .woodpecker.yml -> .woodpecker/deploy.yml
Root cause of Woodpecker push pipelines silently no-op'ing since
2026-07-18: Woodpecker's config resolution is
  .woodpecker/*.{yaml,yml} -> .woodpecker.yaml -> .woodpecker.yml
Once .woodpecker/renovate.yml existed, the root .woodpecker.yml was
entirely ignored. Every push webhook hit renovate.yml's `when: event:
cron` filter, matched zero steps, and Woodpecker logged
"ignoring hook: 'when' filters filtered out all steps" instead of
running deploy.

Moving the push pipeline into .woodpecker/deploy.yml restores it as
an independent workflow alongside renovate.yml -- each file's own
`when:` filter now applies correctly (push -> deploy.yml, cron ->
renovate.yml).
2026-07-25 22:00:49 -07:00
admin cc5adc3312 feat(mcpo): sync config.json to Gitea as source of truth
Adds powerautomate entry with Azure app registration credentials.
Auth dir (/volume1/docker/mcpo/powerautomate-auth/) and config stub
already exist on host from prior session.

NOTE: powerautomate-mcp package not yet on npm - npx will fail until
published. Tracked here for GitOps pipeline; will update command when
package is available or we switch to build-from-source approach.
2026-07-25 15:10:07 -07:00
admin 963a52d665 litellm: upgrade v1.92.1 -> v1.93.0 to fix Bedrock parallel tool call truncation bug 2026-07-24 22:16:39 -07:00
admin 2a1feee03e feat(mcpo): sync config.json from host (real PA_MCP_CLIENT_ID + TENANT_ID) 2026-07-24 22:06:24 -07:00
admin 8fde5266ea chore(ai): remove flat ai.yaml, superseded by ai/ai.yaml 2026-07-24 22:02:22 -07:00
admin 92abfe295f feat(ai): migrate to folder-based stack layout 2026-07-24 22:01:45 -07:00
AVB 8ddc35aef4 Update ai.yaml 2026-07-23 17:18:08 -07:00
AVB 29fb096ce8 Update ai.yaml 2026-07-23 17:02:42 -07:00
admin 3da6a89919 feat(woodpecker): add PA_MCP_CLIENT_ID secret provisioning for ai stack 2026-07-19 14:23:22 -07:00
admin 0030d92ca8 chore(mcpo): sync config.json from live disk - adds powerautomate entry 2026-07-19 14:20:27 -07:00
admin 0f7f00404d feat(mcpo): add config.json to source control with powerautomate, ms365 fixes
- Pin ms365 to 0.129.0 with --discovery flag (fixes MCPO schema parse error)
- Add powerautomate entry (PA_MCP_CLIENT_ID placeholder - needs Azure app reg)
- Update authentik token (was expired)
- teams-mcp-auth volume now source of truth for ms365/teams auth cache
- powerautomate-auth volume wired for future PA auth cache

NOTE: config.json was previously managed manually on disk only.
This commit brings it under GitOps control.
2026-07-19 14:16:40 -07:00
admin 815d953cd7 chore(renovate): remove unused TEAMS_WEBHOOK env - notifications via Gitea webhook 2026-07-19 07:00:37 -07:00
admin 310c68376a chore(renovate): revert postUpgradeTasks - notifications via Gitea webhook instead 2026-07-19 07:00:17 -07:00
admin 43f3fdce94 chore(renovate): add postUpgradeTasks Teams notification via Power Automate webhook 2026-07-19 06:59:49 -07:00
admin d9a6d217bc chore(renovate): pass TEAMS_WEBHOOK secret into renovate container 2026-07-19 06:59:28 -07:00
admin 088d884a88 chore(renovate): add Teams webhook notification via Power Automate 2026-07-19 06:59:02 -07:00
admin 96783bce8c chore(renovate): fix config warnings - remove global-only options, disable woodpecker manager 2026-07-18 22:48:22 -07:00
admin 8185fb5842 feat: add woodpecker cron pipeline for renovate (v3 syntax) 2026-07-18 22:05:19 -07:00
admin fe6c95f54a feat: add renovate.json configuration 2026-07-18 22:05:01 -07:00
admin aea8657092 feat: add renovate env example 2026-07-18 22:05:01 -07:00
admin ac87ea2520 feat: add renovate stack (image update automation) 2026-07-18 22:05:00 -07:00
admin 5a5718a2d3 traefik: fix update order for host-mode/VRRP services (start-first -> stop-first)
reverse-proxy publishes host-mode ports (80/443/1883/5201/5431) — start-first
can never bind while the old task holds the ports, deadlocking every rolling
update. keepalived master/backup run VRRP on the host network — concurrent
old+new speakers with the same router-id risk VIP flapping. Both now use
stop-first (global mode + parallelism=1 + VIP failover keeps ingress up).
Stateless helpers (whoami, speedtest, iperf3, certs-dumper) keep start-first.

Step 1 of Tier 0/1 pipeline inclusion (prep for removing traefik/woodpecker
from the bootstrap manual-deploy guard).
2026-07-16 23:04:00 -07:00
admin 5a24c162cc fix(pipeline): sync bootstrap stack files before guard, not after 2026-07-16 22:29:36 -07:00
admin 4100daa199 Add bootstrap-tier guard to deploy step (traefik/woodpecker/postgresql skip auto-deploy) 2026-07-16 21:44:53 -07:00
admin 26177f5706 Add update_config/rollback_config start-first rolling deploy; fix depends_on indent bug 2026-07-16 21:44:47 -07:00
admin beb53ce9ff Add update_config/rollback_config rolling deploy to all traefik services (start-first, parallelism=1) 2026-07-16 21:44:41 -07:00
AVB 75a009cc29 Merge pull request 'chore: bump litellm-database v1.90.3 → v1.92.0' (#1) from chore/litellm-v1.92.0 into main
Reviewed-on: #1
2026-07-16 07:19:11 -07:00
admin 6221f5d213 chore: bump litellm-database v1.90.3 -> v1.92.0
Latest stable release. Includes Bedrock fixes since 1.90.x
(anthropic-beta header forwarding, converse stream handling,
STS region decoupling).
2026-07-15 22:00:16 -07:00
admin bc1f4f288a fix(security): correct crowdsec-web-ui image typo — thebluffman85 -> theduffman85
Image ghcr.io/thebluffman85/crowdsec-web-ui:latest never existed (typo in org name).
Correct upstream project is TheDuffman85/crowdsec-web-ui on GitHub. Fixed to
ghcr.io/theduffman85/crowdsec-web-ui:latest.

Deployed and verified live on docker-2 prior to this commit:
- security_crowdsec-web-ui now pulls successfully and is Running
- Host(`secure.bryanmail.net`) rule intact, all CROWDSEC_* env vars correct
- security_crowdsec unaffected, still running
2026-07-10 15:43:01 -07:00
admin 1876fedfff feat(postgresql): complete Pattern C migration — remove leftover env_file directives
Docker secrets (postgresql_password, postgresql_pgadmin_password) already handled
POSTGRES_PASSWORD_FILE/PGADMIN_DEFAULT_PASSWORD_FILE. This removes the two remaining
`env_file: - postgresql.env` lines (postgresql + pgadmin services) which were redundant
and left the stack in a half-migrated hybrid state. Non-secret vars (POSTGRES_USER,
PGADMIN_DEFAULT_EMAIL, DATABASUS_HOST, PGADMIN_HOST) continue to be supplied via
stack-deploy.sh's envsubst mechanism from postgresql.env at deploy time — no functional
change to those values.

Deployed and verified live on docker-2 prior to this commit:
- postgresql_postgresql: pg_isready OK, all 21 databases intact, psql auth via Docker secret confirmed
- postgresql_pgadmin: Host(`dba.bryanmail.net`) rule + PGADMIN_DEFAULT_EMAIL correct
- postgresql_databasus: running
- All dependent stacks (mealie, vaultwarden, auth, media, homeassistant, guacamole, security) remained healthy throughout, zero reconnect issues
2026-07-10 15:36:15 -07:00
admin fc1c808041 chore(guacamole): remove DOMAIN - provided by global.env 2026-07-10 15:31:30 -07:00
admin 6f571ae877 chore(mealie): remove DOMAIN - provided by global.env 2026-07-10 15:31:29 -07:00
admin ee7034c4e7 chore(security): remove DOMAIN - provided by global.env 2026-07-10 15:31:29 -07:00
admin e41149f0ab chore(vaultwarden): remove DOMAIN+ALT_DOMAIN - provided by global.env 2026-07-10 15:31:28 -07:00
admin 30dc3d0f22 chore(homeassistant): remove DOMAIN - provided by global.env 2026-07-10 15:31:28 -07:00
admin 6587c62d80 chore(maintenance): remove DOMAIN - provided by global.env 2026-07-10 15:31:27 -07:00
admin 2ac4a73ae7 chore(traefik): remove DOMAIN - provided by global.env 2026-07-10 15:31:27 -07:00
admin 09e97b1572 chore(media): remove DOMAIN - provided by global.env
ci/woodpecker/push/woodpecker Pipeline was canceled
2026-07-10 15:31:26 -07:00
admin 8884e9c0ff fix(global.env): ALT_DOMAIN=whooshh.net
ci/woodpecker/push/woodpecker Pipeline was canceled
2026-07-10 15:31:26 -07:00
AVB e1e5811c80 Update .woodpecker.yml
ci/woodpecker/push/woodpecker Pipeline was successful
2026-07-10 00:05:05 -07:00
AVB 852a879503 Update .woodpecker.yml
ci/woodpecker/push/woodpecker Pipeline was successful
2026-07-09 23:58:37 -07:00
admin 2b6e937b57 feat(stack-deploy): load global.env as base, stack env overrides on top
ci/woodpecker/push/woodpecker Pipeline was canceled
2026-07-08 21:29:15 -07:00
admin b664e9d41d feat(envparse): add merge mode for global+stack env layering
ci/woodpecker/push/woodpecker Pipeline was successful
2026-07-08 21:29:13 -07:00