Compare commits

..

9 Commits

Author SHA1 Message Date
Morten Olsen
bc67429cd2 move to pgvector (#61) 2025-10-13 23:00:54 +02:00
Morten Olsen
af2aae493e Fix/docker (#60) 2025-10-13 22:35:40 +02:00
Morten Olsen
2af701b518 chore(config): migrate renovate config (#51)
The Renovate config in this repository needs migrating. Typically this
is because one or more configuration options you are using have been
renamed.

You don't need to merge this PR right away, because Renovate will
continue to migrate these fields internally each time it runs. But later
some of these fields may be fully deprecated and the migrations removed.
So it's a good idea to merge this migration PR soon.



#### [PLEASE
NOTE](https://docs.renovatebot.com/configuration-options#configmigration):
JSON5 config file migrated! All comments & trailing commas were removed.

🔕 **Ignore**: Close this PR and you won't be reminded about config
migration again, but one day your current config may no longer be valid.

 Got questions? Does something look wrong to you? Please don't hesitate
to [request help
here](https://redirect.github.com/renovatebot/renovate/discussions).


---

This PR has been generated by [Renovate
Bot](https://redirect.github.com/renovatebot/renovate).

Co-authored-by: Renovate Bot <renovate@whitesourcesoftware.com>
2025-09-25 21:32:40 +02:00
Morten Olsen
f550acd68b Remove apps (#50) 2025-09-25 20:56:08 +02:00
renovate[bot]
b3416b84fa chore(deps): update eslint monorepo to v9.36.0 (#33)
Coming soon: The Renovate bot (GitHub App) will be renamed to Mend. PRs
from Renovate will soon appear from 'Mend'. Learn more
[here](https://redirect.github.com/renovatebot/renovate/discussions/37842).

This PR contains the following updates:

| Package | Change | Age | Confidence |
|---|---|---|---|
| [@eslint/js](https://eslint.org)
([source](https://redirect.github.com/eslint/eslint/tree/HEAD/packages/js))
| [`9.32.0` ->
`9.36.0`](https://renovatebot.com/diffs/npm/@eslint%2fjs/9.32.0/9.36.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@eslint%2fjs/9.36.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@eslint%2fjs/9.32.0/9.36.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [eslint](https://eslint.org)
([source](https://redirect.github.com/eslint/eslint)) | [`9.32.0` ->
`9.36.0`](https://renovatebot.com/diffs/npm/eslint/9.32.0/9.36.0) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/eslint/9.36.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/eslint/9.32.0/9.36.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>eslint/eslint (@&#8203;eslint/js)</summary>

###
[`v9.36.0`](https://redirect.github.com/eslint/eslint/releases/tag/v9.36.0)

[Compare
Source](https://redirect.github.com/eslint/eslint/compare/v9.35.0...v9.36.0)

#### Features

-
[`47afcf6`](47afcf668d)
feat: correct `preserve-caught-error` edge cases
([#&#8203;20109](https://redirect.github.com/eslint/eslint/issues/20109))
(Francesco Trotta)

#### Bug Fixes

-
[`75b74d8`](75b74d865d)
fix: add missing rule option types
([#&#8203;20127](https://redirect.github.com/eslint/eslint/issues/20127))
(ntnyq)
-
[`1c0d850`](1c0d85049e)
fix: update `eslint-all.js` to use `Object.freeze` for `rules` object
([#&#8203;20116](https://redirect.github.com/eslint/eslint/issues/20116))
(루밀LuMir)
-
[`7d61b7f`](7d61b7fadc)
fix: add missing scope types to `Scope.type`
([#&#8203;20110](https://redirect.github.com/eslint/eslint/issues/20110))
(Pixel998)
-
[`7a670c3`](7a670c301b)
fix: correct rule option typings in `rules.d.ts`
([#&#8203;20084](https://redirect.github.com/eslint/eslint/issues/20084))
(Pixel998)

#### Documentation

-
[`b73ab12`](b73ab12acd)
docs: update examples to use `defineConfig`
([#&#8203;20131](https://redirect.github.com/eslint/eslint/issues/20131))
(sethamus)
-
[`31d9392`](31d9392699)
docs: fix typos
([#&#8203;20118](https://redirect.github.com/eslint/eslint/issues/20118))
(Pixel998)
-
[`c7f861b`](c7f861b3f8)
docs: Update README (GitHub Actions Bot)
-
[`6b0c08b`](6b0c08b106)
docs: Update README (GitHub Actions Bot)
-
[`91f97c5`](91f97c5046)
docs: Update README (GitHub Actions Bot)

#### Chores

-
[`12411e8`](12411e8d45)
chore: upgrade
[@&#8203;eslint/js](https://redirect.github.com/eslint/js)@&#8203;9.36.0
([#&#8203;20139](https://redirect.github.com/eslint/eslint/issues/20139))
(Milos Djermanovic)
-
[`488cba6`](488cba6b39)
chore: package.json update for
[@&#8203;eslint/js](https://redirect.github.com/eslint/js) release
(Jenkins)
-
[`bac82a2`](bac82a2a9c)
ci: simplify renovate configuration
([#&#8203;19907](https://redirect.github.com/eslint/eslint/issues/19907))
(唯然)
-
[`c00bb37`](c00bb37d62)
ci: bump actions/labeler from 5 to 6
([#&#8203;20090](https://redirect.github.com/eslint/eslint/issues/20090))
(dependabot\[bot])
-
[`fee751d`](fee751dc8a)
refactor: use `defaultOptions` in rules
([#&#8203;20121](https://redirect.github.com/eslint/eslint/issues/20121))
(Pixel998)
-
[`1ace67d`](1ace67d9f7)
chore: update example to use `defineConfig`
([#&#8203;20111](https://redirect.github.com/eslint/eslint/issues/20111))
(루밀LuMir)
-
[`4821963`](4821963bf7)
test: add missing loc information to error objects in rule tests
([#&#8203;20112](https://redirect.github.com/eslint/eslint/issues/20112))
(루밀LuMir)
-
[`b42c42e`](b42c42e7cd)
chore: disallow use of deprecated `type` property in core rule tests
([#&#8203;20094](https://redirect.github.com/eslint/eslint/issues/20094))
(Milos Djermanovic)
-
[`7bb498d`](7bb498d720)
test: remove deprecated `type` property from core rule tests
([#&#8203;20093](https://redirect.github.com/eslint/eslint/issues/20093))
(Pixel998)
-
[`e10cf2a`](e10cf2ab42)
ci: bump actions/setup-node from 4 to 5
([#&#8203;20089](https://redirect.github.com/eslint/eslint/issues/20089))
(dependabot\[bot])
-
[`5cb0ce4`](5cb0ce48ef)
refactor: use `meta.defaultOptions` in `preserve-caught-error`
([#&#8203;20080](https://redirect.github.com/eslint/eslint/issues/20080))
(Pixel998)
-
[`f9f7cb5`](f9f7cb578d)
chore: package.json update for eslint-config-eslint release (Jenkins)
-
[`81764b2`](81764b2980)
chore: update `eslint` peer dependency in `eslint-config-eslint`
([#&#8203;20079](https://redirect.github.com/eslint/eslint/issues/20079))
(Milos Djermanovic)

###
[`v9.35.0`](https://redirect.github.com/eslint/eslint/compare/v9.34.0...af2a0870fdc646091d027516601888923e5bc202)

[Compare
Source](https://redirect.github.com/eslint/eslint/compare/v9.34.0...v9.35.0)

###
[`v9.34.0`](https://redirect.github.com/eslint/eslint/compare/v9.33.0...b48fa20034e53bc65d1a58f3d834705e3087b00c)

[Compare
Source](https://redirect.github.com/eslint/eslint/compare/v9.33.0...v9.34.0)

###
[`v9.33.0`](https://redirect.github.com/eslint/eslint/compare/v9.32.0...ad283717ed4764a171120ca7c6cba82a78fa024c)

[Compare
Source](https://redirect.github.com/eslint/eslint/compare/v9.32.0...v9.33.0)

</details>

<details>
<summary>eslint/eslint (eslint)</summary>

###
[`v9.36.0`](https://redirect.github.com/eslint/eslint/compare/v9.35.0...b4857e54e54b5dba96d156cd8d8b4d42dc5a3bf4)

[Compare
Source](https://redirect.github.com/eslint/eslint/compare/v9.35.0...v9.36.0)

###
[`v9.35.0`](https://redirect.github.com/eslint/eslint/compare/v9.34.0...8401101d1e3e3e4e1edc2a9e59cafc9956bf2610)

[Compare
Source](https://redirect.github.com/eslint/eslint/compare/v9.34.0...v9.35.0)

###
[`v9.34.0`](https://redirect.github.com/eslint/eslint/compare/v9.33.0...b8875f67a7bc99824f19147f4a669be7e98f3eee)

[Compare
Source](https://redirect.github.com/eslint/eslint/compare/v9.33.0...v9.34.0)

###
[`v9.33.0`](https://redirect.github.com/eslint/eslint/compare/v9.32.0...a90d7c4fe5ef83054e29d21d7ffb442103429d03)

[Compare
Source](https://redirect.github.com/eslint/eslint/compare/v9.32.0...v9.33.0)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these
updates again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/morten-olsen/homelab-operator).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS45Ny4xMCIsInVwZGF0ZWRJblZlciI6IjQxLjk3LjEwIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-24 00:52:06 +02:00
renovate[bot]
1f5e5d57cb chore(deps): update renovatebot/github-action action to v43 (#41)
Coming soon: The Renovate bot (GitHub App) will be renamed to Mend. PRs
from Renovate will soon appear from 'Mend'. Learn more
[here](https://redirect.github.com/renovatebot/renovate/discussions/37842).

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
|
[renovatebot/github-action](https://redirect.github.com/renovatebot/github-action)
| action | major | `v40.3.6` -> `v43.0.13` |

---

### Release Notes

<details>
<summary>renovatebot/github-action (renovatebot/github-action)</summary>

###
[`v43.0.13`](https://redirect.github.com/renovatebot/github-action/releases/tag/v43.0.13)

[Compare
Source](https://redirect.github.com/renovatebot/github-action/compare/v43.0.12...v43.0.13)

##### Documentation

- update references to ghcr.io/renovatebot/renovate to v41.122.3
([e77f32f](e77f32f947))
- update references to renovatebot/github-action to v43.0.12
([653e4da](653e4da64c))

##### Miscellaneous Chores

- **deps:** update dependency
[@&#8203;semantic-release/github](https://redirect.github.com/semantic-release/github)
to v11.0.6
([ea536ec](ea536ec7f8))
- **deps:** update dependency
[@&#8203;types/node](https://redirect.github.com/types/node) to
v20.19.14
([ed55387](ed55387191))
- **deps:** update dependency globals to v16.4.0
([ba12fc4](ba12fc491e))
- **deps:** update dependency semantic-release to v24.2.8
([bdb84f9](bdb84f9d76))
- **deps:** update dependency typescript-eslint to v8.43.0
([616a01b](616a01b57f))
- **deps:** update pnpm to v10.16.0
([08a05ea](08a05eac75))
- **deps:** update pnpm to v10.16.1
([bcc5fe0](bcc5fe06a7))

##### Build System

- **deps:** lock file maintenance
([1278ad3](1278ad3a00))

##### Continuous Integration

- **deps:** update renovate docker tag to v41.113.5
([8107f7d](8107f7d58d))
- **deps:** update renovate docker tag to v41.113.6
([c25039a](c25039a976))
- **deps:** update renovate docker tag to v41.113.7
([547c0f0](547c0f00ee))
- **deps:** update renovate docker tag to v41.114.0
([9b1f431](9b1f431640))
- **deps:** update renovate docker tag to v41.115.0
([f757c34](f757c349b5))
- **deps:** update renovate docker tag to v41.115.1
([d585b00](d585b000d6))
- **deps:** update renovate docker tag to v41.115.2
([8c011ca](8c011caef2))
- **deps:** update renovate docker tag to v41.115.4
([52f66bb](52f66bb6c6))
- **deps:** update renovate docker tag to v41.115.5
([7390745](7390745d95))
- **deps:** update renovate docker tag to v41.115.6
([498edef](498edef6c8))
- **deps:** update renovate docker tag to v41.116.1
([4f9581d](4f9581d96e))
- **deps:** update renovate docker tag to v41.116.10
([c9a9c99](c9a9c99cd3))
- **deps:** update renovate docker tag to v41.116.2
([ed4d0bb](ed4d0bb582))
- **deps:** update renovate docker tag to v41.116.3
([1b30889](1b308896cd))
- **deps:** update renovate docker tag to v41.116.5
([b96fb41](b96fb41d00))
- **deps:** update renovate docker tag to v41.116.6
([9bcf08c](9bcf08ccd6))
- **deps:** update renovate docker tag to v41.116.7
([b89adc7](b89adc7566))
- **deps:** update renovate docker tag to v41.116.8
([abee5ff](abee5ff462))
- **deps:** update renovate docker tag to v41.117.0
([4a4709f](4a4709fd5f))
- **deps:** update renovate docker tag to v41.118.0
([ecbe520](ecbe5207c6))
- **deps:** update renovate docker tag to v41.118.1
([051f97e](051f97e2de))
- **deps:** update renovate docker tag to v41.119.0
([28e7e1d](28e7e1de34))
- **deps:** update renovate docker tag to v41.119.4
([a1ffb8d](a1ffb8d2bc))
- **deps:** update renovate docker tag to v41.119.5
([49be121](49be121dc6))
- **deps:** update renovate docker tag to v41.119.6
([8f6f258](8f6f258c3b))
- **deps:** update renovate docker tag to v41.121.1
([3e88114](3e8811483b))
- **deps:** update renovate docker tag to v41.121.3
([db50bb4](db50bb46f8))
- **deps:** update renovate docker tag to v41.121.4
([47f54ca](47f54ca0cc))
- **deps:** update renovate docker tag to v41.122.0
([0d90aa6](0d90aa6bd2))
- **deps:** update renovate docker tag to v41.122.1
([41ba176](41ba1762f4))
- **deps:** update renovate docker tag to v41.122.2
([18ca40b](18ca40b978))
- **deps:** update renovate docker tag to v41.122.3
([8462f7c](8462f7c19a))

###
[`v43.0.12`](https://redirect.github.com/renovatebot/github-action/releases/tag/v43.0.12)

[Compare
Source](https://redirect.github.com/renovatebot/github-action/compare/v43.0.11...v43.0.12)

##### Documentation

- update references to ghcr.io/renovatebot/renovate to v41.113.3
([6ff1007](6ff1007d74))
- update references to renovatebot/github-action to v43.0.11
([b1f4d3e](b1f4d3ed95))

##### Miscellaneous Chores

- **deps:** update dependency
[@&#8203;types/node](https://redirect.github.com/types/node) to
v20.19.12
([9e39ec0](9e39ec0dc7))
- **deps:** update dependency
[@&#8203;types/node](https://redirect.github.com/types/node) to
v20.19.13
([c45925e](c45925e00e))
- **deps:** update dependency typescript-eslint to v8.42.0
([0065091](00650917d4))
- **deps:** update linters to v9.35.0
([da1ea10](da1ea10570))
- **deps:** update pnpm to v10.15.1
([19bd80c](19bd80c31d))

##### Build System

- **deps:** lock file maintenance
([983234a](983234a432))

##### Continuous Integration

- **deps:** update renovate docker tag to v41.100.0
([f3ac028](f3ac028ebf))
- **deps:** update renovate docker tag to v41.103.0
([bc2b208](bc2b208750))
- **deps:** update renovate docker tag to v41.105.0
([c64558a](c64558a9bb))
- **deps:** update renovate docker tag to v41.107.0
([8891399](88913997e2))
- **deps:** update renovate docker tag to v41.109.0
([71ce752](71ce7526fe))
- **deps:** update renovate docker tag to v41.111.0
([3e4fb61](3e4fb61c5c))
- **deps:** update renovate docker tag to v41.112.0
([4833cda](4833cdabd0))
- **deps:** update renovate docker tag to v41.113.0
([23d00ec](23d00ec246))
- **deps:** update renovate docker tag to v41.113.2
([94eed51](94eed51595))
- **deps:** update renovate docker tag to v41.113.3
([1bdfd59](1bdfd59d24))
- **deps:** update renovate docker tag to v41.97.10
([dc222e4](dc222e45f0))
- **deps:** update renovate docker tag to v41.98.0
([6675bb6](6675bb6606))
- **deps:** update renovate docker tag to v41.98.1
([e8c62d0](e8c62d0737))
- **deps:** update renovate docker tag to v41.98.2
([b33786c](b33786c6c9))
- **deps:** update renovate docker tag to v41.98.3
([ad18df2](ad18df2834))
- **deps:** update renovate docker tag to v41.98.4
([3194766](3194766ef4))
- **deps:** update renovate docker tag to v41.99.1
([04f5a7f](04f5a7fc7a))
- **deps:** update renovate docker tag to v41.99.11
([c4dc84e](c4dc84e7e1))
- **deps:** update renovate docker tag to v41.99.2
([f8e1197](f8e1197a5b))
- **deps:** update renovate docker tag to v41.99.5
([ff05f9e](ff05f9e5cd))
- **deps:** update renovate docker tag to v41.99.6
([e66f3a5](e66f3a5292))
- **deps:** update renovate docker tag to v41.99.7
([ace35a1](ace35a1cc7))
- **deps:** update renovate docker tag to v41.99.8
([be9ee49](be9ee49b4f))
- **deps:** update renovate docker tag to v41.99.9
([ab4314a](ab4314a776))

###
[`v43.0.11`](https://redirect.github.com/renovatebot/github-action/releases/tag/v43.0.11)

[Compare
Source](https://redirect.github.com/renovatebot/github-action/compare/v43.0.10...v43.0.11)

##### Documentation

- update references to ghcr.io/renovatebot/renovate to v41.97.9
([6393760](639376097c))
- update references to renovatebot/github-action to v43.0.10
([f6c87b9](f6c87b9ba0))

##### Miscellaneous Chores

- **deps:** update dependency
[@&#8203;semantic-release/github](https://redirect.github.com/semantic-release/github)
to v11.0.5
([358d227](358d227da9))
- **deps:** update dependency typescript-eslint to v8.41.0
([8107f53](8107f530db))
- **deps:** update node.js to v20.19.5
([017ff1e](017ff1ea6f))

##### Build System

- **deps:** lock file maintenance
([2cf635b](2cf635b3cd))

##### Continuous Integration

- **deps:** update renovate docker tag to v41.91.4
([e2dc787](e2dc78789d))
- **deps:** update renovate docker tag to v41.92.0
([28726c5](28726c5c9b))
- **deps:** update renovate docker tag to v41.92.1
([c8b6f32](c8b6f3235f))
- **deps:** update renovate docker tag to v41.93.2
([37b57c5](37b57c59ba))
- **deps:** update renovate docker tag to v41.93.3
([d547e06](d547e06b71))
- **deps:** update renovate docker tag to v41.95.0
([d4b451d](d4b451dddc))
- **deps:** update renovate docker tag to v41.95.2
([6ddecaa](6ddecaad6d))
- **deps:** update renovate docker tag to v41.96.0
([a99d64b](a99d64bd4c))
- **deps:** update renovate docker tag to v41.96.1
([43d7691](43d7691f81))
- **deps:** update renovate docker tag to v41.96.2
([36ab9e6](36ab9e6077))
- **deps:** update renovate docker tag to v41.97.2
([1bd590d](1bd590d6bc))
- **deps:** update renovate docker tag to v41.97.4
([3902134](3902134132))
- **deps:** update renovate docker tag to v41.97.5
([70b1fce](70b1fcef0a))
- **deps:** update renovate docker tag to v41.97.7
([df7fd2e](df7fd2eac1))
- **deps:** update renovate docker tag to v41.97.9
([e74772d](e74772da24))

###
[`v43.0.10`](https://redirect.github.com/renovatebot/github-action/releases/tag/v43.0.10)

[Compare
Source](https://redirect.github.com/renovatebot/github-action/compare/v43.0.9...v43.0.10)

##### Documentation

- update references to ghcr.io/renovatebot/renovate to v41.91.3
([2421bf0](2421bf05c4))
- update references to renovatebot/github-action to v43.0.9
([dce1fd0](dce1fd0df0))

##### Miscellaneous Chores

- **deps:** update dependency typescript-eslint to v8.40.0
([2cc3b36](2cc3b362ea))
- **deps:** update linters to v9.34.0
([b091292](b0912928a7))
- **deps:** update pnpm to v10.15.0
([0f19013](0f190130d2))

##### Build System

- **deps:** lock file maintenance
([b818791](b818791eb8))

##### Continuous Integration

- **deps:** update renovate docker tag to v41.83.1
([d3ec2f4](d3ec2f4b9a))
- **deps:** update renovate docker tag to v41.83.2
([e996eb9](e996eb91ce))
- **deps:** update renovate docker tag to v41.84.0
([8ad79b0](8ad79b0a6a))
- **deps:** update renovate docker tag to v41.85.0
([08e121c](08e121c3b9))
- **deps:** update renovate docker tag to v41.86.0
([fa48644](fa48644f2e))
- **deps:** update renovate docker tag to v41.87.0
([ce54d02](ce54d02fda))
- **deps:** update renovate docker tag to v41.87.1
([55e08ff](55e08ff622))
- **deps:** update renovate docker tag to v41.87.3
([9d099f0](9d099f0774))
- **deps:** update renovate docker tag to v41.87.4
([ba0ae33](ba0ae33a3b))
- **deps:** update renovate docker tag to v41.88.0
([a8d1405](a8d1405861))
- **deps:** update renovate docker tag to v41.88.1
([4584b1f](4584b1fdcb))
- **deps:** update renovate docker tag to v41.88.2
([53dc6d0](53dc6d09c2))
- **deps:** update renovate docker tag to v41.89.1
([d8007b4](d8007b4214))
- **deps:** update renovate docker tag to v41.90.0
([6398f00](6398f00d52))
- **deps:** update renovate docker tag to v41.91.0
([f379948](f37994859b))
- **deps:** update renovate docker tag to v41.91.1
([369fe18](369fe18820))
- **deps:** update renovate docker tag to v41.91.2
([eb52b67](eb52b67292))
- **deps:** update renovate docker tag to v41.91.3
([79f3f97](79f3f978ab))

###
[`v43.0.9`](https://redirect.github.com/renovatebot/github-action/releases/tag/v43.0.9)

[Compare
Source](https://redirect.github.com/renovatebot/github-action/compare/v43.0.8...v43.0.9)

##### Documentation

- update references to ghcr.io/renovatebot/renovate to v41.82.10
([b051c54](b051c54164))
- update references to renovatebot/github-action to v43.0.8
([1975fdd](1975fdd1e0))

##### Miscellaneous Chores

- **deps:** update dependency
[@&#8203;types/node](https://redirect.github.com/types/node) to
v20.19.11
([db24234](db24234d76))
- **deps:** update dependency esbuild to v0.25.9
([03070ea](03070ea35a))
- **deps:** update dependency typescript-eslint to v8.39.1
([f87ec92](f87ec927eb))

##### Build System

- **deps:** lock file maintenance
([7fba116](7fba116efd))

##### Continuous Integration

- **deps:** update renovate docker tag to v41.77.0
([0dadd22](0dadd22546))
- **deps:** update renovate docker tag to v41.78.1
([80ca251](80ca251c36))
- **deps:** update renovate docker tag to v41.79.0
([5f906d3](5f906d3765))
- **deps:** update renovate docker tag to v41.80.0
([74d8d43](74d8d43f0b))
- **deps:** update renovate docker tag to v41.81.0
([0fdafb0](0fdafb07ca))
- **deps:** update renovate docker tag to v41.81.1
([8a0a452](8a0a452089))
- **deps:** update renovate docker tag to v41.81.2
([36c5210](36c5210215))
- **deps:** update renovate docker tag to v41.81.4
([c779f49](c779f493c5))
- **deps:** update renovate docker tag to v41.81.5
([85fd9ac](85fd9ac3d5))
- **deps:** update renovate docker tag to v41.81.6
([9993804](99938042ba))
- **deps:** update renovate docker tag to v41.82.1
([dd2f675](dd2f675ddd))
- **deps:** update renovate docker tag to v41.82.10
([f34823e](f34823e3a3))
- **deps:** update renovate docker tag to v41.82.3
([f920e5a](f920e5a83d))
- **deps:** update renovate docker tag to v41.82.4
([c715863](c7158638af))
- **deps:** update renovate docker tag to v41.82.5
([8116e7d](8116e7d10b))
- **deps:** update renovate docker tag to v41.82.6
([6a5439d](6a5439db7c))
- **deps:** update renovate docker tag to v41.82.9
([0c87c2d](0c87c2dfc9))

###
[`v43.0.8`](https://redirect.github.com/renovatebot/github-action/releases/tag/v43.0.8)

[Compare
Source](https://redirect.github.com/renovatebot/github-action/compare/v43.0.7...v43.0.8)

##### Documentation

- update references to ghcr.io/renovatebot/renovate to v41.76.0
([03f5409](03f54097a8))
- update references to renovatebot/github-action to v43.0.7
([3481be4](3481be4d37))

##### Miscellaneous Chores

- **deps:** update dependency
[@&#8203;semantic-release/github](https://redirect.github.com/semantic-release/github)
to v11.0.4
([ac62f3b](ac62f3bb46))
- **deps:** update dependency
[@&#8203;types/node](https://redirect.github.com/types/node) to
v20.19.10
([c6850c5](c6850c5279))
- **deps:** update dependency typescript-eslint to v8.39.0
([cdd6478](cdd647815f))
- **deps:** update linters to v9.33.0
([c9eb89b](c9eb89b063))

##### Build System

- **deps:** lock file maintenance
([24ab2b0](24ab2b0351))

##### Continuous Integration

- **deps:** update actions/checkout action to v4.3.0
([3829454](38294546f7))
- **deps:** update renovate docker tag to v41.62.1
([a85412b](a85412bc78))
- **deps:** update renovate docker tag to v41.62.3
([3e97d68](3e97d68dfd))
- **deps:** update renovate docker tag to v41.62.4
([7e836da](7e836dad6e))
- **deps:** update renovate docker tag to v41.63.0
([169ad71](169ad71fde))
- **deps:** update renovate docker tag to v41.64.2
([54725d8](54725d82ce))
- **deps:** update renovate docker tag to v41.65.1
([948aa51](948aa51a0a))
- **deps:** update renovate docker tag to v41.66.1
([cdcd0eb](cdcd0eb690))
- **deps:** update renovate docker tag to v41.66.2
([537077b](537077bdda))
- **deps:** update renovate docker tag to v41.67.0
([071bd60](071bd60714))
- **deps:** update renovate docker tag to v41.69.1
([695ae37](695ae37dff))
- **deps:** update renovate docker tag to v41.70.0
([4863736](48637365ba))
- **deps:** update renovate docker tag to v41.70.2
([5637275](563727593a))
- **deps:** update renovate docker tag to v41.70.3
([e7203d7](e7203d7c12))
- **deps:** update renovate docker tag to v41.71.0
([08298cd](08298cd19c))
- **deps:** update renovate docker tag to v41.71.1
([7703e2a](7703e2a57d))
- **deps:** update renovate docker tag to v41.72.0
([e4cc9c1](e4cc9c11ed))
- **deps:** update renovate docker tag to v41.72.1
([0f819de](0f819de561))
- **deps:** update renovate docker tag to v41.73.0
([2d06c86](2d06c8696f))
- **deps:** update renovate docker tag to v41.73.2
([e4af55d](e4af55d5b6))
- **deps:** update renovate docker tag to v41.74.0
([12bcbe7](12bcbe72e8))
- **deps:** update renovate docker tag to v41.74.1
([5c6501f](5c6501ff43))
- **deps:** update renovate docker tag to v41.74.2
([8144346](81443463ad))
- **deps:** update renovate docker tag to v41.74.3
([748c10b](748c10b208))
- **deps:** update renovate docker tag to v41.75.0
([0487302](04873024ee))
- **deps:** update renovate docker tag to v41.76.0
([8823e9c](8823e9ced0))

###
[`v43.0.7`](https://redirect.github.com/renovatebot/github-action/releases/tag/v43.0.7)

[Compare
Source](https://redirect.github.com/renovatebot/github-action/compare/v43.0.6...v43.0.7)

##### Documentation

- update references to ghcr.io/renovatebot/renovate to v41.61.1
([95f368a](95f368a7a3))
- update references to renovatebot/github-action to v43.0.6
([b7cf923](b7cf9238b9))

##### Build System

- **deps:** lock file maintenance
([4d96b3f](4d96b3f6d7))

##### Continuous Integration

- **deps:** update renovate docker tag to v41.58.1
([aa067a1](aa067a115f))
- **deps:** update renovate docker tag to v41.58.2
([10e5a16](10e5a16cda))
- **deps:** update renovate docker tag to v41.59.0
([12a24fb](12a24fba20))
- **deps:** update renovate docker tag to v41.59.1
([a73f200](a73f2004fa))
- **deps:** update renovate docker tag to v41.59.2
([bbc2a0c](bbc2a0c8dd))
- **deps:** update renovate docker tag to v41.60.0
([c7f19cc](c7f19cc747))
- **deps:** update renovate docker tag to v41.60.1
([f853f18](f853f18a46))
- **deps:** update renovate docker tag to v41.60.2
([9c7fec5](9c7fec5dc5))
- **deps:** update renovate docker tag to v41.60.3
([76c3031](76c3031e42))
- **deps:** update renovate docker tag to v41.60.4
([7d15670](7d15670f8b))
- **deps:** update renovate docker tag to v41.61.0
([9d148c6](9d148c60c5))
- **deps:** update renovate docker tag to v41.61.1
([64de403](64de403420))

###
[`v43.0.6`](https://redirect.github.com/renovatebot/github-action/releases/tag/v43.0.6)

[Compare
Source](https://redirect.github.com/renovatebot/github-action/compare/v43.0.5...v43.0.6)

##### Documentation

- update references to renovatebot/github-action to v43.0.5
([9d38d60](9d38d60caf))

##### Miscellaneous Chores

- **deps:** update actions/cache action to v4.2.4
([cc05524](cc055242a4))
- **deps:** update dependency typescript-eslint to v8.38.0
([8754a30](8754a307cd))
- **deps:** update linters to v9.32.0
([a4d46be](a4d46bed14))
- **deps:** update pnpm to v10.14.0
([6afa04b](6afa04b149))

##### Build System

- **deps:** update dependency typescript to v5.9.2
([dba2ce6](dba2ce621e))

##### Continuous Integration

- **deps:** update renovate docker tag to v41.55.2
([f548d3b](f548d3b85f))
- **deps:** update renovate docker tag to v41.55.3
([33274ad](33274ad078))
- **deps:** update renovate docker tag to v41.56.1
([ab69233](ab692339af))
- **deps:** update renovate docker tag to v41.57.1
([18abe0f](18abe0f2a3))

###
[`v43.0.5`](https://redirect.github.com/renovatebot/github-action/releases/tag/v43.0.5)

[Compare
Source](https://redirect.github.com/renovatebot/github-action/compare/v43.0.4...v43.0.5)

##### Documentation

- update references to ghcr.io/renovatebot/renovate to v41.43.5
([4ad9ffe](4ad9ffee08))
- update references to renovatebot/github-action to v43.0.4
([dece3de](dece3de84c))

##### Miscellaneous Chores

- **deps:** update dependency
[@&#8203;types/node](https://redirect.github.com/types/node) to v20.19.8
([d5ef9da](d5ef9dafd1))
- **deps:** update dependency
[@&#8203;types/node](https://redirect.github.com/types/node) to v20.19.9
([92c9c01](92c9c011a8))
- **deps:** update dependency esbuild to v0.25.7
([b17b134](b17b13479b))
- **deps:** update dependency esbuild to v0.25.8
([bc7164b](bc7164bacd))
- **deps:** update dependency eslint-config-prettier to v10.1.8
([7c30522](7c30522e13))
- **deps:** update dependency prettier-plugin-packagejson to v2.5.19
([c575bac](c575bac545))
- **deps:** update dependency typescript-eslint to v8.37.0
([e1880ed](e1880ed408))

##### Build System

- **deps:** lock file maintenance
([dbecb71](dbecb71499))

##### Continuous Integration

- **deps:** update renovate docker tag to v41.42.0
([5a652eb](5a652eb2c3))
- **deps:** update renovate docker tag to v41.42.1
([426b9fb](426b9fb1e3))
- **deps:** update renovate docker tag to v41.42.10
([8fb57da](8fb57da6de))
- **deps:** update renovate docker tag to v41.42.11
([d110957](d1109576cf))
- **deps:** update renovate docker tag to v41.42.12
([2cfb1d5](2cfb1d5a0c))
- **deps:** update renovate docker tag to v41.42.2
([782dc42](782dc423db))
- **deps:** update renovate docker tag to v41.42.3
([21038ac](21038acb7b))
- **deps:** update renovate docker tag to v41.42.6
([2684bae](2684bae751))
- **deps:** update renovate docker tag to v41.42.8
([5cbc6ab](5cbc6ab617))
- **deps:** update renovate docker tag to v41.42.9
([eee1a9c](eee1a9cf7b))
- **deps:** update renovate docker tag to v41.43.0
([946e1e6](946e1e64ad))
- **deps:** update renovate docker tag to v41.43.1
([ba5e92b](ba5e92be41))
- **deps:** update renovate docker tag to v41.43.2
([fd74a16](fd74a1658c))
- **deps:** update renovate docker tag to v41.43.3
([516fa29](516fa291b2))
- **deps:** update renovate docker tag to v41.43.4
([13a309d](13a309d1dd))
- **deps:** update renovate docker tag to v41.43.5
([6ce8cbf](6ce8cbfc76))

###
[`v43.0.4`](https://redirect.github.com/renovatebot/github-action/releases/tag/v43.0.4)

[Compare
Source](https://redirect.github.com/renovatebot/github-action/compare/v43.0.3...v43.0.4)

##### Documentation

- update references to ghcr.io/renovatebot/renovate to v41.40.0
([f6b47f9](f6b47f9f9b))
- update references to renovatebot/github-action to v43.0.3
([bf65217](bf652174bf))

##### Miscellaneous Chores

- **config:** migrate renovate config
([#&#8203;936](https://redirect.github.com/renovatebot/github-action/issues/936))
([39633a9](39633a9695))
- **deps:** update dependency
[@&#8203;types/node](https://redirect.github.com/types/node) to v20.19.5
([d64161e](d64161e18f))
- **deps:** update dependency
[@&#8203;types/node](https://redirect.github.com/types/node) to v20.19.7
([eac9c05](eac9c05561))
- **deps:** update dependency esbuild to v0.25.6
([398b041](398b041df8))
- **deps:** update dependency semantic-release to v24.2.7
([0e82a2f](0e82a2f12b))
- **deps:** update dependency typescript-eslint to v8.36.0
([14ba7bd](14ba7bde78))
- **deps:** update linters to v9.31.0
([44c4924](44c49249db))
- **deps:** update node.js to v20.19.4
([0c87f01](0c87f017aa))
- **deps:** update pnpm to v10.13.1
([96af53d](96af53dc07))

##### Build System

- **deps:** lock file maintenance
([82e5b44](82e5b44a74))

##### Continuous Integration

- **deps:** update renovate docker tag to v41.32.2
([3be7801](3be7801303))
- **deps:** update renovate docker tag to v41.32.3
([cb848a9](cb848a9bbe))
- **deps:** update renovate docker tag to v41.33.0
([c4c734c](c4c734c485))
- **deps:** update renovate docker tag to v41.34.1
([9e4d256](9e4d256200))
- **deps:** update renovate docker tag to v41.35.0
([ccc4bcc](ccc4bcc6f6))
- **deps:** update renovate docker tag to v41.35.1
([b39de05](b39de05f6a))
- **deps:** update renovate docker tag to v41.35.2
([642a8ed](642a8eda1c))
- **deps:** update renovate docker tag to v41.36.0
([c838e96](c838e96f4e))
- **deps:** update renovate docker tag to v41.37.10
([f1fdc44](f1fdc443b3))
- **deps:** update renovate docker tag to v41.37.11
([ba75ece](ba75ecefd3))
- **deps:** update renovate docker tag to v41.37.12
([3f7c77c](3f7c77c7ce))
- **deps:** update renovate docker tag to v41.37.2
([f27e4f4](f27e4f4e40))
- **deps:** update renovate docker tag to v41.37.3
([e14c6d6](e14c6d63c3))
- **deps:** update renovate docker tag to v41.37.7
([b36861c](b36861c478))
- **deps:** update renovate docker tag to v41.37.8
([51534af](51534af65a))
- **deps:** update renovate docker tag to v41.37.9
([86050b8](86050b8d95))
- **deps:** update renovate docker tag to v41.38.0
([3f1f51c](3f1f51c504))
- **deps:** update renovate docker tag to v41.38.1
([6132256](613225679d))
- **deps:** update renovate docker tag to v41.38.2
([0976ae7](0976ae7044))
- **deps:** update renovate docker tag to v41.39.0
([89978d4](89978d48fe))
- **deps:** update renovate docker tag to v41.40.0
([e7f4699](e7f4699adb))

###
[`v43.0.3`](https://redirect.github.com/renovatebot/github-action/releases/tag/v43.0.3)

[Compare
Source](https://redirect.github.com/renovatebot/github-action/compare/v43.0.2...v43.0.3)

##### Documentation

- update references to ghcr.io/renovatebot/renovate to v41.23.2
([d1cb861](d1cb861578))
- update references to ghcr.io/renovatebot/renovate to v41.32.1
([d401f2e](d401f2e3d6))
- update references to renovatebot/github-action to v43.0.2
([862f35e](862f35e837))

##### Miscellaneous Chores

- **deps:** update dependency
[@&#8203;semantic-release/npm](https://redirect.github.com/semantic-release/npm)
to v12.0.2
([6f92e63](6f92e63c61))
- **deps:** update dependency
[@&#8203;types/node](https://redirect.github.com/types/node) to v20.19.2
([7d61b87](7d61b874f3))
- **deps:** update dependency
[@&#8203;types/node](https://redirect.github.com/types/node) to v20.19.4
([927b912](927b912d55))
- **deps:** update dependency globals to v16.3.0
([9672362](9672362f09))
- **deps:** update dependency prettier to v3.6.1
([4aa3491](4aa3491fca))
- **deps:** update dependency prettier to v3.6.2
([a13e505](a13e505be5))
- **deps:** update dependency prettier-plugin-packagejson to v2.5.16
([60adc9e](60adc9e262))
- **deps:** update dependency prettier-plugin-packagejson to v2.5.17
([5ef85b6](5ef85b6ab5))
- **deps:** update dependency prettier-plugin-packagejson to v2.5.18
([4cc8d90](4cc8d90225))
- **deps:** update dependency semantic-release to v24.2.6
([0a4bea6](0a4bea67f9))
- **deps:** update dependency typescript-eslint to v8.35.0
([86dcfb8](86dcfb84fd))
- **deps:** update dependency typescript-eslint to v8.35.1
([04861f0](04861f0503))
- **deps:** update linters to v9.30.0
([541b625](541b625ecb))
- **deps:** update linters to v9.30.1
([bdf2756](bdf27560d6))
- **deps:** update pnpm to v10.12.3
([83ffe73](83ffe73df3))
- **deps:** update pnpm to v10.12.4
([e3103fc](e3103fcc8d))
- **deps:** update prettier packages
([#&#8203;938](https://redirect.github.com/renovatebot/github-action/issues/938))
([2454dfb](2454dfbdd8))

##### Build System

- **deps:** lock file maintenance
([3b940a9](3b940a9640))

##### Continuous Integration

- **deps:** update renovate docker tag to v41.18.0
([68c24e6](68c24e6cbf))
- **deps:** update renovate docker tag to v41.18.1
([f3e5485](f3e5485dc5))
- **deps:** update renovate docker tag to v41.18.2
([1934898](1934898c9c))
- **deps:** update renovate docker tag to v41.18.3
([cb0eb9d](cb0eb9d904))
- **deps:** update renovate docker tag to v41.19.0
([3e6f5ea](3e6f5eace3))
- **deps:** update renovate docker tag to v41.20.0
([8873e8f](8873e8fa7c))
- **deps:** update renovate docker tag to v41.20.1
([5b4de48](5b4de4858c))
- **deps:** update renovate docker tag to v41.20.2
([1e544fc](1e544fc492))
- **deps:** update renovate docker tag to v41.21.0
([2c759bd](2c759bdcfa))
- **deps:** update renovate docker tag to v41.21.1
([edd4d82](edd4d82ad2))
- **deps:** update renovate docker tag to v41.21.2
([38ad587](38ad58776e))
- **deps:** update renovate docker tag to v41.21.3
([2d166b6](2d166b6303))
- **deps:** update renovate docker tag to v41.23.0
([14c4d58](14c4d58a66))
- **deps:** update renovate docker tag to v41.23.1
([246a5e6](246a5e621a))
- **deps:** update renovate docker tag to v41.23.2
([872034d](872034d9a0))
- **deps:** update renovate docker tag to v41.23.4
([cb51849](cb518499d3))
- **deps:** update renovate docker tag to v41.23.5
([dc3d583](dc3d583abe))
- **deps:** update renovate docker tag to v41.24.0
([3ffd8e4](3ffd8e4cb5))
- **deps:** update renovate docker tag to v41.25.0
([9bb389b](9bb389b5d1))
- **deps:** update renovate docker tag to v41.26.0
([e37ae8e](e37ae8e406))
- **deps:** update renovate docker tag to v41.26.1
([fd2bf7f](fd2bf7f9b6))
- **deps:** update renovate docker tag to v41.27.0
([0d9e62e](0d9e62e198))
- **deps:** update renovate docker tag to v41.28.0
([74ab89a](74ab89a8c7))
- **deps:** update renovate docker tag to v41.28.1
([5603289](5603289db6))
- **deps:** update renovate docker tag to v41.28.2
([92ee76d](92ee76d2df))
- **deps:** update renovate docker tag to v41.29.1
([95fb061](95fb0614fa))
- **deps:** update renovate docker tag to v41.30.1
([0eb64ad](0eb64ad472))
- **deps:** update renovate docker tag to v41.30.2
([ee832f5](ee832f522b))
- **deps:** update renovate docker tag to v41.30.3
([1c82a36](1c82a36524))
- **deps:** update renovate docker tag to v41.30.4
([907e0b4](907e0b4f60))
- **deps:** update renovate docker tag to v41.30.5
([b011fc6](b011fc68c2))
- **deps:** update renovate docker tag to v41.31.0
([80ddf09](80ddf0986c))
- **deps:** update renovate docker tag to v41.31.1
([c445227](c445227826))
- **deps:** update renovate docker tag to v41.32.0
([8f317a4](8f317a4703))
- **deps:** update renovate docker tag to v41.32.1
([9c24760](9c2476021d))

### [`v43.0.2`](https://redirect.github.c

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/morten-olsen/homelab-operator).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS45Ny4xMCIsInVwZGF0ZWRJblZlciI6IjQxLjk3LjEwIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-24 00:51:54 +02:00
renovate[bot]
2c46062c4f fix(deps): update dependency cloudflare to v5 (#42)
Coming soon: The Renovate bot (GitHub App) will be renamed to Mend. PRs
from Renovate will soon appear from 'Mend'. Learn more
[here](https://redirect.github.com/renovatebot/renovate/discussions/37842).

This PR contains the following updates:

| Package | Change | Age | Confidence |
|---|---|---|---|
|
[cloudflare](https://redirect.github.com/cloudflare/cloudflare-typescript)
| [`^4.5.0` ->
`^5.0.0`](https://renovatebot.com/diffs/npm/cloudflare/4.5.0/5.1.0) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/cloudflare/5.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/cloudflare/4.5.0/5.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>cloudflare/cloudflare-typescript (cloudflare)</summary>

###
[`v5.1.0`](https://redirect.github.com/cloudflare/cloudflare-typescript/blob/HEAD/CHANGELOG.md#510-2025-09-12)

[Compare
Source](https://redirect.github.com/cloudflare/cloudflare-typescript/compare/v5.0.0...v5.1.0)

Full Changelog:
[v5.0.0...v5.1.0](https://redirect.github.com/cloudflare/cloudflare-typescript/compare/v5.0.0...v5.1.0)

##### Features

- Merge branch 'vaishak/skip-worker-test' into 'main'
([a556698](a5566983ae))

##### Bug Fixes

- coerce nullable values to undefined
([7847e84](7847e845eb))
- correctly handle sending multipart/form-data requests with JSON
([e9deab6](e9deab61fa))

##### Chores

- ci build action
([23d3577](23d3577a92))
- fix lint on the examples
([dd14379](dd143796d0))
- fix lint on the examples
([dd14379](dd143796d0))
- fix lint on the examples
([5b2f145](5b2f145f72))
- **internal:** codegen related update
([2860479](2860479dc7))

###
[`v5.0.0`](https://redirect.github.com/cloudflare/cloudflare-typescript/blob/HEAD/CHANGELOG.md#510-2025-09-12)

[Compare
Source](https://redirect.github.com/cloudflare/cloudflare-typescript/compare/v4.5.0...v5.0.0)

Full Changelog:
[v5.0.0...v5.1.0](https://redirect.github.com/cloudflare/cloudflare-typescript/compare/v5.0.0...v5.1.0)

##### Features

- Merge branch 'vaishak/skip-worker-test' into 'main'
([a556698](a5566983ae))

##### Bug Fixes

- coerce nullable values to undefined
([7847e84](7847e845eb))
- correctly handle sending multipart/form-data requests with JSON
([e9deab6](e9deab61fa))

##### Chores

- ci build action
([23d3577](23d3577a92))
- fix lint on the examples
([dd14379](dd143796d0))
- fix lint on the examples
([dd14379](dd143796d0))
- fix lint on the examples
([5b2f145](5b2f145f72))
- **internal:** codegen related update
([2860479](2860479dc7))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/morten-olsen/homelab-operator).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS45Ny4xMCIsInVwZGF0ZWRJblZlciI6IjQxLjk3LjEwIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-24 00:51:40 +02:00
renovate[bot]
512d96a128 chore(deps): update actions/checkout action to v5 (#39)
Coming soon: The Renovate bot (GitHub App) will be renamed to Mend. PRs
from Renovate will soon appear from 'Mend'. Learn more
[here](https://redirect.github.com/renovatebot/renovate/discussions/37842).

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [actions/checkout](https://redirect.github.com/actions/checkout) |
action | major | `v4` -> `v5` |

---

### Release Notes

<details>
<summary>actions/checkout (actions/checkout)</summary>

### [`v5`](https://redirect.github.com/actions/checkout/compare/v4...v5)

[Compare
Source](https://redirect.github.com/actions/checkout/compare/v4...v5)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/morten-olsen/homelab-operator).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS45Ny4xMCIsInVwZGF0ZWRJblZlciI6IjQxLjk3LjEwIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-24 00:51:25 +02:00
renovate[bot]
57e8349569 chore(deps): update ghcr.io/morten-olsen/homelab-operator:main docker digest to df20d7e (#48)
Coming soon: The Renovate bot (GitHub App) will be renamed to Mend. PRs
from Renovate will soon appear from 'Mend'. Learn more
[here](https://redirect.github.com/renovatebot/renovate/discussions/37842).

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| ghcr.io/morten-olsen/homelab-operator | digest | `4fb3a40` ->
`df20d7e` |

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/morten-olsen/homelab-operator).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS45Ny4xMCIsInVwZGF0ZWRJblZlciI6IjQxLjk3LjEwIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-24 00:51:12 +02:00
247 changed files with 136 additions and 4639 deletions

View File

@@ -27,7 +27,7 @@ jobs:
name: Build name: Build
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v5
- uses: actions/setup-node@v5 - uses: actions/setup-node@v5
with: with:
@@ -81,7 +81,7 @@ jobs:
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- uses: actions/checkout@v4 - uses: actions/checkout@v5
- name: Upload Release Asset - name: Upload Release Asset
id: upload-release-asset id: upload-release-asset

View File

@@ -31,7 +31,7 @@ jobs:
name: Release name: Release
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v5
with: with:
fetch-depth: 0 fetch-depth: 0

View File

@@ -31,7 +31,7 @@ jobs:
name: Release name: Release
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v5
with: with:
fetch-depth: 0 fetch-depth: 0

View File

@@ -8,9 +8,9 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v5
- name: Self-hosted Renovate - name: Self-hosted Renovate
uses: renovatebot/github-action@v40.3.6 uses: renovatebot/github-action@v43.0.13
with: with:
token: ${{ secrets.GITHUB_TOKEN }} token: ${{ secrets.GITHUB_TOKEN }}
configurationFile: ./renovate.json5 configurationFile: ./renovate.json5

View File

@@ -1,136 +0,0 @@
# Agent Documentation
This document describes how to create a new application chart for the homelab operator.
## Chart Structure
Each application has its own chart located in a directory under `charts/apps`. The chart should contain the following files:
- `Chart.yaml`: The chart metadata.
- `values.yaml`: The default values for the chart.
- `templates/`: A directory containing the Kubernetes resource templates.
## Custom Resources
The homelab operator uses several custom resources to manage applications. These resources are defined in the `templates` directory of the chart.
### `PostgresDatabase`
If the application requires a PostgreSQL database, you can create a `PostgresDatabase` resource. The operator will automatically create a database and a secret containing the connection details. The secret will have the same name as the release with a `-pg-connection` postfix.
Example:
```yaml
# templates/database.yaml
apiVersion: homelab.mortenolsen.pro/v1
kind: PostgresDatabase
metadata:
name: "{{ .Release.Name }}"
spec:
environment: "{{ .Values.globals.environment }}"
```
The secret has the following values:
- `database`: name of the created database
- `host`: the hostname of the postgres server
- `port`: the port of the postgres server
- `url`: combined url in the format `postgresql://{user}:{password}@{host}:{port}/{database}`
### `OidcClient`
If the application requires OIDC authentication, you can create an `OidcClient` resource. The operator will automatically create an OIDC client and a secret containing the client ID and secret. The secret will have the same name as the release with a `-client` postfix.
You need to specify the redirect URIs for the OIDC client. The subdomain is taken from the `values.yaml` file.
Example:
```yaml
# templates/client.yaml
apiVersion: homelab.mortenolsen.pro/v1
kind: OidcClient
metadata:
name: "{{ .Release.Name }}"
spec:
environment: "{{ .Values.globals.environment }}"
redirectUris:
- path: /user/oauth2/Authentik/callback
subdomain: "{{ .Values.subdomain }}"
matchingMode: strict
```
The secret has the following value:
- `authorization`: Authorization endpoint
- `clientId`
- `clientSecret`
- `configuration`: autodiscovery endpoint
- `configurationIssuer`: issuer url
- `endSession`: end session endpoint
- `jwks`: jwks endpoint
- `token`: token endpoint
- `userinfo`: user info endpoint
### `HttpService` and `ExternalHttpService`
To expose the application, you can use either an `HttpService` or an `ExternalHttpService` resource.
- `HttpService`: This will expose the application through the Istio gateway. This is for internal access only.
- `ExternalHttpService`: This will expose the application through a CloudFlare tunnel. This is for external access.
Both resources take a `subdomain` and a `destination` as parameters. The `destination` is the Kubernetes service to route traffic to.
Example of `HttpService`:
```yaml
# templates/http-service.yaml
apiVersion: homelab.mortenolsen.pro/v1
kind: HttpService
metadata:
name: "{{ .Release.Name }}"
spec:
environment: "{{ .Values.globals.environment }}"
subdomain: "{{ .Values.subdomain }}"
destination:
host: "{{ .Release.Name }}.{{ .Release.Namespace }}.svc.cluster.local"
port:
number: 80
```
Example of `ExternalHttpService`:
```yaml
# templates/external-http-service.yaml
apiVersion: homelab.mortenolsen.pro/v1
kind: ExternalHttpService
metadata:
name: "{{ .Release.Name }}"
spec:
environment: "{{ .Values.globals.environment }}"
subdomain: "{{ .Values.subdomain }}"
destination:
host: "{{ .Release.Name }}.{{ .Release.Namespace }}.svc.cluster.local"
port:
number: 80
```
## `values.yaml`
The `values.yaml` file should contain the following values:
- `globals.environment`: The environment the application is running in (e.g., `prod`, `dev`).
- `image.repository`: The Docker image repository.
- `image.tag`: The Docker image tag.
- `subdomain`: The subdomain for the application.
Example:
```yaml
# values.yaml
globals:
environment: prod
image:
repository: docker.gitea.com/gitea
tag: latest
subdomain: gitea
```

View File

@@ -1,3 +0,0 @@
apiVersion: v2
version: 1.0.0
name: apprise

View File

@@ -1,10 +0,0 @@
apiVersion: homelab.mortenolsen.pro/v1
kind: OidcClient
metadata:
name: '{{ .Release.Name }}'
spec:
environment: '{{ .Values.globals.environment }}'
redirectUris:
- path: /oauth/oidc/callback
subdomain: '{{ .Values.subdomain }}'
matchingMode: strict

View File

@@ -1,43 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: "{{ .Release.Name }}"
spec:
strategy:
type: Recreate
replicas: 1
selector:
matchLabels:
app: "{{ .Release.Name }}"
template:
metadata:
labels:
app: "{{ .Release.Name }}"
spec:
containers:
- name: "{{ .Release.Name }}"
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: "{{ .Values.image.pullPolicy }}"
ports:
- name: http
containerPort: 8000
protocol: TCP
livenessProbe:
tcpSocket:
port: http
readinessProbe:
tcpSocket:
port: http
env:
- name: TZ
value: "{{ .Values.globals.timezone }}"
- name: BASE_URL
value: https://{{ .Values.subdomain }}.{{ .Values.globals.domain }}
volumeMounts:
- mountPath: /config
name: data
volumes:
- name: data
persistentVolumeClaim:
claimName: "{{ .Release.Name }}-data"

View File

@@ -1,11 +0,0 @@
apiVersion: homelab.mortenolsen.pro/v1
kind: HttpService
metadata:
name: "{{ .Release.Name }}"
spec:
environment: "{{ .Values.globals.environment }}"
subdomain: "{{ .Values.subdomain }}"
destination:
host: "{{ .Release.Name }}"
port:
number: 80

View File

@@ -1,11 +0,0 @@
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: '{{ .Release.Name }}-data'
spec:
accessModes:
- 'ReadWriteOnce'
resources:
requests:
storage: '1Gi'
storageClassName: '{{ .Values.globals.environment }}'

View File

@@ -1,15 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: "{{ .Release.Name }}"
labels:
app: "{{ .Release.Name }}"
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 8000
protocol: TCP
name: http
selector:
app: "{{ .Release.Name }}"

View File

@@ -1,9 +0,0 @@
globals:
environment: prod
timezone: Europe/Amsterdam
domain: olsen.cloud
image:
repository: docker.io/caronc/apprise
tag: latest@sha256:127b3834f0679502529397ead8ffeaadf5189019c4c863fa6652e9b942fdccf8
pullPolicy: IfNotPresent
subdomain: apprise

View File

@@ -1,3 +0,0 @@
apiVersion: v2
version: 1.0.0
name: audiobookshelf

View File

@@ -1,13 +0,0 @@
apiVersion: homelab.mortenolsen.pro/v1
kind: OidcClient
metadata:
name: '{{ .Release.Name }}'
spec:
environment: '{{ .Values.globals.environment }}'
redirectUris:
- path: /audiobookshelf/auth/openid/callback
subdomain: '{{ .Values.subdomain }}'
matchingMode: strict
- path: /audiobookshelf/auth/openid/mobile-redirect
subdomain: '{{ .Values.subdomain }}'
matchingMode: strict

View File

@@ -1,52 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: '{{ .Release.Name }}'
spec:
strategy:
type: Recreate
replicas: 1
selector:
matchLabels:
app: '{{ .Release.Name }}'
template:
metadata:
labels:
app: '{{ .Release.Name }}'
spec:
containers:
- name: '{{ .Release.Name }}'
image: '{{ .Values.image.repository }}:{{ .Values.image.tag }}'
imagePullPolicy: '{{ .Values.image.pullPolicy }}'
ports:
- name: http
containerPort: 80
protocol: TCP
livenessProbe:
tcpSocket:
port: http
readinessProbe:
tcpSocket:
port: http
volumeMounts:
- mountPath: /config
name: config
- mountPath: /metadata
name: metadata
- mountPath: /audiobooks
name: audiobooks
- mountPath: /podcasts
name: podcasts
volumes:
- name: config
persistentVolumeClaim:
claimName: '{{ .Release.Name }}-config'
- name: metadata
persistentVolumeClaim:
claimName: '{{ .Release.Name }}-metadata'
- name: audiobooks
persistentVolumeClaim:
claimName: books
- name: podcasts
persistentVolumeClaim:
claimName: podcasts

View File

@@ -1,11 +0,0 @@
apiVersion: homelab.mortenolsen.pro/v1
kind: ExternalHttpService
metadata:
name: '{{ .Release.Name }}'
spec:
environment: '{{ .Values.globals.environment }}'
subdomain: '{{ .Values.subdomain }}'
destination:
host: '{{ .Release.Name }}.{{ .Release.Namespace }}.svc.cluster.local'
port:
number: 80

View File

@@ -1,24 +0,0 @@
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: '{{ .Release.Name }}-config'
spec:
accessModes:
- 'ReadWriteOnce'
resources:
requests:
storage: '1Gi'
storageClassName: '{{ .Values.globals.environment }}'
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: '{{ .Release.Name }}-metadata'
spec:
accessModes:
- 'ReadWriteOnce'
resources:
requests:
storage: '1Gi'
storageClassName: '{{ .Values.globals.environment }}'

View File

@@ -1,15 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: '{{ .Release.Name }}'
labels:
app: '{{ .Release.Name }}'
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 80
protocol: TCP
name: http
selector:
app: '{{ .Release.Name }}'

View File

@@ -1,7 +0,0 @@
globals:
environment: prod
image:
repository: ghcr.io/advplyr/audiobookshelf
tag: 2.29.0@sha256:dd4a3079d26bfe9f0ea63de3e3eff483dfa25fef05ef850a5a9d121dca3794b2
pullPolicy: IfNotPresent
subdomain: audiobookshelf

View File

@@ -1,3 +0,0 @@
apiVersion: v2
version: 1.0.0
name: esphome

View File

@@ -1,6 +0,0 @@
apiVersion: homelab.mortenolsen.pro/v1
kind: PostgresDatabase
metadata:
name: '{{ .Release.Name }}'
spec:
environment: '{{ .Values.globals.environment }}'

View File

@@ -1,46 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: "{{ .Release.Name }}"
spec:
strategy:
type: Recreate
replicas: 1
selector:
matchLabels:
app: "{{ .Release.Name }}"
template:
metadata:
labels:
app: "{{ .Release.Name }}"
spec:
containers:
- name: "{{ .Release.Name }}"
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: "{{ .Values.image.pullPolicy }}"
ports:
- name: http
containerPort: 80
protocol: TCP
livenessProbe:
tcpSocket:
port: http
readinessProbe:
tcpSocket:
port: http
env:
- name: TZ
value: "{{ .Values.globals.timezone }}"
volumeMounts:
- mountPath: /var/www/baikal/Specific
name: data
- mountPath: /var/www/baikal/config
name: config
volumes:
- name: data
persistentVolumeClaim:
claimName: "{{ .Release.Name }}-data"
- name: config
persistentVolumeClaim:
claimName: "{{ .Release.Name }}-config"

View File

@@ -1,11 +0,0 @@
apiVersion: homelab.mortenolsen.pro/v1
kind: ExternalHttpService
metadata:
name: '{{ .Release.Name }}'
spec:
environment: '{{ .Values.globals.environment }}'
subdomain: '{{ .Values.subdomain }}'
destination:
host: '{{ .Release.Name }}.{{ .Release.Namespace }}.svc.cluster.local'
port:
number: 80

View File

@@ -1,11 +0,0 @@
apiVersion: homelab.mortenolsen.pro/v1
kind: HttpService
metadata:
name: "{{ .Release.Name }}"
spec:
environment: "{{ .Values.globals.environment }}"
subdomain: "{{ .Values.subdomain }}"
destination:
host: "{{ .Release.Name }}"
port:
number: 80

View File

@@ -1,24 +0,0 @@
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: "{{ .Release.Name }}-data"
spec:
accessModes:
- "ReadWriteOnce"
resources:
requests:
storage: "1Gi"
storageClassName: "{{ .Values.globals.environment }}"
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: "{{ .Release.Name }}-config"
spec:
accessModes:
- "ReadWriteOnce"
resources:
requests:
storage: "1Gi"
storageClassName: "{{ .Values.globals.environment }}"

View File

@@ -1,15 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: "{{ .Release.Name }}"
labels:
app: "{{ .Release.Name }}"
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 80
protocol: TCP
name: http
selector:
app: "{{ .Release.Name }}"

View File

@@ -1,9 +0,0 @@
globals:
environment: prod
timezone: Europe/Amsterdam
domain: olsen.cloud
image:
repository: docker.io/ckulka/baikal
tag: nginx@sha256:045918423df00a3f9ec793a819b9acdb055d338b75387926b7d93d753ac1e93a
pullPolicy: IfNotPresent
subdomain: baikal

View File

@@ -1,3 +0,0 @@
apiVersion: v2
version: 1.0.0
name: ByteStash

View File

@@ -1,10 +0,0 @@
apiVersion: homelab.mortenolsen.pro/v1
kind: OidcClient
metadata:
name: '{{ .Release.Name }}'
spec:
environment: '{{ .Values.globals.environment }}'
redirectUris:
- path: /api/auth/oidc/callback
subdomain: '{{ .Values.subdomain }}'
matchingMode: strict

View File

@@ -1,54 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: "{{ .Release.Name }}"
labels:
app: "{{ .Release.Name }}"
spec:
replicas: 1
selector:
matchLabels:
app: "{{ .Release.Name }}"
template:
metadata:
labels:
app: "{{ .Release.Name }}"
spec:
containers:
- name: "{{ .Release.Name }}"
image: ghcr.io/jordan-dalby/bytestash:latest
ports:
- containerPort: 5000
name: http
env:
- name: ALLOW_NEW_ACCOUNTS
value: "true"
- name: DISABLE_INTERNAL_ACCOUNTS
value: "true"
- name: OIDC_ENABLED
value: "true"
- name: OIDC_DISPLAY_NAME
value: OIDC
- name: OIDC_CLIENT_ID
valueFrom:
secretKeyRef:
name: "{{ .Release.Name }}-client"
key: clientId
- name: OIDC_CLIENT_SECRET
valueFrom:
secretKeyRef:
name: "{{ .Release.Name }}-client"
key: clientSecret
- name: OIDC_ISSUER_URL
valueFrom:
secretKeyRef:
name: "{{ .Release.Name }}-client"
key: configurationIssuer
volumeMounts:
- mountPath: /data/snippets
name: data
volumes:
- name: data
persistentVolumeClaim:
claimName: "{{ .Release.Name }}-data"

View File

@@ -1,11 +0,0 @@
apiVersion: homelab.mortenolsen.pro/v1
kind: ExternalHttpService
metadata:
name: '{{ .Release.Name }}'
spec:
environment: '{{ .Values.globals.environment }}'
subdomain: '{{ .Values.subdomain }}'
destination:
host: '{{ .Release.Name }}.{{ .Release.Namespace }}.svc.cluster.local'
port:
number: 80

View File

@@ -1,11 +0,0 @@
apiVersion: homelab.mortenolsen.pro/v1
kind: HttpService
metadata:
name: '{{ .Release.Name }}'
spec:
environment: '{{ .Values.environment }}'
subdomain: '{{ .Values.subdomain }}'
destination:
host: '{{ .Release.Name }}'
port:
number: 80

View File

@@ -1,11 +0,0 @@
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: '{{ .Release.Name }}-data'
spec:
accessModes:
- 'ReadWriteOnce'
resources:
requests:
storage: '1Gi'
storageClassName: '{{ .Values.globals.environment }}'

View File

@@ -1,15 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: '{{ .Release.Name }}'
labels:
app: '{{ .Release.Name }}'
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 5000
protocol: TCP
name: http
selector:
app: '{{ .Release.Name }}'

View File

@@ -1,3 +0,0 @@
globals:
environment: prod
subdomain: bytestash

View File

@@ -1,3 +0,0 @@
apiVersion: v2
version: 1.0.0
name: calibre-web

View File

@@ -1,10 +0,0 @@
apiVersion: homelab.mortenolsen.pro/v1
kind: OidcClient
metadata:
name: '{{ .Release.Name }}'
spec:
environment: '{{ .Values.globals.environment }}'
redirectUris:
- path: /api/auth/oidc/callback
subdomain: '{{ .Values.subdomain }}'
matchingMode: strict

View File

@@ -1,42 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: "{{ .Release.Name }}"
labels:
app: "{{ .Release.Name }}"
spec:
replicas: 1
selector:
matchLabels:
app: "{{ .Release.Name }}"
template:
metadata:
labels:
app: "{{ .Release.Name }}"
spec:
containers:
- name: "{{ .Release.Name }}"
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: "{{ .Values.image.pullPolicy }}"
ports:
- containerPort: 8083
name: http
env:
- name: TZ
value: "{{ .Values.globals.timezone }}"
- name: PUID
value: "1000"
- name: PGID
value: "1000"
volumeMounts:
- mountPath: /config
name: data
- mountPath: /books
name: books
volumes:
- name: data
persistentVolumeClaim:
claimName: "{{ .Release.Name }}-data"
- name: books
persistentVolumeClaim:
claimName: books

View File

@@ -1,11 +0,0 @@
apiVersion: homelab.mortenolsen.pro/v1
kind: ExternalHttpService
metadata:
name: '{{ .Release.Name }}'
spec:
environment: '{{ .Values.globals.environment }}'
subdomain: '{{ .Values.subdomain }}'
destination:
host: '{{ .Release.Name }}.{{ .Release.Namespace }}.svc.cluster.local'
port:
number: 80

View File

@@ -1,11 +0,0 @@
apiVersion: homelab.mortenolsen.pro/v1
kind: HttpService
metadata:
name: "{{ .Release.Name }}"
spec:
environment: "{{ .Values.globals.environment }}"
subdomain: "{{ .Values.subdomain }}"
destination:
host: "{{ .Release.Name }}"
port:
number: 80

View File

@@ -1,11 +0,0 @@
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: '{{ .Release.Name }}-data'
spec:
accessModes:
- 'ReadWriteOnce'
resources:
requests:
storage: '1Gi'
storageClassName: '{{ .Values.globals.environment }}'

View File

@@ -1,15 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: "{{ .Release.Name }}"
labels:
app: "{{ .Release.Name }}"
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 8083
protocol: TCP
name: http
selector:
app: "{{ .Release.Name }}"

View File

@@ -1,9 +0,0 @@
globals:
environment: prod
domain: olsen.cloud
timezone: Europe/Amsterdam
image:
repository: lscr.io/linuxserver/calibre-web
tag: latest@sha256:98a20064168ab284bbb8e048af48c89a5e25650f35a4b217705241af94c1debe
pullPolicy: IfNotPresent
subdomain: calibre-web

View File

@@ -1,3 +0,0 @@
apiVersion: v2
version: 1.0.0
name: openwebui

View File

@@ -1,10 +0,0 @@
apiVersion: homelab.mortenolsen.pro/v1
kind: OidcClient
metadata:
name: '{{ .Release.Name }}'
spec:
environment: '{{ .Values.globals.environment }}'
redirectUris:
- path: /api/v2/users/oidc/callback
subdomain: '{{ .Values.subdomain }}'
matchingMode: strict

View File

@@ -1,73 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: '{{ .Release.Name }}'
spec:
strategy:
type: Recreate
replicas: 1
selector:
matchLabels:
app: '{{ .Release.Name }}'
template:
metadata:
labels:
app: '{{ .Release.Name }}'
spec:
serviceAccountName: '{{ .Release.Name }}-serviceaccount'
containers:
- name: '{{ .Release.Name }}'
image: '{{ .Values.image.repository }}:{{ .Values.image.tag }}'
imagePullPolicy: '{{ .Values.image.pullPolicy }}'
ports:
- name: http
containerPort: 7080
protocol: TCP
livenessProbe:
tcpSocket:
port: http
readinessProbe:
tcpSocket:
port: http
volumeMounts:
- mountPath: /home/coder/.config
name: data
env:
- name: CODER_HTTP_ADDRESS
value: '0.0.0.0:7080'
- name: CODER_OIDC_ALLOWED_GROUPS
value: admin
- name: CODER_OIDC_GROUP_FIELD
value: groups
- name: CODER_ACCESS_URL
value: https://coder.olsen.cloud
- name: CODER_OIDC_ICON_URL
value: https://authentik.olsen.cloud/static/dist/assets/icons/icon.png
- name: CODER_DISABLE_PASSWORD_AUTH
value: 'true'
- name: CODER_OAUTH2_GITHUB_ALLOW_SIGNUPS
value: 'false'
- name: CODER_OIDC_SIGN_IN_TEXT
value: 'Sign in with OIDC'
- name: CODER_OIDC_SCOPES
value: openid,profile,email,offline_access
- name: CODER_OIDC_ISSUER_URL
valueFrom:
secretKeyRef:
name: '{{ .Release.Name }}-client'
key: configurationIssuer
- name: CODER_OIDC_CLIENT_ID
valueFrom:
secretKeyRef:
name: '{{ .Release.Name }}-client'
key: clientId
- name: CODER_OIDC_CLIENT_SECRET
valueFrom:
secretKeyRef:
name: '{{ .Release.Name }}-client'
key: clientSecret
volumes:
- name: data
persistentVolumeClaim:
claimName: '{{ .Release.Name }}-data'

View File

@@ -1,11 +0,0 @@
apiVersion: homelab.mortenolsen.pro/v1
kind: HttpService
metadata:
name: '{{ .Release.Name }}'
spec:
environment: '{{ .Values.globals.environment }}'
subdomain: '{{ .Values.subdomain }}'
destination:
host: '{{ .Release.Name }}.{{ .Release.Namespace }}.svc.cluster.local'
port:
number: 80

View File

@@ -1,11 +0,0 @@
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: '{{ .Release.Name }}-data'
spec:
accessModes:
- 'ReadWriteOnce'
resources:
requests:
storage: '1Gi'
storageClassName: '{{ .Values.globals.environment }}'

View File

@@ -1,21 +0,0 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: '{{ .Release.Name }}-workspace-creator'
rules:
- apiGroups: [''] # "" indicates the core API group (for Pods, PVCs, Services)
resources: ['pods', 'pods/exec', 'pods/log', 'persistentvolumeclaims', 'services']
verbs: ['get', 'list', 'watch', 'create', 'update', 'patch', 'delete']
- apiGroups: ['apps'] # For Deployments, StatefulSets
resources: ['deployments', 'statefulsets']
verbs: ['get', 'list', 'watch', 'create', 'update', 'patch', 'delete']
- apiGroups: ['networking.k8s.io'] # For Ingresses
resources: ['ingresses']
verbs: ['get', 'list', 'watch', 'create', 'update', 'patch', 'delete']
- apiGroups: ['events.k8s.io'] # For events related to workspace activity
resources: ['events']
verbs: ['create', 'patch', 'update'] # Coder might create events for workspace lifecycle
# Add any other resources that Coder workspace templates might create (e.g., secrets, configmaps)
# - apiGroups: [""]
# resources: ["secrets", "configmaps"]
# verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]

View File

@@ -1,13 +0,0 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: '{{ .Release.Name }}-workspace-creator-binding'
namespace: '{{ .Release.Namespace }}'
subjects:
- kind: ServiceAccount
name: '{{ .Release.Name }}-serviceaccount'
namespace: '{{ .Release.Namespace }}'
roleRef:
kind: ClusterRole
name: '{{ .Release.Name }}-workspace-creator'
apiGroup: rbac.authorization.k8s.io

View File

@@ -1,15 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: '{{ .Release.Name }}'
labels:
app: '{{ .Release.Name }}'
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 7080
protocol: TCP
name: http
selector:
app: '{{ .Release.Name }}'

View File

@@ -1,5 +0,0 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: '{{ .Release.Name }}-serviceaccount'
namespace: '{{ .Release.Namespace }}'

View File

@@ -1,7 +0,0 @@
globals:
environment: prod
image:
repository: ghcr.io/coder/coder
tag: latest@sha256:73714e0685addde01bbff905cf5b647d6b677d77977c8009b6293d40fdf0f562
pullPolicy: IfNotPresent
subdomain: coder

View File

@@ -1,3 +0,0 @@
apiVersion: v2
version: 1.0.0
name: data

View File

@@ -1,6 +0,0 @@
apiVersion: homelab.mortenolsen.pro/v1
kind: PostgresDatabase
metadata:
name: '{{ .Release.Name }}'
spec:
environment: '{{ .Values.globals.environment }}'

View File

@@ -1,2 +0,0 @@
globals:
environment: prod

View File

@@ -1,3 +0,0 @@
apiVersion: v2
version: 1.0.0
name: esphome

View File

@@ -1,42 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: "{{ .Release.Name }}"
spec:
strategy:
type: Recreate
replicas: 1
selector:
matchLabels:
app: "{{ .Release.Name }}"
template:
metadata:
labels:
app: "{{ .Release.Name }}"
spec:
hostNetwork: true
containers:
- name: "{{ .Release.Name }}"
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: "{{ .Values.image.pullPolicy }}"
ports:
- name: http
containerPort: 6052
protocol: TCP
livenessProbe:
tcpSocket:
port: http
readinessProbe:
tcpSocket:
port: http
env:
- name: TZ
value: "{{ .Values.globals.timezone }}"
volumeMounts:
- mountPath: /config
name: data
volumes:
- name: data
persistentVolumeClaim:
claimName: "{{ .Release.Name }}-data"

View File

@@ -1,11 +0,0 @@
apiVersion: homelab.mortenolsen.pro/v1
kind: HttpService
metadata:
name: "{{ .Release.Name }}"
spec:
environment: "{{ .Values.globals.environment }}"
subdomain: "{{ .Values.subdomain }}"
destination:
host: "{{ .Release.Name }}"
port:
number: 80

View File

@@ -1,11 +0,0 @@
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: '{{ .Release.Name }}-data'
spec:
accessModes:
- 'ReadWriteOnce'
resources:
requests:
storage: '1Gi'
storageClassName: '{{ .Values.globals.environment }}'

View File

@@ -1,15 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: "{{ .Release.Name }}"
labels:
app: "{{ .Release.Name }}"
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 6052
protocol: TCP
name: http
selector:
app: "{{ .Release.Name }}"

View File

@@ -1,9 +0,0 @@
globals:
environment: prod
timezone: Europe/Amsterdam
domain: olsen.cloud
image:
repository: ghcr.io/esphome/esphome
tag: latest@sha256:67f4df2206af244e79c6c624ea7ef27be572f83af981657b1ac1ffa0d7b8487a
pullPolicy: IfNotPresent
subdomain: esphome

View File

@@ -1,3 +0,0 @@
apiVersion: v2
version: 1.0.0
name: gitea

View File

@@ -1,36 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: '{{ .Release.Name }}-runner'
labels:
app: '{{ .Release.Name }}-runner'
spec:
replicas: 1
selector:
matchLabels:
app: '{{ .Release.Name }}-runner'
template:
metadata:
labels:
app: '{{ .Release.Name }}-runner'
spec:
containers:
- name: '{{ .Release.Name }}-runner'
image: docker.io/gitea/act_runner:latest-dind-rootless
env:
- name: GITEA_INSTANCE_URL
value: '{{ .Release.Name }}'
- name: GITEA_RUNNER_NAME
- name: GITEA_RUNNER_REGISTRATION_TOKEN
valueFrom:
secretKeyRef:
name: '{{ .Release.Name }}-runner'
key: registration_token
- name: DOCKER_HOST
value: tcp://localhost:2376
- name: DOCKER_CERT_PATH
value: /certs/client
- name: DOCKER_TLS_VERIFY
value: '1'
securityContext:
privileged: true

View File

@@ -1,10 +0,0 @@
apiVersion: homelab.mortenolsen.pro/v1
kind: OidcClient
metadata:
name: '{{ .Release.Name }}'
spec:
environment: '{{ .Values.globals.environment }}'
redirectUris:
- path: /user/oauth2/Authentik/callback
subdomain: '{{ .Values.subdomain }}'
matchingMode: strict

View File

@@ -1,6 +0,0 @@
apiVersion: homelab.mortenolsen.pro/v1
kind: PostgresDatabase
metadata:
name: '{{ .Release.Name }}'
spec:
environment: '{{ .Values.globals.environment }}'

View File

@@ -1,103 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: "{{ .Release.Name }}"
spec:
strategy:
type: Recreate
replicas: 1
selector:
matchLabels:
app: "{{ .Release.Name }}"
template:
metadata:
labels:
app: "{{ .Release.Name }}"
spec:
containers:
- name: "{{ .Release.Name }}"
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: "{{ .Values.image.pullPolicy }}"
ports:
- name: http
containerPort: 3000
protocol: TCP
- name: ssh
containerPort: 22
protocol: TCP
livenessProbe:
tcpSocket:
port: http
readinessProbe:
tcpSocket:
port: http
volumeMounts:
- mountPath: /data
name: data
env:
- name: TZ
value: "{{ .Values.globals.timezone }}"
- name: USER_UID
value: "1000"
- name: USER_GID
value: "1000"
- name: GITEA__server__SSH_DOMAIN
value: ssh-gitea.olsen.cloud
- name: GITEA__server__SSH_PORT
value: "2205"
- name: GITEA__service__REQUIRE_EXTERNAL_REGISTRATION_PASSWORD
value: "true"
#- name: GITEA__service__ENABLE_BASIC_AUTHENTICATION
# value: 'true'
- name: GITEA__service__ENABLE_PASSWORD_SIGNIN_FORM
value: "false"
- name: GITEA__service__DEFAULT_KEEP_EMAIL_PRIVATE
value: "true"
- name: GITEA__service__DEFAULT_USER_IS_RESTRICTED
value: "true"
- name: GITEA__service__DEFAULT_USER_VISIBILITY
value: "private"
- name: GITEA__service__DEFAULT_ORG_VISIBILITY
value: "private"
- name: GITEA__service__ALLOW_ONLY_EXTERNAL_REGISTRATION
value: "true"
- name: GITEA__other__SHOW_FOOTER_POWERED_BY
value: "false"
- name: GITEA__other__SHOW_FOOTER_TEMPLATE_LOAD_TIME
value: "false"
- name: GITEA__other__SHOW_FOOTER_VERSION
value: "false"
- name: GITEA__repository__ENABLE_PUSH_CREATE_USER
value: "true"
- name: GITEA__repository__ENABLE_PUSH_CREATE_ORG
value: "true"
- name: GITEA__openid__ENABLE_OPENID_SIGNIN
value: "false"
- name: GITEA__openid__ENABLE_OPENID_SIGNUP
value: "false"
- name: GITEA__database__DB_TYPE
value: postgres
- name: GITEA__database__NAME
valueFrom:
secretKeyRef:
name: "{{ .Release.Name }}-pg-connection"
key: database
- name: GITEA__database__HOST
valueFrom:
secretKeyRef:
name: "{{ .Release.Name }}-pg-connection"
key: host
- name: GITEA__database__USER
valueFrom:
secretKeyRef:
name: "{{ .Release.Name }}-pg-connection"
key: user
- name: GITEA__database__PASSWD
valueFrom:
secretKeyRef:
name: "{{ .Release.Name }}-pg-connection"
key: password
volumes:
- name: data
persistentVolumeClaim:
claimName: "{{ .Release.Name }}-data"

View File

@@ -1,11 +0,0 @@
apiVersion: homelab.mortenolsen.pro/v1
kind: ExternalHttpService
metadata:
name: '{{ .Release.Name }}'
spec:
environment: '{{ .Values.globals.environment }}'
subdomain: '{{ .Values.subdomain }}'
destination:
host: '{{ .Release.Name }}.{{ .Release.Namespace }}.svc.cluster.local'
port:
number: 80

View File

@@ -1,11 +0,0 @@
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: '{{ .Release.Name }}-data'
spec:
accessModes:
- 'ReadWriteOnce'
resources:
requests:
storage: '1Gi'
storageClassName: '{{ .Values.globals.environment }}'

View File

@@ -1,32 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: "{{ .Release.Name }}"
labels:
app: "{{ .Release.Name }}"
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 3000
protocol: TCP
name: http
selector:
app: "{{ .Release.Name }}"
---
apiVersion: v1
kind: Service
metadata:
name: "{{ .Release.Name }}-ssh"
labels:
app: "{{ .Release.Name }}"
spec:
type: LoadBalancer
ports:
- port: 2205
targetPort: 22
protocol: TCP
name: ssh
selector:
app: "{{ .Release.Name }}"

View File

@@ -1,8 +0,0 @@
globals:
environment: prod
timezone: Europe/Amsterdam
image:
repository: docker.gitea.com/gitea
tag: latest@sha256:2edc102cbb636ae1ddac5fa0c715aa5b03079dee13ac6800b2cef6d4e912e718
pullPolicy: IfNotPresent
subdomain: gitea

View File

@@ -1,3 +0,0 @@
apiVersion: v2
version: 1.0.0
name: headscale

View File

@@ -1,10 +0,0 @@
apiVersion: homelab.mortenolsen.pro/v1
kind: OidcClient
metadata:
name: '{{ .Release.Name }}'
spec:
environment: '{{ .Values.globals.environment }}'
redirectUris:
- path: /oidc/callback
subdomain: '{{ .Values.subdomain }}'
matchingMode: strict

View File

@@ -1,70 +0,0 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: '{{ .Release.Name }}-config-template'
data:
config.yaml.template: |
server_url: ${PUBLIC_URL}
listen_addr: 0.0.0.0:8080
metrics_listen_addr: 0.0.0.0:9090
grpc_listen_addr: 0.0.0.0:50443
private_key_path: /var/lib/headscale/private_key # Path inside the container
noise:
private_key_path: /var/lib/headscale/noise_private_key # Path inside the container
listen_routes: false
base_domain: "${PUBLIC_URL}" # For client routes and DNS push.
derp:
server:
enabled: false
region_id: 999
region_code: "headscale"
region_name: "Headscale Embedded DERP"
stun_listen_addr: "0.0.0.0:3478"
automatically_add_embedded_derp_region: true
urls:
- https://controlplane.tailscale.com/derpmap/default
auto_update_enabled: true
update_frequency: 24h
oidc:
enabled: true
only_start_if_oidc_is_available: true
issuer: "${OIDC_ISSUER_URL}"
client_id: "${OIDC_CLIENT_ID}"
client_secret: "${OIDC_CLIENT_SECRET}"
scopes: ["openid", "profile", "email"]
redirect_url: "${PUBLIC_URL}/oidc/callback"
pkce:
enabled: true
method: S256
# DNS configuration
dns:
magic_dns: false
override_local_dns: true # Push Headscale's DNS settings to clients
ttl: 60
nameservers:
global:
- 1.1.1.1 # Cloudflare DNS
#- 10.43.0.10 # Replace with your ClusterIP for kube-dns/CoreDNS
# Domains to search for (e.g., for Kubernetes services)
search_domains:
- svc.cluster.local
- cluster.local
auto_create_users: true
oidc_user_property: preferred_username # Or 'email' or 'sub'
prefixes:
v4: 10.20.20.0/24 # Example: A /24 subnet for your VPN clients
database:
type: sqlite
sqlite:
path: /var/lib/headscale/db.sqlite

View File

@@ -1,97 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: '{{ .Release.Name }}'
labels:
app: '{{ .Release.Name }}'
spec:
replicas: 1
selector:
matchLabels:
app: '{{ .Release.Name }}'
template:
metadata:
labels:
app: '{{ .Release.Name }}'
spec:
# To expose WireGuard UDP directly, we need a NodePort service.
# The Pod needs to be aware of the external port it's being exposed on.
# The easiest way to get WireGuard to listen on the correct port and make it
# externally accessible is to use `hostNetwork: true` for the UDP component,
# or by directly specifying the listen port in Headscale config if the NodePort is stable.
# OPTION 1: Best for simple homelab on bare metal where host network traffic isn't an issue
# hostNetwork: true # This makes the pod listen directly on the node's IPs
# dnsPolicy: ClusterFirstWithHostNet # Required if using hostNetwork
initContainers:
- name: generate-config
image: alpine/git # A small image with 'envsubst' available or easily installable
imagePullPolicy: IfNotPresent
command: ['sh', '-c']
args:
- |
# Install envsubst if it's not present (alpine/git may not have it by default)
apk update && apk add bash gettext
# Substitute environment variables into the template
# The vars are passed via `env` section below
envsubst < /config-template/config.yaml.template > /etc/headscale/config.yaml
mkdir -p /etc/headscale
# Optional: Verify the generated config
echo "--- Generated Headscale Configuration ---"
cat /etc/headscale/config.yaml
echo "---------------------------------------"
env:
# These are the variables that `envsubst` will look for and replace
- name: PUBLIC_URL
value: 'https://{{ .Values.subdomain }}.olsen.cloud'
- name: OIDC_ISSUER_URL
valueFrom:
secretKeyRef:
name: '{{ .Release.Name }}-client'
key: configurationIssuer
- name: OIDC_CLIENT_ID
valueFrom:
secretKeyRef:
name: '{{ .Release.Name }}-client'
key: clientId
- name: OIDC_CLIENT_SECRET
valueFrom:
secretKeyRef:
name: '{{ .Release.Name }}-client'
key: clientSecret
# Add any other variables used in config.yaml.template here
volumeMounts:
- name: config-template
mountPath: /config-template # Mount the ConfigMap as a volume
readOnly: true
- name: headscale-config
mountPath: /etc/headscale # Destination for the generated config
containers:
- name: '{{ .Release.Name }}'
image: headscale/headscale:latest # Use the official image
command: ['headscale', 'serve']
ports:
- name: http-api
containerPort: 8080
protocol: TCP
- name: wireguard-udp
containerPort: 41641
protocol: UDP
volumeMounts:
- name: headscale-data
mountPath: /var/lib/headscale
- name: headscale-config
mountPath: /etc/headscale
volumes:
- name: config-template
configMap:
name: '{{ .Release.Name }}-config-template'
- name: headscale-config
emptyDir: {}
- name: headscale-data
persistentVolumeClaim:
claimName: '{{ .Release.Name }}-data'

View File

@@ -1,11 +0,0 @@
apiVersion: homelab.mortenolsen.pro/v1
kind: ExternalHttpService
metadata:
name: '{{ .Release.Name }}'
spec:
environment: '{{ .Values.globals.environment }}'
subdomain: '{{ .Values.subdomain }}'
destination:
host: '{{ .Release.Name }}.{{ .Release.Namespace }}.svc.cluster.local'
port:
number: 80

View File

@@ -1,11 +0,0 @@
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: '{{ .Release.Name }}-data'
spec:
accessModes:
- 'ReadWriteOnce'
resources:
requests:
storage: '1Gi'
storageClassName: '{{ .Values.globals.environment }}'

View File

@@ -1,32 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: '{{ .Release.Name }}'
labels:
app: '{{ .Release.Name }}'
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 8080
protocol: TCP
name: http
selector:
app: '{{ .Release.Name }}'
---
apiVersion: v1
kind: Service
metadata:
name: '{{ .Release.Name }}-headscale'
labels:
app: '{{ .Release.Name }}'
spec:
type: LoadBalancer
ports:
- port: 41641
targetPort: 41641
protocol: UDP
name: wireguard-udp
selector:
app: '{{ .Release.Name }}'

View File

@@ -1,7 +0,0 @@
globals:
environment: prod
image:
repository: headscale/headscale
tag: latest@sha256:ea9b5ee06274d757a4d52103de56cd11a9c393acb19d9a35f4b9fe52ada410de
pullPolicy: IfNotPresent
subdomain: headscale

View File

@@ -1,3 +0,0 @@
apiVersion: v2
version: 1.0.0
name: openwebui

View File

@@ -1,10 +0,0 @@
apiVersion: homelab.mortenolsen.pro/v1
kind: OidcClient
metadata:
name: "{{ .Release.Name }}"
spec:
environment: "{{ .Values.globals.environment }}"
redirectUris:
- path: /api/auth/callback/oidc
subdomain: "{{ .Values.subdomain }}"
matchingMode: strict

View File

@@ -1,83 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: "{{ .Release.Name }}"
spec:
strategy:
type: Recreate
replicas: 1
selector:
matchLabels:
app: "{{ .Release.Name }}"
template:
metadata:
labels:
app: "{{ .Release.Name }}"
spec:
containers:
- name: "{{ .Release.Name }}"
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: "{{ .Values.image.pullPolicy }}"
ports:
- name: http
containerPort: 7575
protocol: TCP
livenessProbe:
tcpSocket:
port: http
readinessProbe:
tcpSocket:
port: http
volumeMounts:
- mountPath: /appdata
name: data
env:
- name: BASE_URL
value: https://homarr.olsen.cloud # TODO
- name: NEXTAUTH_URL
value: https://homarr.olsen.cloud
- name: AUTH_PROVIDERS
value: oidc
- name: AUTH_OIDC_CLIENT_NAME
value: Authentik
- name: AUTH_OIDC_SCOPE_OVERWRITE
value: openid email profile
- name: AUTH_OIDC_GROUPS_ATTRIBUTE
value: groups
- name: AUTH_OIDC_AUTO_LOGIN
value: "true"
- name: SECRET_ENCRYPTION_KEY
valueFrom:
secretKeyRef:
name: "{{ .Release.Name }}-secrets"
key: encryptionkey
- name: AUTH_OIDC_ISSUER
valueFrom:
secretKeyRef:
name: "{{ .Release.Name }}-client"
key: configurationIssuer
- name: AUTH_OIDC_CLIENT_ID
valueFrom:
secretKeyRef:
name: "{{ .Release.Name }}-client"
key: clientId
- name: AUTH_OIDC_CLIENT_SECRET
valueFrom:
secretKeyRef:
name: "{{ .Release.Name }}-client"
key: clientSecret
volumes:
- name: data
persistentVolumeClaim:
claimName: "{{ .Release.Name }}-data"

View File

@@ -1,11 +0,0 @@
apiVersion: homelab.mortenolsen.pro/v1
kind: ExternalHttpService
metadata:
name: '{{ .Release.Name }}'
spec:
environment: '{{ .Values.globals.environment }}'
subdomain: '{{ .Values.subdomain }}'
destination:
host: '{{ .Release.Name }}.{{ .Release.Namespace }}.svc.cluster.local'
port:
number: 80

View File

@@ -1,11 +0,0 @@
apiVersion: homelab.mortenolsen.pro/v1
kind: HttpService
metadata:
name: "{{ .Release.Name }}"
spec:
environment: "{{ .Values.globals.environment }}"
subdomain: "{{ .Values.subdomain }}"
destination:
host: "{{ .Release.Name }}.{{ .Release.Namespace }}.svc.cluster.local"
port:
number: 80

View File

@@ -1,11 +0,0 @@
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: '{{ .Release.Name }}-data'
spec:
accessModes:
- 'ReadWriteOnce'
resources:
requests:
storage: '1Gi'
storageClassName: '{{ .Values.globals.environment }}'

View File

@@ -1,9 +0,0 @@
apiVersion: homelab.mortenolsen.pro/v1
kind: GenerateSecret
metadata:
name: "{{ .Release.Name }}-secrets"
spec:
fields:
- name: encryptionkey
encoding: hex
length: 64

View File

@@ -1,15 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: "{{ .Release.Name }}"
labels:
app: "{{ .Release.Name }}"
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 7575
protocol: TCP
name: http
selector:
app: "{{ .Release.Name }}"

View File

@@ -1,7 +0,0 @@
globals:
environment: prod
image:
repository: ghcr.io/homarr-labs/homarr
tag: latest@sha256:9ba9831d43347b6d66143a0754c97b9790a2ffe9bdf5004083668864b3328e65
pullPolicy: IfNotPresent
subdomain: homarr

View File

@@ -1,3 +0,0 @@
apiVersion: v2
version: 1.0.0
name: home-assistant

View File

@@ -1,10 +0,0 @@
apiVersion: homelab.mortenolsen.pro/v1
kind: OidcClient
metadata:
name: "{{ .Release.Name }}"
spec:
environment: "{{ .Values.globals.environment }}"
redirectUris:
- path: /auth/openid/callback
subdomain: "{{ .Values.subdomain }}"
matchingMode: strict

View File

@@ -1,45 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: "{{ .Release.Name }}"
spec:
strategy:
type: Recreate
replicas: 1
selector:
matchLabels:
app: "{{ .Release.Name }}"
template:
metadata:
labels:
app: "{{ .Release.Name }}"
spec:
hostNetwork: true
dnsPolicy: ClusterFirstWithHostNet
containers:
- name: "{{ .Release.Name }}"
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: "{{ .Values.image.pullPolicy }}"
env:
- name: TZ
value: "{{ .Values.globals.timezone }}"
ports:
- name: http
containerPort: 8123
protocol: TCP
livenessProbe:
tcpSocket:
port: http
readinessProbe:
tcpSocket:
port: http
volumeMounts:
- mountPath: /config
name: config
securityContext:
privileged: true
volumes:
- name: config
persistentVolumeClaim:
claimName: "{{ .Release.Name }}-config"

View File

@@ -1,11 +0,0 @@
apiVersion: homelab.mortenolsen.pro/v1
kind: ExternalHttpService
metadata:
name: "{{ .Release.Name }}"
spec:
environment: "{{ .Values.globals.environment }}"
subdomain: "{{ .Values.subdomain }}"
destination:
host: "{{ .Release.Name }}.{{ .Release.Namespace }}.svc.cluster.local"
port:
number: 80

View File

@@ -1,11 +0,0 @@
apiVersion: homelab.mortenolsen.pro/v1
kind: HttpService
metadata:
name: "{{ .Release.Name }}"
spec:
environment: "{{ .Values.globals.environment }}"
subdomain: "{{ .Values.subdomain }}"
destination:
host: "{{ .Release.Name }}.{{ .Release.Namespace }}.svc.cluster.local"
port:
number: 80

View File

@@ -1,59 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: "{{ .Release.Name }}-piper"
spec:
strategy:
type: Recreate
replicas: 1
selector:
matchLabels:
app: "{{ .Release.Name }}-piper"
template:
metadata:
labels:
app: "{{ .Release.Name }}-piper"
spec:
hostNetwork: true
containers:
- name: "{{ .Release.Name }}-piper"
image: "{{ .Values.piper.image.repository }}:{{ .Values.piper.image.tag }}"
imagePullPolicy: "{{ .Values.piper.image.pullPolicy }}"
args:
- --piper
- /usr/share/piper/piper
- --data-dir
- /usr/share/piper-voices
- --voice
- "{{ .Values.piper.model }}"
env:
- name: TZ
value: "{{ .Values.globals.timezone }}"
ports:
- name: http
containerPort: 10200
protocol: TCP
livenessProbe:
tcpSocket:
port: http
readinessProbe:
tcpSocket:
port: http
---
apiVersion: v1
kind: Service
metadata:
name: "{{ .Release.Name }}-piper"
labels:
app: "{{ .Release.Name }}-piper"
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 10200
protocol: TCP
name: http
selector:
app: "{{ .Release.Name }}-piper"

View File

@@ -1,11 +0,0 @@
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: "{{ .Release.Name }}-config"
spec:
accessModes:
- "ReadWriteOnce"
resources:
requests:
storage: "1Gi"
storageClassName: "{{ .Values.globals.environment }}"

View File

@@ -1,15 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: "{{ .Release.Name }}"
labels:
app: "{{ .Release.Name }}"
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 8123
protocol: TCP
name: http
selector:
app: "{{ .Release.Name }}"

View File

@@ -1,57 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: "{{ .Release.Name }}-whisper"
spec:
strategy:
type: Recreate
replicas: 1
selector:
matchLabels:
app: "{{ .Release.Name }}-whisper"
template:
metadata:
labels:
app: "{{ .Release.Name }}-whisper"
spec:
hostNetwork: true
containers:
- name: "{{ .Release.Name }}-whisper"
image: "{{ .Values.whisper.image.repository }}:{{ .Values.whisper.image.tag }}"
imagePullPolicy: "{{ .Values.whisper.image.pullPolicy }}"
args:
- --model
- "{{ .Values.whisper.model }}"
- --language
- "{{ .Values.whisper.language }}"
env:
- name: TZ
value: "{{ .Values.globals.timezone }}"
ports:
- name: http
containerPort: 10300
protocol: TCP
livenessProbe:
tcpSocket:
port: http
readinessProbe:
tcpSocket:
port: http
---
apiVersion: v1
kind: Service
metadata:
name: "{{ .Release.Name }}-whisper"
labels:
app: "{{ .Release.Name }}-whisper"
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 10300
protocol: TCP
name: http
selector:
app: "{{ .Release.Name }}-whisper"

View File

@@ -1,21 +0,0 @@
globals:
environment: prod
timezone: Europe/Amsterdam
image:
repository: ghcr.io/home-assistant/home-assistant
tag: stable@sha256:89ec0583c7f47c8a150204f6b5ed48b5432026012bebe1226cf72775a795a5e1
pullPolicy: IfNotPresent
subdomain: home-assistant
piper:
image:
repository: ghcr.io/morten-olsen/glados-voice
tag: main@sha256:8fcc19bd9e7e846bdfd9e9e569c8c944dcfb1d0b47e3f479cbaa7f5587c7206c
pullPolicy: Always
model: en_US-glados-medium
whisper:
image:
repository: rhasspy/wyoming-whisper
tag: latest@sha256:f03456914affe8076fc7688c0890f4c708d93ebfac7340b0b2467f721412012d
pullPolicy: IfNotPresent
model: tiny-int8
language: us

View File

@@ -1,12 +0,0 @@
set -euo pipefail
find . -name "values.yaml" -type f -print0 | while IFS= read -r -d '' values_file; do
location=$(dirname "$values_file")
name=$(basename "$location")
name=$(echo "$name" | tr '[:upper:]' '[:lower:]' | tr -s '[:punct:][:space:]' '-' | sed -e 's/^-*//' -e 's/-*$//')
echo "✅ Chart found in: $location"
echo " - Generated release name: $name"
HELM_COMMAND="helm install --namespace prod \"$name\" \"$location\""
helm upgrade -i --namespace prod "$name" "$location"
done

View File

@@ -1,3 +0,0 @@
apiVersion: v2
version: 1.0.0
name: Jellyfin

Some files were not shown because too many files have changed in this diff Show More