Compare commits
24 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 3b2b38b625 | |||
| b88b13ef16 | |||
| bc36b67320 | |||
| 869ff82875 | |||
| 2a17d50122 | |||
| 22bb54a0e2 | |||
| 1ac2f62082 | |||
|
|
8776b21515 | ||
| ddc7ec3008 | |||
| 357eaf37ed | |||
|
b49be7bc09
|
|||
| 320a66c0fc | |||
|
08bba3a2bf
|
|||
|
bfa7523a2b
|
|||
|
|
746f948218 | ||
| c56f6a07a4 | |||
| a1589ee88a | |||
| c1f7e193fc | |||
| 3b9ca7e76e | |||
|
6607a36ad4
|
|||
| 5c4a10acac | |||
|
75025890ef
|
|||
| 0d9a1fa93d | |||
| e04b5f0e06 |
@@ -24,7 +24,7 @@ jobs:
|
||||
- name: Set up Bun
|
||||
uses: oven-sh/setup-bun@v2
|
||||
with:
|
||||
bun-version: 1.3.11
|
||||
bun-version: 1.3.12
|
||||
|
||||
- name: Install Dependencies
|
||||
run: bun install --frozen-lockfile
|
||||
@@ -119,7 +119,7 @@ jobs:
|
||||
- name: Set up Bun
|
||||
uses: oven-sh/setup-bun@v2
|
||||
with:
|
||||
bun-version: 1.3.11
|
||||
bun-version: 1.3.12
|
||||
|
||||
- name: Install Dependencies
|
||||
run: bun install --frozen-lockfile
|
||||
|
||||
@@ -27,7 +27,7 @@ jobs:
|
||||
- name: Set up Bun
|
||||
uses: oven-sh/setup-bun@v2
|
||||
with:
|
||||
bun-version: 1.3.11
|
||||
bun-version: 1.3.12
|
||||
|
||||
- name: Install Dependencies
|
||||
run: bun install --frozen-lockfile
|
||||
|
||||
31
CHANGELOG.md
31
CHANGELOG.md
@@ -1,3 +1,34 @@
|
||||
# [0.23.0](http://gitea-http.gitea:3000/alexlebens/site-documentation/compare/0.22.0...0.23.0) (2026-04-10)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **deps:** update dependency astro to v6.1.5 ([b49be7b](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/b49be7bc09918c8c39572cabd903e3f73a2ef6a3))
|
||||
* wrong source ([ddc7ec3](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/ddc7ec300859240497cc65070d253ba02b794b06))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* remove dep-track ([357eaf3](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/357eaf37eda2b9558b49292970f7765f07ece0c1))
|
||||
|
||||
# [0.22.0](http://gitea-http.gitea:3000/alexlebens/site-documentation/compare/0.21.0...0.22.0) (2026-04-08)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **deps:** update dependency @astrojs/starlight to v0.38.3 ([6607a36](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/6607a36ad4a6b66719685cc84af2790a210dfc7f))
|
||||
* **deps:** update dependency astro to v6.1.4 ([7502589](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/75025890ef0577278c44d3678671ca518798b0ec))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* add more apps ([a1589ee](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/a1589ee88aed1c8e47d906f30b2db7ab78f274a4))
|
||||
* add more apps ([c1f7e19](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/c1f7e193fc126ff4d94d2209a96fb29254c705fd))
|
||||
* add more apps ([3b9ca7e](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/3b9ca7e76ea44387ca000a6b039593214891a295))
|
||||
* add more apps ([0d9a1fa](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/0d9a1fa93d6b98dc6e88879b575769868bae5d57))
|
||||
* add more apps ([e04b5f0](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/e04b5f0e060fe7e7b6471ff0d7c721db366412f4))
|
||||
* update tsconfig for v8 ([5c4a10a](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/5c4a10acacb17d775e54f300eb280fb51e098bea))
|
||||
|
||||
# [0.21.0](http://gitea-http.gitea:3000/alexlebens/site-documentation/compare/0.20.0...0.21.0) (2026-04-07)
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# MIT License
|
||||
|
||||
Copyright (c) 2025 Alex Lebens
|
||||
Copyright (c) 2026 Alex Lebens
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
@@ -16,14 +16,22 @@ const getSiteURL = () => {
|
||||
export default defineConfig({
|
||||
site: getSiteURL(),
|
||||
|
||||
security: { csp: true },
|
||||
|
||||
prefetch: true,
|
||||
|
||||
integrations: [
|
||||
sitemap(),
|
||||
starlight({
|
||||
title: "Alex Lebens Docs",
|
||||
head: [
|
||||
{
|
||||
tag: 'script',
|
||||
attrs: {
|
||||
src: 'https://rybbit.alexlebens.dev/api/script.js',
|
||||
'data-site-id': 'a8768eb5f5ff',
|
||||
defer: true,
|
||||
},
|
||||
},
|
||||
],
|
||||
customCss: [
|
||||
'./src/styles/custom.css',
|
||||
],
|
||||
|
||||
64
bun.lock
64
bun.lock
@@ -8,10 +8,10 @@
|
||||
"@astrojs/mdx": "5.0.3",
|
||||
"@astrojs/node": "10.0.4",
|
||||
"@astrojs/sitemap": "3.7.2",
|
||||
"@astrojs/starlight": "0.38.2",
|
||||
"@astrojs/starlight": "0.38.3",
|
||||
"@tailwindcss/postcss": "4.2.2",
|
||||
"@tailwindcss/vite": "4.2.2",
|
||||
"astro": "6.1.3",
|
||||
"astro": "6.1.5",
|
||||
"sanitize-html": "2.17.2",
|
||||
"sharp": "0.34.5",
|
||||
"starlight-theme-rapide": "0.5.2",
|
||||
@@ -26,17 +26,17 @@
|
||||
"@semantic-release/release-notes-generator": "14.1.0",
|
||||
"@tailwindcss/forms": "0.5.11",
|
||||
"@tailwindcss/typography": "0.5.19",
|
||||
"@typescript-eslint/parser": "8.58.0",
|
||||
"@typescript-eslint/parser": "8.58.1",
|
||||
"eslint": "10.2.0",
|
||||
"eslint-config-prettier": "10.1.8",
|
||||
"eslint-plugin-astro": "1.6.0",
|
||||
"prettier": "3.8.1",
|
||||
"eslint-plugin-astro": "1.7.0",
|
||||
"prettier": "3.8.2",
|
||||
"prettier-plugin-astro": "0.14.1",
|
||||
"prettier-plugin-tailwindcss": "0.7.2",
|
||||
"semantic-release": "25.0.3",
|
||||
"semantic-release-export-data": "1.2.0",
|
||||
"typescript": "6.0.2",
|
||||
"typescript-eslint": "8.58.0",
|
||||
"typescript-eslint": "8.58.1",
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -65,7 +65,7 @@
|
||||
|
||||
"@astrojs/sitemap": ["@astrojs/sitemap@3.7.2", "", { "dependencies": { "sitemap": "^9.0.0", "stream-replace-string": "^2.0.0", "zod": "^4.3.6" } }, "sha512-PqkzkcZTb5ICiyIR8VoKbIAP/laNRXi5tw616N1Ckk+40oNB8Can1AzVV56lrbC5GKSZFCyJYUVYqVivMisvpA=="],
|
||||
|
||||
"@astrojs/starlight": ["@astrojs/starlight@0.38.2", "", { "dependencies": { "@astrojs/markdown-remark": "^7.0.0", "@astrojs/mdx": "^5.0.0", "@astrojs/sitemap": "^3.7.1", "@pagefind/default-ui": "^1.3.0", "@types/hast": "^3.0.4", "@types/js-yaml": "^4.0.9", "@types/mdast": "^4.0.4", "astro-expressive-code": "^0.41.6", "bcp-47": "^2.1.0", "hast-util-from-html": "^2.0.1", "hast-util-select": "^6.0.2", "hast-util-to-string": "^3.0.0", "hastscript": "^9.0.0", "i18next": "^23.11.5", "js-yaml": "^4.1.0", "klona": "^2.0.6", "magic-string": "^0.30.17", "mdast-util-directive": "^3.0.0", "mdast-util-to-markdown": "^2.1.0", "mdast-util-to-string": "^4.0.0", "pagefind": "^1.3.0", "rehype": "^13.0.1", "rehype-format": "^5.0.0", "remark-directive": "^3.0.0", "ultrahtml": "^1.6.0", "unified": "^11.0.5", "unist-util-visit": "^5.0.0", "vfile": "^6.0.2" }, "peerDependencies": { "astro": "^6.0.0" } }, "sha512-7AsrvG4EsXUmJT5uqiXJN4oZqKaY0wc/Ip7C6/zGnShHRVoTAA4jxeYIZ3wqbqA6zv4cnp9qk31vB2m2dUcmfg=="],
|
||||
"@astrojs/starlight": ["@astrojs/starlight@0.38.3", "", { "dependencies": { "@astrojs/markdown-remark": "^7.0.0", "@astrojs/mdx": "^5.0.0", "@astrojs/sitemap": "^3.7.1", "@pagefind/default-ui": "^1.3.0", "@types/hast": "^3.0.4", "@types/js-yaml": "^4.0.9", "@types/mdast": "^4.0.4", "astro-expressive-code": "^0.41.6", "bcp-47": "^2.1.0", "hast-util-from-html": "^2.0.1", "hast-util-select": "^6.0.2", "hast-util-to-string": "^3.0.0", "hastscript": "^9.0.0", "i18next": "^23.11.5", "js-yaml": "^4.1.0", "klona": "^2.0.6", "magic-string": "^0.30.17", "mdast-util-directive": "^3.0.0", "mdast-util-to-markdown": "^2.1.0", "mdast-util-to-string": "^4.0.0", "pagefind": "^1.3.0", "rehype": "^13.0.1", "rehype-format": "^5.0.0", "remark-directive": "^3.0.0", "ultrahtml": "^1.6.0", "unified": "^11.0.5", "unist-util-visit": "^5.0.0", "vfile": "^6.0.2" }, "peerDependencies": { "astro": "^6.0.0" } }, "sha512-kDlJPlUDdQFWYmyFM2yUPo66yws7v067AEK+/rQjjoVyqehL3DabuOJuy6UJFFTFyGbHxYcBms/ITEgdW7tphw=="],
|
||||
|
||||
"@astrojs/telemetry": ["@astrojs/telemetry@3.3.0", "", { "dependencies": { "ci-info": "4.4.0", "debug": "4.4.3", "dlv": "1.1.3", "dset": "3.1.4", "is-docker": "3.0.0", "is-wsl": "3.1.1", "which-pm-runs": "1.1.0" } }, "sha512-UFBgfeldP06qu6khs/yY+q1cDAaArM2/7AEIqQ9Cuvf7B1hNLq0xDrZkct+QoIGyjq56y8IaE2I3CTvG99mlhQ=="],
|
||||
|
||||
@@ -461,25 +461,25 @@
|
||||
|
||||
"@types/unist": ["@types/unist@3.0.3", "", {}, "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q=="],
|
||||
|
||||
"@typescript-eslint/eslint-plugin": ["@typescript-eslint/eslint-plugin@8.58.0", "", { "dependencies": { "@eslint-community/regexpp": "^4.12.2", "@typescript-eslint/scope-manager": "8.58.0", "@typescript-eslint/type-utils": "8.58.0", "@typescript-eslint/utils": "8.58.0", "@typescript-eslint/visitor-keys": "8.58.0", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.5.0" }, "peerDependencies": { "@typescript-eslint/parser": "^8.58.0", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-RLkVSiNuUP1C2ROIWfqX+YcUfLaSnxGE/8M+Y57lopVwg9VTYYfhuz15Yf1IzCKgZj6/rIbYTmJCUSqr76r0Wg=="],
|
||||
"@typescript-eslint/eslint-plugin": ["@typescript-eslint/eslint-plugin@8.58.1", "", { "dependencies": { "@eslint-community/regexpp": "^4.12.2", "@typescript-eslint/scope-manager": "8.58.1", "@typescript-eslint/type-utils": "8.58.1", "@typescript-eslint/utils": "8.58.1", "@typescript-eslint/visitor-keys": "8.58.1", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.5.0" }, "peerDependencies": { "@typescript-eslint/parser": "^8.58.1", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-eSkwoemjo76bdXl2MYqtxg51HNwUSkWfODUOQ3PaTLZGh9uIWWFZIjyjaJnex7wXDu+TRx+ATsnSxdN9YWfRTQ=="],
|
||||
|
||||
"@typescript-eslint/parser": ["@typescript-eslint/parser@8.58.0", "", { "dependencies": { "@typescript-eslint/scope-manager": "8.58.0", "@typescript-eslint/types": "8.58.0", "@typescript-eslint/typescript-estree": "8.58.0", "@typescript-eslint/visitor-keys": "8.58.0", "debug": "^4.4.3" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-rLoGZIf9afaRBYsPUMtvkDWykwXwUPL60HebR4JgTI8mxfFe2cQTu3AGitANp4b9B2QlVru6WzjgB2IzJKiCSA=="],
|
||||
"@typescript-eslint/parser": ["@typescript-eslint/parser@8.58.1", "", { "dependencies": { "@typescript-eslint/scope-manager": "8.58.1", "@typescript-eslint/types": "8.58.1", "@typescript-eslint/typescript-estree": "8.58.1", "@typescript-eslint/visitor-keys": "8.58.1", "debug": "^4.4.3" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-gGkiNMPqerb2cJSVcruigx9eHBlLG14fSdPdqMoOcBfh+vvn4iCq2C8MzUB89PrxOXk0y3GZ1yIWb9aOzL93bw=="],
|
||||
|
||||
"@typescript-eslint/project-service": ["@typescript-eslint/project-service@8.58.0", "", { "dependencies": { "@typescript-eslint/tsconfig-utils": "^8.58.0", "@typescript-eslint/types": "^8.58.0", "debug": "^4.4.3" }, "peerDependencies": { "typescript": ">=4.8.4 <6.1.0" } }, "sha512-8Q/wBPWLQP1j16NxoPNIKpDZFMaxl7yWIoqXWYeWO+Bbd2mjgvoF0dxP2jKZg5+x49rgKdf7Ck473M8PC3V9lg=="],
|
||||
"@typescript-eslint/project-service": ["@typescript-eslint/project-service@8.58.1", "", { "dependencies": { "@typescript-eslint/tsconfig-utils": "^8.58.1", "@typescript-eslint/types": "^8.58.1", "debug": "^4.4.3" }, "peerDependencies": { "typescript": ">=4.8.4 <6.1.0" } }, "sha512-gfQ8fk6cxhtptek+/8ZIqw8YrRW5048Gug8Ts5IYcMLCw18iUgrZAEY/D7s4hkI0FxEfGakKuPK/XUMPzPxi5g=="],
|
||||
|
||||
"@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.58.0", "", { "dependencies": { "@typescript-eslint/types": "8.58.0", "@typescript-eslint/visitor-keys": "8.58.0" } }, "sha512-W1Lur1oF50FxSnNdGp3Vs6P+yBRSmZiw4IIjEeYxd8UQJwhUF0gDgDD/W/Tgmh73mxgEU3qX0Bzdl/NGuSPEpQ=="],
|
||||
"@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.58.1", "", { "dependencies": { "@typescript-eslint/types": "8.58.1", "@typescript-eslint/visitor-keys": "8.58.1" } }, "sha512-TPYUEqJK6avLcEjumWsIuTpuYODTTDAtoMdt8ZZa93uWMTX13Nb8L5leSje1NluammvU+oI3QRr5lLXPgihX3w=="],
|
||||
|
||||
"@typescript-eslint/tsconfig-utils": ["@typescript-eslint/tsconfig-utils@8.58.0", "", { "peerDependencies": { "typescript": ">=4.8.4 <6.1.0" } }, "sha512-doNSZEVJsWEu4htiVC+PR6NpM+pa+a4ClH9INRWOWCUzMst/VA9c4gXq92F8GUD1rwhNvRLkgjfYtFXegXQF7A=="],
|
||||
"@typescript-eslint/tsconfig-utils": ["@typescript-eslint/tsconfig-utils@8.58.1", "", { "peerDependencies": { "typescript": ">=4.8.4 <6.1.0" } }, "sha512-JAr2hOIct2Q+qk3G+8YFfqkqi7sC86uNryT+2i5HzMa2MPjw4qNFvtjnw1IiA1rP7QhNKVe21mSSLaSjwA1Olw=="],
|
||||
|
||||
"@typescript-eslint/type-utils": ["@typescript-eslint/type-utils@8.58.0", "", { "dependencies": { "@typescript-eslint/types": "8.58.0", "@typescript-eslint/typescript-estree": "8.58.0", "@typescript-eslint/utils": "8.58.0", "debug": "^4.4.3", "ts-api-utils": "^2.5.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-aGsCQImkDIqMyx1u4PrVlbi/krmDsQUs4zAcCV6M7yPcPev+RqVlndsJy9kJ8TLihW9TZ0kbDAzctpLn5o+lOg=="],
|
||||
"@typescript-eslint/type-utils": ["@typescript-eslint/type-utils@8.58.1", "", { "dependencies": { "@typescript-eslint/types": "8.58.1", "@typescript-eslint/typescript-estree": "8.58.1", "@typescript-eslint/utils": "8.58.1", "debug": "^4.4.3", "ts-api-utils": "^2.5.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-HUFxvTJVroT+0rXVJC7eD5zol6ID+Sn5npVPWoFuHGg9Ncq5Q4EYstqR+UOqaNRFXi5TYkpXXkLhoCHe3G0+7w=="],
|
||||
|
||||
"@typescript-eslint/types": ["@typescript-eslint/types@8.58.0", "", {}, "sha512-O9CjxypDT89fbHxRfETNoAnHj/i6IpRK0CvbVN3qibxlLdo5p5hcLmUuCCrHMpxiWSwKyI8mCP7qRNYuOJ0Uww=="],
|
||||
"@typescript-eslint/types": ["@typescript-eslint/types@8.58.1", "", {}, "sha512-io/dV5Aw5ezwzfPBBWLoT+5QfVtP8O7q4Kftjn5azJ88bYyp/ZMCsyW1lpKK46EXJcaYMZ1JtYj+s/7TdzmQMw=="],
|
||||
|
||||
"@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.58.0", "", { "dependencies": { "@typescript-eslint/project-service": "8.58.0", "@typescript-eslint/tsconfig-utils": "8.58.0", "@typescript-eslint/types": "8.58.0", "@typescript-eslint/visitor-keys": "8.58.0", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", "tinyglobby": "^0.2.15", "ts-api-utils": "^2.5.0" }, "peerDependencies": { "typescript": ">=4.8.4 <6.1.0" } }, "sha512-7vv5UWbHqew/dvs+D3e1RvLv1v2eeZ9txRHPnEEBUgSNLx5ghdzjHa0sgLWYVKssH+lYmV0JaWdoubo0ncGYLA=="],
|
||||
"@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.58.1", "", { "dependencies": { "@typescript-eslint/project-service": "8.58.1", "@typescript-eslint/tsconfig-utils": "8.58.1", "@typescript-eslint/types": "8.58.1", "@typescript-eslint/visitor-keys": "8.58.1", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", "tinyglobby": "^0.2.15", "ts-api-utils": "^2.5.0" }, "peerDependencies": { "typescript": ">=4.8.4 <6.1.0" } }, "sha512-w4w7WR7GHOjqqPnvAYbazq+Y5oS68b9CzasGtnd6jIeOIeKUzYzupGTB2T4LTPSv4d+WPeccbxuneTFHYgAAWg=="],
|
||||
|
||||
"@typescript-eslint/utils": ["@typescript-eslint/utils@8.58.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", "@typescript-eslint/scope-manager": "8.58.0", "@typescript-eslint/types": "8.58.0", "@typescript-eslint/typescript-estree": "8.58.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-RfeSqcFeHMHlAWzt4TBjWOAtoW9lnsAGiP3GbaX9uVgTYYrMbVnGONEfUCiSss+xMHFl+eHZiipmA8WkQ7FuNA=="],
|
||||
"@typescript-eslint/utils": ["@typescript-eslint/utils@8.58.1", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", "@typescript-eslint/scope-manager": "8.58.1", "@typescript-eslint/types": "8.58.1", "@typescript-eslint/typescript-estree": "8.58.1" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-Ln8R0tmWC7pTtLOzgJzYTXSCjJ9rDNHAqTaVONF4FEi2qwce8mD9iSOxOpLFFvWp/wBFlew0mjM1L1ihYWfBdQ=="],
|
||||
|
||||
"@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.58.0", "", { "dependencies": { "@typescript-eslint/types": "8.58.0", "eslint-visitor-keys": "^5.0.0" } }, "sha512-XJ9UD9+bbDo4a4epraTwG3TsNPeiB9aShrUneAVXy8q4LuwowN+qu89/6ByLMINqvIMeI9H9hOHQtg/ijrYXzQ=="],
|
||||
"@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.58.1", "", { "dependencies": { "@typescript-eslint/types": "8.58.1", "eslint-visitor-keys": "^5.0.0" } }, "sha512-y+vH7QE8ycjoa0bWciFg7OpFcipUuem1ujhrdLtq1gByKwfbC7bPeKsiny9e0urg93DqwGcHey+bGRKCnF1nZQ=="],
|
||||
|
||||
"@ungap/structured-clone": ["@ungap/structured-clone@1.3.0", "", {}, "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g=="],
|
||||
|
||||
@@ -519,7 +519,7 @@
|
||||
|
||||
"astring": ["astring@1.9.0", "", { "bin": { "astring": "bin/astring" } }, "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg=="],
|
||||
|
||||
"astro": ["astro@6.1.3", "", { "dependencies": { "@astrojs/compiler": "^3.0.1", "@astrojs/internal-helpers": "0.8.0", "@astrojs/markdown-remark": "7.1.0", "@astrojs/telemetry": "3.3.0", "@capsizecss/unpack": "^4.0.0", "@clack/prompts": "^1.1.0", "@oslojs/encoding": "^1.1.0", "@rollup/pluginutils": "^5.3.0", "aria-query": "^5.3.2", "axobject-query": "^4.1.0", "ci-info": "^4.4.0", "clsx": "^2.1.1", "common-ancestor-path": "^2.0.0", "cookie": "^1.1.1", "devalue": "^5.6.3", "diff": "^8.0.3", "dlv": "^1.1.3", "dset": "^3.1.4", "es-module-lexer": "^2.0.0", "esbuild": "^0.27.3", "flattie": "^1.1.1", "fontace": "~0.4.1", "github-slugger": "^2.0.0", "html-escaper": "3.0.3", "http-cache-semantics": "^4.2.0", "js-yaml": "^4.1.1", "magic-string": "^0.30.21", "magicast": "^0.5.2", "mrmime": "^2.0.1", "neotraverse": "^0.6.18", "obug": "^2.1.1", "p-limit": "^7.3.0", "p-queue": "^9.1.0", "package-manager-detector": "^1.6.0", "piccolore": "^0.1.3", "picomatch": "^4.0.3", "rehype": "^13.0.2", "semver": "^7.7.4", "shiki": "^4.0.2", "smol-toml": "^1.6.0", "svgo": "^4.0.1", "tinyclip": "^0.1.12", "tinyexec": "^1.0.4", "tinyglobby": "^0.2.15", "tsconfck": "^3.1.6", "ultrahtml": "^1.6.0", "unifont": "~0.7.4", "unist-util-visit": "^5.1.0", "unstorage": "^1.17.4", "vfile": "^6.0.3", "vite": "^7.3.1", "vitefu": "^1.1.2", "xxhash-wasm": "^1.1.0", "yargs-parser": "^22.0.0", "zod": "^4.3.6" }, "optionalDependencies": { "sharp": "^0.34.0" }, "bin": { "astro": "bin/astro.mjs" } }, "sha512-FUKbBYOdYYrRNZwDd9I5CVSfR6Nj9aZeNzcjcvh1FgHwR0uXawkYFR3HiGxmdmAB2m8fs0iIkDdsiUfwGeO8qA=="],
|
||||
"astro": ["astro@6.1.5", "", { "dependencies": { "@astrojs/compiler": "^3.0.1", "@astrojs/internal-helpers": "0.8.0", "@astrojs/markdown-remark": "7.1.0", "@astrojs/telemetry": "3.3.0", "@capsizecss/unpack": "^4.0.0", "@clack/prompts": "^1.1.0", "@oslojs/encoding": "^1.1.0", "@rollup/pluginutils": "^5.3.0", "aria-query": "^5.3.2", "axobject-query": "^4.1.0", "ci-info": "^4.4.0", "clsx": "^2.1.1", "common-ancestor-path": "^2.0.0", "cookie": "^1.1.1", "devalue": "^5.6.3", "diff": "^8.0.3", "dset": "^3.1.4", "es-module-lexer": "^2.0.0", "esbuild": "^0.27.3", "flattie": "^1.1.1", "fontace": "~0.4.1", "github-slugger": "^2.0.0", "html-escaper": "3.0.3", "http-cache-semantics": "^4.2.0", "js-yaml": "^4.1.1", "magic-string": "^0.30.21", "magicast": "^0.5.2", "mrmime": "^2.0.1", "neotraverse": "^0.6.18", "obug": "^2.1.1", "p-limit": "^7.3.0", "p-queue": "^9.1.0", "package-manager-detector": "^1.6.0", "piccolore": "^0.1.3", "picomatch": "^4.0.3", "rehype": "^13.0.2", "semver": "^7.7.4", "shiki": "^4.0.2", "smol-toml": "^1.6.0", "svgo": "^4.0.1", "tinyclip": "^0.1.12", "tinyexec": "^1.0.4", "tinyglobby": "^0.2.15", "tsconfck": "^3.1.6", "ultrahtml": "^1.6.0", "unifont": "~0.7.4", "unist-util-visit": "^5.1.0", "unstorage": "^1.17.4", "vfile": "^6.0.3", "vite": "^7.3.1", "vitefu": "^1.1.2", "xxhash-wasm": "^1.1.0", "yargs-parser": "^22.0.0", "zod": "^4.3.6" }, "optionalDependencies": { "sharp": "^0.34.0" }, "bin": { "astro": "bin/astro.mjs" } }, "sha512-AJVw/JlssxUCBFi3Hp4djL8Pt7wUQqStBBawCd8cNGBBM2lBzp/rXGguzt4OcMfW+86fs0hpFwMyopHM2r6d3g=="],
|
||||
|
||||
"astro-eslint-parser": ["astro-eslint-parser@1.3.0", "", { "dependencies": { "@astrojs/compiler": "2.13.1", "@typescript-eslint/scope-manager": "8.56.1", "@typescript-eslint/types": "8.56.1", "astrojs-compiler-sync": "1.1.1", "debug": "4.4.3", "entities": "6.0.1", "eslint-scope": "8.4.0", "eslint-visitor-keys": "4.2.1", "espree": "10.4.0", "fast-glob": "3.3.3", "is-glob": "4.0.3", "semver": "7.7.4" } }, "sha512-aOLc/aDR7lTWAHlytEefwn4Y6qs6uMr69DZvUx2A1AOAZsWhGB/paiRWPtVchh9wzMvLeqr+DkbENhVreVr9AQ=="],
|
||||
|
||||
@@ -749,7 +749,7 @@
|
||||
|
||||
"eslint-config-prettier": ["eslint-config-prettier@10.1.8", "", { "peerDependencies": { "eslint": "10.0.3" }, "bin": { "eslint-config-prettier": "bin/cli.js" } }, "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w=="],
|
||||
|
||||
"eslint-plugin-astro": ["eslint-plugin-astro@1.6.0", "", { "dependencies": { "@eslint-community/eslint-utils": "4.9.1", "@jridgewell/sourcemap-codec": "1.5.5", "@typescript-eslint/types": "8.56.1", "astro-eslint-parser": "1.3.0", "eslint-compat-utils": "0.6.5", "globals": "16.5.0", "postcss": "8.5.6", "postcss-selector-parser": "7.1.1" }, "peerDependencies": { "eslint": "10.0.3" } }, "sha512-yGIbLHuj5MOUXa0s4sZ6cVhv6ehb+WLF80tsrGaxMk6VTUExruMzubQDzhOYt8fbR1c9vILCCRSCsKI7M1whig=="],
|
||||
"eslint-plugin-astro": ["eslint-plugin-astro@1.7.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@jridgewell/sourcemap-codec": "^1.4.14", "@typescript-eslint/types": "^7.7.1 || ^8", "astro-eslint-parser": "^1.3.0", "eslint-compat-utils": "^0.6.0", "globals": "^16.0.0", "postcss": "^8.4.14", "postcss-selector-parser": "^7.0.0" }, "peerDependencies": { "eslint": ">=8.57.0" } }, "sha512-89xpAn528UKCdmyysbg0AHHqi6sqcK89wXnJIpu4F0mFBN03zATEBNK7pRtMfl6gwtMOm5ECXs+Wz5qDHhwTFw=="],
|
||||
|
||||
"eslint-scope": ["eslint-scope@9.1.2", "", { "dependencies": { "@types/esrecurse": "4.3.1", "@types/estree": "1.0.8", "esrecurse": "4.3.0", "estraverse": "5.3.0" } }, "sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ=="],
|
||||
|
||||
@@ -1361,7 +1361,7 @@
|
||||
|
||||
"pkg-conf": ["pkg-conf@2.1.0", "", { "dependencies": { "find-up": "^2.0.0", "load-json-file": "^4.0.0" } }, "sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g=="],
|
||||
|
||||
"postcss": ["postcss@8.5.6", "", { "dependencies": { "nanoid": "3.3.11", "picocolors": "1.1.1", "source-map-js": "1.2.1" } }, "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg=="],
|
||||
"postcss": ["postcss@8.5.8", "", { "dependencies": { "nanoid": "3.3.11", "picocolors": "1.1.1", "source-map-js": "1.2.1" } }, "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg=="],
|
||||
|
||||
"postcss-nested": ["postcss-nested@6.2.0", "", { "dependencies": { "postcss-selector-parser": "6.1.2" }, "peerDependencies": { "postcss": "8.5.8" } }, "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ=="],
|
||||
|
||||
@@ -1369,7 +1369,7 @@
|
||||
|
||||
"prelude-ls": ["prelude-ls@1.2.1", "", {}, "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="],
|
||||
|
||||
"prettier": ["prettier@3.8.1", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg=="],
|
||||
"prettier": ["prettier@3.8.2", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-8c3mgTe0ASwWAJK+78dpviD+A8EqhndQPUBpNUIPt6+xWlIigCwfN01lWr9MAede4uqXGTEKeQWTvzb3vjia0Q=="],
|
||||
|
||||
"prettier-plugin-astro": ["prettier-plugin-astro@0.14.1", "", { "dependencies": { "@astrojs/compiler": "2.13.1", "prettier": "3.8.1", "sass-formatter": "0.7.9" } }, "sha512-RiBETaaP9veVstE4vUwSIcdATj6dKmXljouXc/DDNwBSPTp8FRkLGDSGFClKsAFeeg+13SB0Z1JZvbD76bigJw=="],
|
||||
|
||||
@@ -1625,7 +1625,7 @@
|
||||
|
||||
"typescript": ["typescript@6.0.2", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ=="],
|
||||
|
||||
"typescript-eslint": ["typescript-eslint@8.58.0", "", { "dependencies": { "@typescript-eslint/eslint-plugin": "8.58.0", "@typescript-eslint/parser": "8.58.0", "@typescript-eslint/typescript-estree": "8.58.0", "@typescript-eslint/utils": "8.58.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-e2TQzKfaI85fO+F3QywtX+tCTsu/D3WW5LVU6nz8hTFKFZ8yBJ6mSYRpXqdR3mFjPWmO0eWsTa5f+UpAOe/FMA=="],
|
||||
"typescript-eslint": ["typescript-eslint@8.58.1", "", { "dependencies": { "@typescript-eslint/eslint-plugin": "8.58.1", "@typescript-eslint/parser": "8.58.1", "@typescript-eslint/typescript-estree": "8.58.1", "@typescript-eslint/utils": "8.58.1" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-gf6/oHChByg9HJvhMO1iBexJh12AqqTfnuxscMDOVqfJW3htsdRJI/GfPpHTTcyeB8cSTUY2JcZmVgoyPqcrDg=="],
|
||||
|
||||
"ufo": ["ufo@1.6.3", "", {}, "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q=="],
|
||||
|
||||
@@ -1729,12 +1729,8 @@
|
||||
|
||||
"@actions/http-client/undici": ["undici@6.24.0", "", {}, "sha512-lVLNosgqo5EkGqh5XUDhGfsMSoO8K0BAN0TyJLvwNRSl4xWGZlCVYsAIpa/OpA3TvmnM01GWcoKmc3ZWo5wKKA=="],
|
||||
|
||||
"@astrojs/starlight/@astrojs/markdown-remark": ["@astrojs/markdown-remark@7.0.0", "", { "dependencies": { "@astrojs/internal-helpers": "0.8.0", "@astrojs/prism": "4.0.0", "github-slugger": "^2.0.0", "hast-util-from-html": "^2.0.3", "hast-util-to-text": "^4.0.2", "js-yaml": "^4.1.1", "mdast-util-definitions": "^6.0.0", "rehype-raw": "^7.0.0", "rehype-stringify": "^10.0.1", "remark-gfm": "^4.0.1", "remark-parse": "^11.0.0", "remark-rehype": "^11.1.2", "remark-smartypants": "^3.0.2", "shiki": "^4.0.0", "smol-toml": "^1.6.0", "unified": "^11.0.5", "unist-util-remove-position": "^5.0.0", "unist-util-visit": "^5.1.0", "unist-util-visit-parents": "^6.0.2", "vfile": "^6.0.3" } }, "sha512-jTAXHPy45L7o1ljH4jYV+ShtOHtyQUa1mGp3a5fJp1soX8lInuTJQ6ihmldHzVM4Q7QptU4SzIDIcKbBJO7sXQ=="],
|
||||
|
||||
"@eslint-community/eslint-utils/eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="],
|
||||
|
||||
"@expressive-code/core/postcss": ["postcss@8.5.8", "", { "dependencies": { "nanoid": "3.3.11", "picocolors": "1.1.1", "source-map-js": "1.2.1" } }, "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg=="],
|
||||
|
||||
"@expressive-code/plugin-shiki/shiki": ["shiki@3.23.0", "", { "dependencies": { "@shikijs/core": "3.23.0", "@shikijs/engine-javascript": "3.23.0", "@shikijs/engine-oniguruma": "3.23.0", "@shikijs/langs": "3.23.0", "@shikijs/themes": "3.23.0", "@shikijs/types": "3.23.0", "@shikijs/vscode-textmate": "10.0.2", "@types/hast": "3.0.4" } }, "sha512-55Dj73uq9ZXL5zyeRPzHQsK7Nbyt6Y10k5s7OjuFZGMhpp4r/rsLBH0o/0fstIzX1Lep9VxefWljK/SKCzygIA=="],
|
||||
|
||||
"@pnpm/network.ca-file/graceful-fs": ["graceful-fs@4.2.10", "", {}, "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA=="],
|
||||
@@ -1773,8 +1769,6 @@
|
||||
|
||||
"@tailwindcss/oxide-wasm32-wasi/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
|
||||
|
||||
"@tailwindcss/postcss/postcss": ["postcss@8.5.8", "", { "dependencies": { "nanoid": "3.3.11", "picocolors": "1.1.1", "source-map-js": "1.2.1" } }, "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg=="],
|
||||
|
||||
"@types/cacheable-request/@types/node": ["@types/node@25.0.3", "", { "dependencies": { "undici-types": "7.16.0" } }, "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA=="],
|
||||
|
||||
"@types/glob/@types/node": ["@types/node@25.0.3", "", { "dependencies": { "undici-types": "7.16.0" } }, "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA=="],
|
||||
@@ -1825,8 +1819,6 @@
|
||||
|
||||
"env-ci/execa": ["execa@8.0.1", "", { "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^8.0.1", "human-signals": "^5.0.0", "is-stream": "^3.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^5.1.0", "onetime": "^6.0.0", "signal-exit": "^4.1.0", "strip-final-newline": "^3.0.0" } }, "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg=="],
|
||||
|
||||
"eslint-plugin-astro/@typescript-eslint/types": ["@typescript-eslint/types@8.56.1", "", {}, "sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw=="],
|
||||
|
||||
"eslint-plugin-astro/postcss-selector-parser": ["postcss-selector-parser@7.1.1", "", { "dependencies": { "cssesc": "3.0.0", "util-deprecate": "1.0.2" } }, "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg=="],
|
||||
|
||||
"execa/get-stream": ["get-stream@6.0.1", "", {}, "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg=="],
|
||||
@@ -2159,18 +2151,16 @@
|
||||
|
||||
"pkg-conf/find-up": ["find-up@2.1.0", "", { "dependencies": { "locate-path": "^2.0.0" } }, "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ=="],
|
||||
|
||||
"postcss-nested/postcss": ["postcss@8.5.8", "", { "dependencies": { "nanoid": "3.3.11", "picocolors": "1.1.1", "source-map-js": "1.2.1" } }, "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg=="],
|
||||
|
||||
"postcss-nested/postcss-selector-parser": ["postcss-selector-parser@6.1.2", "", { "dependencies": { "cssesc": "3.0.0", "util-deprecate": "1.0.2" } }, "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg=="],
|
||||
|
||||
"prettier-plugin-astro/prettier": ["prettier@3.8.1", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg=="],
|
||||
|
||||
"read-package-up/read-pkg": ["read-pkg@9.0.1", "", { "dependencies": { "@types/normalize-package-data": "^2.4.3", "normalize-package-data": "^6.0.0", "parse-json": "^8.0.0", "type-fest": "^4.6.0", "unicorn-magic": "^0.1.0" } }, "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA=="],
|
||||
|
||||
"read-package-up/type-fest": ["type-fest@4.41.0", "", {}, "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA=="],
|
||||
|
||||
"read-pkg/type-fest": ["type-fest@5.4.4", "", { "dependencies": { "tagged-tag": "^1.0.0" } }, "sha512-JnTrzGu+zPV3aXIUhnyWJj4z/wigMsdYajGLIYakqyOW1nPllzXEJee0QQbHj+CTIQtXGlAjuK0UY+2xTyjVAw=="],
|
||||
|
||||
"sanitize-html/postcss": ["postcss@8.5.8", "", { "dependencies": { "nanoid": "3.3.11", "picocolors": "1.1.1", "source-map-js": "1.2.1" } }, "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg=="],
|
||||
|
||||
"semantic-release/@semantic-release/error": ["@semantic-release/error@4.0.0", "", {}, "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ=="],
|
||||
|
||||
"semantic-release/aggregate-error": ["aggregate-error@5.0.0", "", { "dependencies": { "clean-stack": "^5.2.0", "indent-string": "^5.0.0" } }, "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw=="],
|
||||
@@ -2195,14 +2185,10 @@
|
||||
|
||||
"tsconfck/typescript": ["typescript@5.9.2", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A=="],
|
||||
|
||||
"vite/postcss": ["postcss@8.5.8", "", { "dependencies": { "nanoid": "3.3.11", "picocolors": "1.1.1", "source-map-js": "1.2.1" } }, "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg=="],
|
||||
|
||||
"vitefu/vite": ["vite@6.4.1", "", { "dependencies": { "esbuild": "0.25.12", "fdir": "6.5.0", "picomatch": "4.0.3", "postcss": "8.5.8", "rollup": "4.59.0", "tinyglobby": "0.2.15" }, "optionalDependencies": { "@types/node": "25.0.3", "fsevents": "2.3.3", "jiti": "2.6.1", "lightningcss": "1.31.1" }, "bin": { "vite": "bin/vite.js" } }, "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g=="],
|
||||
|
||||
"wrap-ansi/ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="],
|
||||
|
||||
"@astrojs/starlight/@astrojs/markdown-remark/@astrojs/prism": ["@astrojs/prism@4.0.0", "", { "dependencies": { "prismjs": "^1.30.0" } }, "sha512-NndtNPpxaGinRpRytljGBvYHpTOwHycSZ/c+lQi5cHvkqqrHKWdkPEhImlODBNmbuB+vyQUNUDXyjzt66CihJg=="],
|
||||
|
||||
"@expressive-code/plugin-shiki/shiki/@shikijs/core": ["@shikijs/core@3.23.0", "", { "dependencies": { "@shikijs/types": "3.23.0", "@shikijs/vscode-textmate": "10.0.2", "@types/hast": "3.0.4", "hast-util-to-html": "9.0.5" } }, "sha512-NSWQz0riNb67xthdm5br6lAkvpDJRTgB36fxlo37ZzM2yq0PQFFzbd8psqC2XMPgCzo1fW6cVi18+ArJ44wqgA=="],
|
||||
|
||||
"@expressive-code/plugin-shiki/shiki/@shikijs/engine-javascript": ["@shikijs/engine-javascript@3.23.0", "", { "dependencies": { "@shikijs/types": "3.23.0", "@shikijs/vscode-textmate": "10.0.2", "oniguruma-to-es": "4.3.4" } }, "sha512-aHt9eiGFobmWR5uqJUViySI1bHMqrAgamWE1TYSUoftkAeCCAiGawPMwM+VCadylQtF4V3VNOZ5LmfItH5f3yA=="],
|
||||
@@ -2323,8 +2309,6 @@
|
||||
|
||||
"vitefu/vite/lightningcss": ["lightningcss@1.31.1", "", { "dependencies": { "detect-libc": "2.1.2" }, "optionalDependencies": { "lightningcss-android-arm64": "1.31.1", "lightningcss-darwin-arm64": "1.31.1", "lightningcss-darwin-x64": "1.31.1", "lightningcss-freebsd-x64": "1.31.1", "lightningcss-linux-arm-gnueabihf": "1.31.1", "lightningcss-linux-arm64-gnu": "1.31.1", "lightningcss-linux-arm64-musl": "1.31.1", "lightningcss-linux-x64-gnu": "1.31.1", "lightningcss-linux-x64-musl": "1.31.1", "lightningcss-win32-arm64-msvc": "1.31.1", "lightningcss-win32-x64-msvc": "1.31.1" } }, "sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ=="],
|
||||
|
||||
"vitefu/vite/postcss": ["postcss@8.5.8", "", { "dependencies": { "nanoid": "3.3.11", "picocolors": "1.1.1", "source-map-js": "1.2.1" } }, "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg=="],
|
||||
|
||||
"@semantic-release/github/aggregate-error/clean-stack/escape-string-regexp": ["escape-string-regexp@5.0.0", "", {}, "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="],
|
||||
|
||||
"@semantic-release/npm/aggregate-error/clean-stack/escape-string-regexp": ["escape-string-regexp@5.0.0", "", {}, "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="],
|
||||
|
||||
14
package.json
14
package.json
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "site-documentation",
|
||||
"type": "module",
|
||||
"version": "0.21.0",
|
||||
"version": "0.23.0",
|
||||
"scripts": {
|
||||
"dev": "astro dev",
|
||||
"build": "astro build",
|
||||
@@ -15,10 +15,10 @@
|
||||
"@astrojs/mdx": "5.0.3",
|
||||
"@astrojs/node": "10.0.4",
|
||||
"@astrojs/sitemap": "3.7.2",
|
||||
"@astrojs/starlight": "0.38.2",
|
||||
"@astrojs/starlight": "0.38.3",
|
||||
"@tailwindcss/postcss": "4.2.2",
|
||||
"@tailwindcss/vite": "4.2.2",
|
||||
"astro": "6.1.3",
|
||||
"astro": "6.1.5",
|
||||
"sanitize-html": "2.17.2",
|
||||
"sharp": "0.34.5",
|
||||
"starlight-theme-rapide": "0.5.2",
|
||||
@@ -33,16 +33,16 @@
|
||||
"@semantic-release/release-notes-generator": "14.1.0",
|
||||
"@tailwindcss/forms": "0.5.11",
|
||||
"@tailwindcss/typography": "0.5.19",
|
||||
"@typescript-eslint/parser": "8.58.0",
|
||||
"@typescript-eslint/parser": "8.58.1",
|
||||
"eslint": "10.2.0",
|
||||
"eslint-config-prettier": "10.1.8",
|
||||
"eslint-plugin-astro": "1.6.0",
|
||||
"prettier": "3.8.1",
|
||||
"eslint-plugin-astro": "1.7.0",
|
||||
"prettier": "3.8.2",
|
||||
"prettier-plugin-astro": "0.14.1",
|
||||
"prettier-plugin-tailwindcss": "0.7.2",
|
||||
"semantic-release": "25.0.3",
|
||||
"semantic-release-export-data": "1.2.0",
|
||||
"typescript": "6.0.2",
|
||||
"typescript-eslint": "8.58.0"
|
||||
"typescript-eslint": "8.58.1"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
"mergeConfidence:all-badges",
|
||||
":rebaseStalePrs"
|
||||
],
|
||||
"timezone": "US/Central",
|
||||
"timezone": "America/Chicago",
|
||||
"labels": [],
|
||||
"prHourlyLimit": 0,
|
||||
"prConcurrentLimit": 0,
|
||||
|
||||
@@ -13,3 +13,11 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/actual
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
Budgeting and managing finances.
|
||||
|
||||
# Notes
|
||||
|
||||
Currently unused, need to setup bank integration or some other for of automation.
|
||||
|
||||
@@ -13,3 +13,17 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/argocd
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
import { Aside } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside type="tip">Has an internal [Grafana Dashboard](https://grafana.alexlebens.net/goto/ffiq2at9b8p34d?orgId=1).</Aside>
|
||||
|
||||
# Purpose
|
||||
|
||||
Deploying and managing resources within Kubernetes clusters.
|
||||
|
||||
# Notes
|
||||
|
||||
Syncs from templates defined in the [infrastructure](https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/manifests/) repo, manifests branch. Deeply integrated with Gitea and the rendered manifests system.
|
||||
|
||||
Also used as a dashboard for resources, mostly for logs and restarting deployments. This is also done in [Headlamp](https://docs.alexlebens.dev/applications/headlamp/), which is the full featured dashboard.
|
||||
|
||||
@@ -13,3 +13,13 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/audiobookshelf
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
Podcasts, Audiobbooks, and Books.
|
||||
|
||||
# Notes
|
||||
|
||||
Mostly for podcast archiving and listening to audiobooks. Backup for [Grimmory](https://docs.alexlebens.dev/applications/grimmory/) for books, but not primary.
|
||||
|
||||
Kind of difficult to manage podcasts though, and the phone apps don't auto download to the phone.
|
||||
|
||||
@@ -13,3 +13,17 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/authentik
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
import { Aside } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside>This app has public facing endpoint, at [auth.alexlebens.dev](https://auth.alexlebens.dev)</Aside>
|
||||
|
||||
<Aside type="tip">Has an internal [Grafana Dashboard](https://grafana.alexlebens.net/goto/efiq29z9u4dmob?orgId=1)</Aside>
|
||||
|
||||
# Purpose
|
||||
|
||||
Single sign on authentication for applications that support OIDC.
|
||||
|
||||
# Notes
|
||||
|
||||
Available at public, local, and Tailscale endpoints. Apps are configured for their like endppoints.
|
||||
|
||||
@@ -13,3 +13,13 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/backrest
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
Backup system for files on the NAS. For size contraint reasons, does not backup most video content.
|
||||
|
||||
# Notes
|
||||
|
||||
Must be manually configured in the app. Has been setup for targets at the remote - PiBox - or the Digital Ocean S3 buckets.
|
||||
|
||||
Mainly just for irreplacable files.
|
||||
|
||||
@@ -13,3 +13,11 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/bazarr
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
Downloads subtitles for Sonarr and Radarr managed files.
|
||||
|
||||
# Notes
|
||||
|
||||
Haven't setup properly or sure if subtitles are being downloaded. Since I don't use subtitles very often I have thought about removing this.
|
||||
|
||||
@@ -13,3 +13,17 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/blocky
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
import { Aside } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside type="tip">Has an [Grafana Dashboard](https://grafana.alexlebens.net/goto/afiq277mq7mkge?orgId=1)</Aside>
|
||||
|
||||
# Purpose
|
||||
|
||||
Very fast and declarative config DNS with built in adblocking. Used for local domain name configuration as well.
|
||||
|
||||
# Notes
|
||||
|
||||
Deployments in cluster, on RaspberryPis, and the PiBox. Cluster and Tailscale use the cluster endpoint, clients use the RaspberyPis, and home network used the PiBox.
|
||||
|
||||
DNS over TLS to Cloudflare servers and somewhat agressive blocking.
|
||||
|
||||
@@ -13,3 +13,15 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/cert-manager
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
import { Aside } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside type="tip">Has an [Grafana Dashboard](https://grafana.alexlebens.net/goto/ffiq2il12bwn4b?orgId=1)</Aside>
|
||||
|
||||
# Purpose
|
||||
|
||||
Manages certificates inside the Kubernetes cluster.
|
||||
|
||||
# Notes
|
||||
|
||||
Commonly used automatic background service used by other services.
|
||||
|
||||
@@ -13,3 +13,17 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/cilium
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
import { Aside } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside type="tip">Has a dedicated [Dashboard with Hubble](https://hubble.alexlebens.net/)</Aside>
|
||||
|
||||
# Purpose
|
||||
|
||||
Core networking service connecting nodes and pods together. Provides a metal LoadBalancer service.
|
||||
|
||||
# Notes
|
||||
|
||||
One of the most important apps in cluster. Any updates need special care to ensure success.
|
||||
|
||||
Long term goals include migrating the Ingress/Gateway from [Traefik](https://docs.alexlebens.dev/applications/traefik/) to Cilium and using BGP for connecting to the network devices. I've tried this a few times, but networking isn't my strong suit.
|
||||
|
||||
@@ -13,3 +13,19 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/cloudnative-pg
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
import { Aside } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside type="tip">Has an [Grafana Dashboard](https://grafana.alexlebens.net/goto/cfiq33g3brj0gc?orgId=1)</Aside>
|
||||
|
||||
# Purpose
|
||||
|
||||
Operator that manages PostgreSQL deployments in cluster.
|
||||
|
||||
# Notes
|
||||
|
||||
A very important application since many core services and applications depend on PostgreSQL databases.
|
||||
|
||||
Backups to the NAS with replication of the base backups to remote and DigialOcean S3 endpoints.
|
||||
|
||||
Used in conjunction with [this](https://gitea.alexlebens.dev/alexlebens/helm-charts/src/branch/main/charts/postgres-cluster) Helm Chart to easily deploy and manage the application PostgreSQL instances.
|
||||
|
||||
@@ -13,3 +13,17 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/coredns
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
import { Aside } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside type="tip">Has an [Grafana Dashboard](https://grafana.alexlebens.net/goto/dfiq3jh1ez0n4a?orgId=1)</Aside>
|
||||
|
||||
# Purpose
|
||||
|
||||
DNS server just for cluster services, such as pod and service routing.
|
||||
|
||||
# Notes
|
||||
|
||||
Upstreams to [Blocky](https://docs.alexlebens.dev/applications/blocky/) for external DNS queries and also to the [Tailscale](https://docs.alexlebens.dev/applications/tailscale-operator/) DNS server for Tailnet access.
|
||||
|
||||
Deploys as part of the Talos upgrades, but managed by Helm chart for the above custom configuration.
|
||||
|
||||
@@ -13,3 +13,13 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/dawarich
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
Alternative to Google Locations, does tracking using an Android app to provide location history.
|
||||
|
||||
# Notes
|
||||
|
||||
Requires the provided Android app for tracking.
|
||||
|
||||
Need to import Google Location history
|
||||
|
||||
@@ -13,3 +13,11 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/democratic-csi-synology-iscsi
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
Storage provider for iSCSI block devices from the NAS.
|
||||
|
||||
# Notes
|
||||
|
||||
Used for applications that need to store a lot of data, but not over the NFS connection. Examples include metrics and logging storage.
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
---
|
||||
title: Descheduler
|
||||
description: Dependency Track is an intelligent Component Analysis platform that allows organizations to identify and reduce risk in the software supply chain.
|
||||
hero:
|
||||
tagline: Dependency Track is an intelligent Component Analysis platform that allows organizations to identify and reduce risk in the software supply chain.
|
||||
image:
|
||||
file: https://avatars.githubusercontent.com/u/40258585
|
||||
actions:
|
||||
- text: Source
|
||||
link: https://github.com/DependencyTrack/dependency-track
|
||||
icon: right-arrow
|
||||
- text: Deployment Chart
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/dependency-track
|
||||
icon: right-arrow
|
||||
---
|
||||
@@ -13,3 +13,15 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/descheduler
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
import { Aside } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside type="tip">Has an internal [Grafana Dashboard](https://grafana.alexlebens.net/goto/afit9jt9odji8a?orgId=1).</Aside>
|
||||
|
||||
# Purpose
|
||||
|
||||
Automated service that balances pods across the nodes according to configuration.
|
||||
|
||||
# Notes
|
||||
|
||||
Mostly used to balance number of pods. Current limit is set to 200 which is nearly twice the defaults, but this can sometimes be met during reboots during upgrades as pods are evicted. Then this will balance out one all nodes are healthy again.
|
||||
|
||||
@@ -13,3 +13,11 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/directus
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
Content Management System tightly coupled to [my personal site](https://docs.alexlebens.dev/applications/site-profile/).
|
||||
|
||||
# Notes
|
||||
|
||||
Most information is stored here and accessed at build time. Webhook setup so when I publish a blog post here it will initiate a new build of the image.
|
||||
|
||||
@@ -13,3 +13,11 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/elastic-operator
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
Operator to deploy and manage Elasticsearch instances.
|
||||
|
||||
# Notes
|
||||
|
||||
Easier to manage then just deploying Helm Charts. Mostly used for [TubeArchivist](https://docs.alexlebens.dev/applications/tubearchivist/).
|
||||
|
||||
@@ -13,3 +13,15 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/element-web
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
import { Aside } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside>This app has public facing endpoint, at [chat.alexlebens.dev](https://chat.alexlebens.dev)</Aside>
|
||||
|
||||
# Purpose
|
||||
|
||||
Front end web client for Matrix servers.
|
||||
|
||||
# Notes
|
||||
|
||||
Provides front end for [Matrix-Synapse](https://docs.alexlebens.dev/applications/matrix-synapse/)
|
||||
|
||||
@@ -13,3 +13,11 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/eraser
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
Automatic service that cleans up local caches of images.
|
||||
|
||||
# Notes
|
||||
|
||||
Removes all non running images. This does cause a startup delay, but [Harbor](https://docs.alexlebens.dev/applications/harbor/) is configured as a generic pull through cache, so pulls for new images should be quick.
|
||||
|
||||
@@ -13,3 +13,11 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/excalidraw
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
Used to make diagrams and other sketches.
|
||||
|
||||
# Notes
|
||||
|
||||
Mostly used in blog posts and documentation.
|
||||
|
||||
@@ -13,3 +13,15 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/external-dns
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
import { Aside } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside type="tip">Has an internal [Grafana Dashboard](https://grafana.alexlebens.net/goto/afit9l1ay5qm8c?orgId=1).</Aside>
|
||||
|
||||
# Purpose
|
||||
|
||||
Makes DNS entries of Kubernetes resources into an external DNS provider.
|
||||
|
||||
# Notes
|
||||
|
||||
Blocky can't be configured this way, so I am exploring other options to use this automation. But it is currently setup to configure the Ubiquity devices.
|
||||
|
||||
@@ -13,3 +13,15 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/external-secrets
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
import { Aside } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside type="tip">Has an internal [Grafana Dashboard](https://grafana.alexlebens.net/goto/cfit9lr0c2e4ga?orgId=1).</Aside>
|
||||
|
||||
# Purpose
|
||||
|
||||
Very useful, decalarative way to make Kubernetes Secrets from an external provider.
|
||||
|
||||
# Notes
|
||||
|
||||
Secrets come from [Vault](https://docs.alexlebens.dev/applications/vault/).
|
||||
|
||||
@@ -13,3 +13,15 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/foldergram
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
import { Aside } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside>This app has public facing endpoint, at [art.alexlebens.dev](https://art.alexlebens.dev)</Aside>
|
||||
|
||||
# Purpose
|
||||
|
||||
View pictures I have collected that are not photos I have taken myself.
|
||||
|
||||
# Notes
|
||||
|
||||
Setup to provide all the collections of public domain images I have. Mostly from various art museums.
|
||||
|
||||
@@ -13,3 +13,15 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/freshrss
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
import { Aside } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside>This app has public facing endpoint, at [rss.alexlebens.dev](https://rss.alexlebens.dev)</Aside>
|
||||
|
||||
# Purpose
|
||||
|
||||
RSS reader for various news sites as well as software releases.
|
||||
|
||||
# Notes
|
||||
|
||||
A little finicky to setup, predates popular use of containers, but still functions quite well. I mostly use it with an Android app.
|
||||
|
||||
@@ -13,3 +13,21 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/garage
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
import { Aside } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside type="tip">Has an internal [Grafana Dashboard](https://grafana.alexlebens.net/goto/cfit8jm3mwk5cd?orgId=1).</Aside>
|
||||
|
||||
# Purpose
|
||||
|
||||
Clustered S3 storage provider.
|
||||
|
||||
# Notes
|
||||
|
||||
Considering moving to the [operator](https://github.com/rajsinghtech/garage-operator), but currently deploys as chart.
|
||||
|
||||
Backing storage comes from [iSCSI](https://docs.alexlebens.dev/applications/democratic-csi-synology-iscsi/).
|
||||
|
||||
Primary endpoint for most S3 targets, alongside PiBox and Digital Ocean.
|
||||
|
||||
[Rclone](https://docs.alexlebens.dev/applications/rclone/) handles any kind of syncing to the other endpoints as needed.
|
||||
|
||||
@@ -13,3 +13,15 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/gatus
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
import { Aside } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside type="tip">Has an internal [Grafana Dashboard](https://grafana.alexlebens.net/goto/bfit9mmwvmqrkf?orgId=1).</Aside>
|
||||
|
||||
# Purpose
|
||||
|
||||
Uptime and down notifications for all endpoints, both local and public.
|
||||
|
||||
# Notes
|
||||
|
||||
All declarative configuration, will end notifications using [ntfy](https://docs.alexlebens.dev/applications/ntfy/).
|
||||
|
||||
@@ -13,3 +13,11 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/generic-device-plugin
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
Plugin used to give devices to pods, specifically tun devices for networking.
|
||||
|
||||
# Notes
|
||||
|
||||
Used by recomendation in [Tailscale Docs](https://docs.siderolabs.com/kubernetes-guides/advanced-guides/device-plugins).
|
||||
|
||||
@@ -13,3 +13,19 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/gitea
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
import { Aside } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside>This app has public facing endpoint, at [gitea.alexlebens.dev](https://gitea.alexlebens.dev)</Aside>
|
||||
|
||||
<Aside>This collects analytics and sent to Rybbit at [rybbit.alexlebens.dev](https://rybbit.alexlebens.dev/)</Aside>
|
||||
|
||||
<Aside type="tip">Has an internal [Grafana Dashboard](https://grafana.alexlebens.net/goto/dfit89k7khk3kc?orgId=1).</Aside>
|
||||
|
||||
# Purpose
|
||||
|
||||
Git repoistory for storing all my code.
|
||||
|
||||
# Notes
|
||||
|
||||
Primary code repo, repositories set to replicate to a PiBox as well as Github for a layer of backup.
|
||||
|
||||
@@ -13,3 +13,15 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/grafana-operator
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
import { Aside } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside type="tip">Has an internal [Grafana Dashboard](https://grafana.alexlebens.net/goto/ffit9nnrapou8d?orgId=1).</Aside>
|
||||
|
||||
# Purpose
|
||||
|
||||
Operator to declaratively make Grafana dashboards.
|
||||
|
||||
# Notes
|
||||
|
||||
Uses the dashboard json in [grafana-dashboards](https://gitea.alexlebens.dev/alexlebens/grafana-dashboards].
|
||||
|
||||
@@ -13,3 +13,13 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/grimmory
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
Store and provide books.
|
||||
|
||||
# Notes
|
||||
|
||||
Used to be called 'Booklore'.
|
||||
|
||||
Only app that uses [MariaDB](https://docs.alexlebens.dev/applications/mariadb-operator/).
|
||||
|
||||
@@ -13,3 +13,17 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/harbor
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
import { Aside } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside type="tip">Has an internal [Grafana Dashboard](https://grafana.alexlebens.net/goto/afit9ofndecjkd?orgId=1).</Aside>
|
||||
|
||||
# Purpose
|
||||
|
||||
Pull through cache and registry for personal images built in Gitea.
|
||||
|
||||
# Notes
|
||||
|
||||
Talos is configured to direct pulls to Docker, Github, and others to Harbor first. Stores these images as a cache to avoid rate limiting, primarily by Docker hub.
|
||||
|
||||
Any of my own images also get stored here to deploy.
|
||||
|
||||
@@ -13,3 +13,11 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/headlamp
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
Dashboard for Kubernetes.
|
||||
|
||||
# Notes
|
||||
|
||||
I also use the desktop app which is identical.
|
||||
|
||||
@@ -13,3 +13,11 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/home-assistant
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
Home automation, connecting to various IoT devices through Zigbee, Matter, etc.
|
||||
|
||||
# Notes
|
||||
|
||||
Currently unused.
|
||||
|
||||
@@ -13,3 +13,11 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/homepage
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
Provides links and status dots for all deployed apps.
|
||||
|
||||
# Notes
|
||||
|
||||
Do not set to RollingUpdate or use multiple replicas. Has some kind of loading issue when doing so.
|
||||
|
||||
@@ -13,3 +13,11 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/houndarr
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
Manages automatic upgrades for content in the Servarr apps.
|
||||
|
||||
# Notes
|
||||
|
||||
Set and forget, runs as a service in the background.
|
||||
|
||||
@@ -13,3 +13,15 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/immich
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
import { Aside } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside type="tip">Has an internal [Grafana Dashboard](https://grafana.alexlebens.net/goto/bfit80bb45csgb?orgId=1).</Aside>
|
||||
|
||||
# Purpose
|
||||
|
||||
Alternative to Google Photos, stores all my photos.
|
||||
|
||||
# Notes
|
||||
|
||||
Photos are stored internally, though a full copy is also kept on the NAS.
|
||||
|
||||
@@ -13,3 +13,11 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/intel-device-plugin
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
Used to give pods access to host GPUs. Primarily for video and the QuickSync feature.
|
||||
|
||||
# Notes
|
||||
|
||||
Just works in the background.
|
||||
|
||||
@@ -13,3 +13,17 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/jellyfin
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
import { Aside } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside type="tip">Has an internal [Grafana Dashboard](https://grafana.alexlebens.net/goto/afit8116thywwd?orgId=1).</Aside>
|
||||
|
||||
# Purpose
|
||||
|
||||
Provides video, such as movies and shows.
|
||||
|
||||
# Notes
|
||||
|
||||
A little finicky and not as polished as Plex, but open source and supports plugins.
|
||||
|
||||
Planned migration to PostgreSQL when feature is supported.
|
||||
|
||||
@@ -13,3 +13,11 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/jellystat
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
Monitors and provides stats for Jellyfin.
|
||||
|
||||
# Notes
|
||||
|
||||
Mostly just runs in the background. Stats for size of library and most recently added are the most useful. Jellyfin's 'recently added' doesn't work that well.
|
||||
|
||||
@@ -13,3 +13,17 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/karakeep
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
import { Aside } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside>This app has public facing endpoint, at [karakeep.alexlebens.dev](https://karakeep.alexlebens.dev)</Aside>
|
||||
|
||||
# Purpose
|
||||
|
||||
Organizes and tags bookmarks.
|
||||
|
||||
# Notes
|
||||
|
||||
Used to be called 'Hoarder', new name is better.
|
||||
|
||||
Connect to [Ollama](https://docs.alexlebens.dev/applications/ollama/) for using AI to generate the tags.
|
||||
|
||||
@@ -13,3 +13,14 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/kiwix
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
Local copies of various wikis and other datasets.
|
||||
|
||||
# Notes
|
||||
|
||||
Full backups, including images, of Wikipedia.
|
||||
|
||||
[qBittorrent](https://docs.alexlebens.dev/applications/qbittorrent/) has a category that will download the Kiwix files into the directory it reads from.
|
||||
|
||||
|
||||
@@ -13,3 +13,13 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/komodo
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
Manages deployments of single nodes hosts with docker compose stacks.
|
||||
|
||||
# Notes
|
||||
|
||||
Manual setup, but follows Gitops with webhook triggered updates from Gitea.
|
||||
|
||||
Compose files are placed in [infrastructure](https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/hosts) under the hosts dir.
|
||||
|
||||
@@ -13,3 +13,21 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/kube-prometheus-stack
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
import { Aside } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside type="tip">Has an internal [Grafana Dashboard](https://grafana.alexlebens.net/goto/dfit8q7ooq7eod?orgId=1).</Aside>
|
||||
|
||||
<Aside type="tip">AirGradient has an internal [Grafana Dashboard](https://grafana.alexlebens.net/goto/ffit86ggcrxtse?orgId=1).</Aside>
|
||||
|
||||
# Purpose
|
||||
|
||||
Community managed and combined stack for Prometheus metrics. Also includes alerting.
|
||||
|
||||
# Notes
|
||||
|
||||
Metrics are stored on iSCSI, retention is 45 days.
|
||||
|
||||
Sends alert notifications through [ntfy](https://docs.alexlebens.dev/applications/ntfy/).
|
||||
|
||||
Scrapping for targets outside of cluster has their ServiceMonitors placed in this chart, such as for IoT devices.
|
||||
|
||||
@@ -13,3 +13,11 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/kubelet-serving-cert-approver
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
Service that runs in the background, approves certificates generated by the kubelet.
|
||||
|
||||
# Notes
|
||||
|
||||
Mostly just used for cluster first install or when certs are renewed to ensure access.
|
||||
|
||||
@@ -13,3 +13,11 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/kubernetes-cloudflare-ddns
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
Updates the IP address for Cloudflare domains.
|
||||
|
||||
# Notes
|
||||
|
||||
Cloudflare manages the domains for alexlebens.net, this ensures that the IP address the domain points to is the one assigned by the ISP to the home/network device.
|
||||
|
||||
@@ -13,3 +13,11 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/languagetool
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
Provides higher level grammer and spell checking service.
|
||||
|
||||
# Notes
|
||||
|
||||
Used by Zettlr and a web browser extension.
|
||||
|
||||
@@ -13,3 +13,11 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/libation
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
Monitors and downloads copies of audiobooks from Audible.
|
||||
|
||||
# Notes
|
||||
|
||||
Downloads into the NAS directory that [Audiobookshelf](https://docs.alexlebens.dev/applications/audiobookshelf) reads from.
|
||||
|
||||
@@ -13,3 +13,13 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/lidarr
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
Servarr app that manages the metadata and organization of music.
|
||||
|
||||
# Notes
|
||||
|
||||
Connects to [qbittorrent](https://docs.alexlebens.dev/applications/qbittorrent), [slskd](https://docs.alexlebens.dev/applications/slskd) with support from [prowlarr](https://docs.alexlebens.dev/applications/prowlarr) and [unpackerr](https://docs.alexlebens.dev/applications/unpackerr).
|
||||
|
||||
Runs on nightly branch to integrate plugins.
|
||||
|
||||
@@ -13,3 +13,11 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/local-path-provisioner
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
Storage for paths on the local node's NVME drive. When high performance, but non redundant storage is required.
|
||||
|
||||
# Notes
|
||||
|
||||
Primarily used by the databases, PostgreSQL and MariaDB, since they have internal clustering and increasing their read/write speeds is very beneficial.
|
||||
|
||||
@@ -13,3 +13,19 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/loki
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
import { Aside } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside type="tip">Has an internal [Grafana Dashboard](https://grafana.alexlebens.net/goto/afit8khiifnr4b?orgId=1).</Aside>
|
||||
|
||||
# Purpose
|
||||
|
||||
Collects logs from pods and makes them availabile in Grafana.
|
||||
|
||||
# Notes
|
||||
|
||||
Uses iSCSI for log storage.
|
||||
|
||||
Generally unused as I inspect most logs in [ArgoCD](https://docs.alexlebens.dev/applications/argo-cd/) or [Headlamp](https://docs.alexlebens.dev/applications/headlamp/). But this does keep them for longer rentention.
|
||||
|
||||
Maybe someday will integrate AI from [Ollama](https://docs.alexlebens.dev/applications/ollama/) to monitor and report on logs.
|
||||
|
||||
@@ -13,3 +13,13 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/mariadb-operator
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
Operator that manages deployments of MariaDB.
|
||||
|
||||
# Notes
|
||||
|
||||
Very durable, survives and heals from several node outages.
|
||||
|
||||
Only really used for [Grimmory](https://docs.alexlebens.dev/applications/grimmory) though.
|
||||
|
||||
@@ -13,3 +13,17 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/matrix-synapse
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
import { Aside } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside>This app has public facing endpoint, at [matrix.alexlebens.dev](https://matrix.alexlebens.dev)</Aside>
|
||||
|
||||
# Purpose
|
||||
|
||||
Secure and encrypted chat service.
|
||||
|
||||
# Notes
|
||||
|
||||
Very difficult to maintain, especially with encryption.
|
||||
|
||||
Used mostly for bridging Discord and WhatsApp.
|
||||
|
||||
@@ -13,3 +13,11 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/mediaLyze
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
Monitors and provides stats for media libraries.
|
||||
|
||||
# Notes
|
||||
|
||||
Kind of neat to see the stats, but haven't found much purpose outside of curiosity.
|
||||
|
||||
@@ -13,3 +13,11 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/metrics-server
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
Core Kubernetes service that provides basic metrics on cpu, memory, and disk that is used by Kubernetes for tooling such as scaling. Also what is seen in [Headlamp](https://docs.alexlebens.dev/applications/headlamp) for live stats.
|
||||
|
||||
# Notes
|
||||
|
||||
Like some other services, it happily runs in the background without trouble.
|
||||
|
||||
@@ -13,3 +13,11 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/music-grabber
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
An alternative to [yubal](https://docs.alexlebens.dev/applications/yubal), it collects music as directed.
|
||||
|
||||
# Notes
|
||||
|
||||
Unused currently.
|
||||
|
||||
@@ -13,3 +13,17 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/navidrome
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
import { Aside } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside type="tip">Has an internal [Grafana Dashboard](https://grafana.alexlebens.net/goto/bfit82l8b0gsgf?orgId=1).</Aside>
|
||||
|
||||
# Purpose
|
||||
|
||||
Music server that uses the subsonic protocol.
|
||||
|
||||
# Notes
|
||||
|
||||
Chart also deploys a webclient of [Feishin](https://github.com/jeffvli/feishin), but I mostly use the desktop app. On Android I use [Symfonium](https://symfonium.app/).
|
||||
|
||||
While I can use [Jellyfin](https://docs.alexlebens.dev/applications/jellyfin) for music, I prefer separation for dedicated media types.
|
||||
|
||||
@@ -13,3 +13,11 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/node-feature-discovery
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
Background service that adds labels to nodes based on detected hardware features.
|
||||
|
||||
# Notes
|
||||
|
||||
Used in conjunction with nodeAffinity and other scheduling configuration to assign pods to the capable nodes.
|
||||
|
||||
@@ -13,3 +13,15 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/ntfy
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
import { Aside } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside type="tip">Has an internal [Grafana Dashboard](https://grafana.alexlebens.net/goto/cfit8bbhovsw0d?orgId=1).</Aside>
|
||||
|
||||
# Purpose
|
||||
|
||||
Notification service based on a Pub/Sub model.
|
||||
|
||||
# Notes
|
||||
|
||||
Very useful service that sends notifications to my phone and is widely addopted by a lot of other apps or has bridging support such as through [apprise](https://github.com/caronc/apprise).
|
||||
|
||||
@@ -13,3 +13,15 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/ollama
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
Local AI servers.
|
||||
|
||||
# Notes
|
||||
|
||||
[Open WebUI](https://github.com/open-webui/open-webui) frontend.
|
||||
|
||||
Configured mostly to run the Gemma models.
|
||||
|
||||
Tailscale connction to the desktop GPU for larger model processing.
|
||||
|
||||
@@ -13,3 +13,11 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/omni-tools
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
A variety of useful tools for random things. No need to search obscure websites or download various different apps.
|
||||
|
||||
# Notes
|
||||
|
||||
The hardest part is remembering the things it can do. Images, video, audio, text, math, etc.
|
||||
|
||||
@@ -13,3 +13,17 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/outline
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
import { Aside } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside>This app has public facing endpoint, at [outline.alexlebens.dev](https://outline.alexlebens.dev)</Aside>
|
||||
|
||||
# Purpose
|
||||
|
||||
A more featured version of a wiki with similarities to Notion.
|
||||
|
||||
# Notes
|
||||
|
||||
Used to use Outline in before transitioning to this docs site.
|
||||
|
||||
Backup in case I want to migrate away from Capacities. I prefer the object types in Capacities, but can work too.
|
||||
|
||||
@@ -13,3 +13,17 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/paperless-ngx
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
Documentation organizer.
|
||||
|
||||
# Notes
|
||||
|
||||
Designed to scan in and run OCR on files, as well as upload digital documents.
|
||||
|
||||
Based around tagging instead of folders.
|
||||
|
||||
Haven't begun to use, but I expect it to be useful.
|
||||
|
||||
Need to ensure backups are good and proper first.
|
||||
|
||||
@@ -13,3 +13,13 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/plex
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
Closed source media provider.
|
||||
|
||||
# Notes
|
||||
|
||||
Very easy to use, so kept running in case of sharing to others.
|
||||
|
||||
Primarily migrated over to [Jellyfin](https://docs.alexlebens.dev/applications/jellyfin).
|
||||
|
||||
@@ -13,3 +13,17 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/postiz
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
import { Aside } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside>This app has public facing endpoint, at [postiz.alexlebens.dev](https://postiz.alexlebens.dev)</Aside>
|
||||
|
||||
# Purpose
|
||||
|
||||
Automates social media posting.
|
||||
|
||||
# Notes
|
||||
|
||||
So dumb and complex to setup, has hard dependency on [Temporal](https://github.com/temporalio).
|
||||
|
||||
Haven't begun to use, but want to connect to automate posting of my blog.
|
||||
|
||||
@@ -13,3 +13,11 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/prowlarr
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
Manages and automates configuration of trackers for the Servarr instances.
|
||||
|
||||
# Notes
|
||||
|
||||
Setup once here and all the others work.
|
||||
|
||||
@@ -13,3 +13,17 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/qbittorrent
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
import { Aside } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside type="tip">Has an internal [Grafana Dashboard](https://grafana.alexlebens.net/goto/ffit8c6tqrxfkc?orgId=1).</Aside>
|
||||
|
||||
# Purpose
|
||||
|
||||
Main torrent client.
|
||||
|
||||
# Notes
|
||||
|
||||
Runs behind [gluetun](https://github.com/qdm12/gluetun).
|
||||
|
||||
Both [qbit-manage](https://github.com/StuffAnThings/qbit_manage) and [qui](https://github.com/autobrr/qui) running alongside to automate management of the files. Both of these have dramatically reduced time spent maintaining this.
|
||||
|
||||
@@ -22,3 +22,19 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/radarr-standup
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
import { Aside } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside type="tip">Has an internal [Grafana Dashboard](https://grafana.alexlebens.net/goto/cfit83kzzx6v4a?orgId=1).</Aside>
|
||||
|
||||
# Purpose
|
||||
|
||||
Manages metadata for movies.
|
||||
|
||||
# Notes
|
||||
|
||||
Should rarely be access, manage through [Seerr](https://docs.alexlebens.dev/applications/seerr/)
|
||||
|
||||
Connects to [qbittorrent](https://docs.alexlebens.dev/applications/qbittorrent) with support from [prowlarr](https://docs.alexlebens.dev/applications/prowlarr) and [unpackerr](https://docs.alexlebens.dev/applications/unpackerr).
|
||||
|
||||
4 separate instances for different media types.
|
||||
|
||||
@@ -13,3 +13,11 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/rclone
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
Syncs data in S3 buckets.
|
||||
|
||||
# Notes
|
||||
|
||||
Syncs bucket from in cluster [Garage](https://docs.alexlebens.dev/applications/garage/) to remote or Digital Ocean.
|
||||
|
||||
@@ -13,3 +13,11 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/reloader
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
Simple service that will ensure a restart of services if their mounted ConfigMaps change.
|
||||
|
||||
# Notes
|
||||
|
||||
Used by a few apps, such as homepage where its entirely configured by ConfigMap.
|
||||
|
||||
@@ -13,3 +13,21 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/rook-ceph
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
import { Aside } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside type="tip">Has an internal [Ceph Dashboard](https://ceph.alexlebens.net/).</Aside>
|
||||
|
||||
<Aside type="tip">Has an internal [Grafana Dashboard](https://grafana.alexlebens.net/goto/afit8gbo47pc0b?orgId=1).</Aside>
|
||||
|
||||
# Purpose
|
||||
|
||||
Clustered storage that runs on the SSDs in cluster to provide durable and reliable block and filesystem volumes.
|
||||
|
||||
# Notes
|
||||
|
||||
Runs [Ceph](https://ceph.io/en/) underneath and managed by Rook pods.
|
||||
|
||||
Ensure this system is healthy before any upgrades and restarts.
|
||||
|
||||
One of the main pressures to increase node count to expand host and disk count of this cluster for more space as well as durabiliy during node outages.
|
||||
|
||||
@@ -13,3 +13,15 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/roundcube
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
Internal client for email.
|
||||
|
||||
# Notes
|
||||
|
||||
Connected to [Stalwart](https://docs.alexlebens.dev/applications/stalwart/).
|
||||
|
||||
Generally unsued as I have not configured any services for sending email.
|
||||
|
||||
This is NOT used for external email, such as gmail.
|
||||
|
||||
@@ -13,3 +13,15 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/rybbit
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
import { Aside } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside>This app has public facing endpoint, at [rybbit.alexlebens.dev](https://rybbit.alexlebens.dev)</Aside>
|
||||
|
||||
# Purpose
|
||||
|
||||
Analytics service for my websites.
|
||||
|
||||
# Notes
|
||||
|
||||
Pretty dashboard to let me know that literally no one looks at my sites.
|
||||
|
||||
@@ -13,3 +13,15 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/s3-exporter
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
import { Aside } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside type="tip">Has an internal [Grafana Dashboard](https://grafana.alexlebens.net/goto/dfit8d7qtq4u8e?orgId=1).</Aside>
|
||||
|
||||
# Purpose
|
||||
|
||||
Provides metrics of my S3 buckets.
|
||||
|
||||
# Notes
|
||||
|
||||
Mostly to monitor storage consumption.
|
||||
|
||||
@@ -7,9 +7,21 @@ hero:
|
||||
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/searxng.webp
|
||||
actions:
|
||||
- text: Source
|
||||
link: https://github.com/molu8bits/s3bucket_exporter
|
||||
link: https://github.com/searxng/searxng
|
||||
icon: right-arrow
|
||||
- text: Deployment Chart
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/searxng
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
Web search with privacy features.
|
||||
|
||||
# Notes
|
||||
|
||||
Connected to Firefox as my default search engine.
|
||||
|
||||
Also connected to Ollama for AI to conduct web search.
|
||||
|
||||
Updates based on latest digest.
|
||||
|
||||
@@ -13,3 +13,15 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/seerr
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
Frontend to manage media requests for Servarr.
|
||||
|
||||
# Notes
|
||||
|
||||
Recently updated as a merger from Overseer and Jellyseer.
|
||||
|
||||
Pending integration of [Lidarr](https://docs.alexlebens.dev/applications/lidarr/), currently just for the [Radarr](https://docs.alexlebens.dev/applications/radarr/) and [Sonarr](https://docs.alexlebens.dev/applications/sonarr/) services.
|
||||
|
||||
Credentials are from [Jellyfin](https://docs.alexlebens.dev/applications/jellyfin/).
|
||||
|
||||
@@ -13,3 +13,13 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/shelfmark
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
Collection of books.
|
||||
|
||||
# Notes
|
||||
|
||||
Uploads to [Grimmory](https://docs.alexlebens.dev/applications/grimmory/) and [Audiobookshelf](https://docs.alexlebens.dev/applications/audiobookshelf/)
|
||||
|
||||
Gets help from [qBittorrent](https://docs.alexlebens.dev/applications/qbittorrent/)
|
||||
|
||||
@@ -13,3 +13,15 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/shelly-plug
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
import { Aside } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside type="tip">Has an internal [Grafana Dashboard](https://grafana.alexlebens.net/goto/afit87jux375sa?orgId=1).</Aside>
|
||||
|
||||
# Purpose
|
||||
|
||||
Metrics from the Shelly Plug.
|
||||
|
||||
# Notes
|
||||
|
||||
Can provide historical wattage use of the shelly plug which the entire homelab's electricity passes through.
|
||||
|
||||
@@ -13,3 +13,21 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/site-documentation
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
import { Aside } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside>This app has public facing endpoint, at [docs.alexlebens.dev](https://docs.alexlebens.dev)</Aside>
|
||||
|
||||
<Aside>This collects analytics and sent to Rybbit at [rybbit.alexlebens.dev](https://rybbit.alexlebens.dev/)</Aside>
|
||||
|
||||
# Purpose
|
||||
|
||||
Hosts documentation for the cluster.
|
||||
|
||||
# Notes
|
||||
|
||||
It this very site!
|
||||
|
||||
Built with Astro and Starlight.
|
||||
|
||||
Documentation is written in MDX.
|
||||
|
||||
@@ -13,3 +13,19 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/site-profile
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
import { Aside } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside>This app has public facing endpoint, at [www.alexlebens.dev](https://www.alexlebens.dev)</Aside>
|
||||
|
||||
<Aside>This collects analytics and sent to Rybbit at [rybbit.alexlebens.dev](https://rybbit.alexlebens.dev/)</Aside>
|
||||
|
||||
# Purpose
|
||||
|
||||
Profile and blog website
|
||||
|
||||
# Notes
|
||||
|
||||
Built with Astro.
|
||||
|
||||
Connects to [Directus](https://docs.alexlebens.dev/applications/directus) during build for content.
|
||||
|
||||
29
src/content/docs/applications/site-saralebens.mdx
Normal file
29
src/content/docs/applications/site-saralebens.mdx
Normal file
@@ -0,0 +1,29 @@
|
||||
---
|
||||
title: Site Sara Lebens
|
||||
description: Personal site made with Astro for information about Sara Lebens.
|
||||
hero:
|
||||
tagline: Personal site made with Astro for information about Sara Lebens.
|
||||
image:
|
||||
file: https://web-assets-3bfcb5585cbd63dc365d32a3.nyc3.cdn.digitaloceanspaces.com/alexlebens-net/logo-new-round.svg
|
||||
actions:
|
||||
- text: Source
|
||||
link: https://gitea.alexlebens.dev/alexlebens/site-saralebens
|
||||
icon: right-arrow
|
||||
- text: Deployment Chart
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/site-saralebens
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
import { Aside } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside>This app has public facing endpoint, at [www.saralebens.com](https://www.saralebens.com)</Aside>
|
||||
|
||||
<Aside>This collects analytics and sent to Rybbit at [rybbit.alexlebens.dev](https://rybbit.alexlebens.dev/)</Aside>
|
||||
|
||||
# Purpose
|
||||
|
||||
Profile website for Sara Lebens.
|
||||
|
||||
# Notes
|
||||
|
||||
Built with Astro.
|
||||
@@ -13,3 +13,11 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/slskd
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
Discovers music.
|
||||
|
||||
# Notes
|
||||
|
||||
Works in collaboration with [Lidarr](https://docs.alexlebens.dev/applications/lidarr).
|
||||
|
||||
@@ -13,3 +13,11 @@ hero:
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/snapshot-controller
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
Controls snapshots of storage.
|
||||
|
||||
# Notes
|
||||
|
||||
[Rook Ceph](https://docs.alexlebens.dev/applications/rook-ceph) supports snapshots and is used by [Volsync](https://docs.alexlebens.dev/applications/volsync) for creating backups.
|
||||
|
||||
@@ -12,10 +12,26 @@ hero:
|
||||
- text: Deployment Chart
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/sonarr
|
||||
icon: right-arrow
|
||||
- text: Deployment Chart
|
||||
- text: Deployment Chart 4K
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/sonarr-4k
|
||||
icon: right-arrow
|
||||
- text: Deployment Chart
|
||||
- text: Deployment Chart Anime
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/sonarr-anime
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
import { Aside } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside type="tip">Has an internal [Grafana Dashboard](https://grafana.alexlebens.net/goto/cfit84mdyfldsd?orgId=1).</Aside>
|
||||
|
||||
# Purpose
|
||||
|
||||
Manages metadata for tv shows.
|
||||
|
||||
# Notes
|
||||
|
||||
Should rarely be access, manage through [Seerr](https://docs.alexlebens.dev/applications/seerr/)
|
||||
|
||||
Connects to [qbittorrent](https://docs.alexlebens.dev/applications/qbittorrent) with support from [prowlarr](https://docs.alexlebens.dev/applications/prowlarr) and [unpackerr](https://docs.alexlebens.dev/applications/unpackerr).
|
||||
|
||||
3 separate instances for different media types.
|
||||
|
||||
28
src/content/docs/applications/speedtest-exporter.mdx
Normal file
28
src/content/docs/applications/speedtest-exporter.mdx
Normal file
@@ -0,0 +1,28 @@
|
||||
---
|
||||
title: Speedtest Exporter
|
||||
description: Simple Speedtest exporter for Prometheus written in Python using the official CLI from Ookla.
|
||||
hero:
|
||||
tagline: Simple Speedtest exporter for Prometheus written in Python using the official CLI from Ookla.
|
||||
image:
|
||||
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/speedtest.webp
|
||||
actions:
|
||||
- text: Source
|
||||
link: https://github.com/MiguelNdeCarvalho/speedtest-exporter
|
||||
icon: right-arrow
|
||||
- text: Deployment Chart
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/speedtest-exporter
|
||||
icon: right-arrow
|
||||
---
|
||||
import { Aside } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside type="danger">Do not run this too frequently as it consumes large amounts of data to run the test.</Aside>
|
||||
|
||||
<Aside type="tip">Has an internal [Grafana Dashboard](https://grafana.alexlebens.net/goto/afit9pt05wa2of?orgId=1).</Aside>
|
||||
|
||||
# Purpose
|
||||
|
||||
Tests internet speed and generates metrics.
|
||||
|
||||
# Notes
|
||||
|
||||
Exports metrics to Prometheus.
|
||||
23
src/content/docs/applications/stack.mdx
Normal file
23
src/content/docs/applications/stack.mdx
Normal file
@@ -0,0 +1,23 @@
|
||||
---
|
||||
title: Stack
|
||||
description: App of Apps Chart to deploy infrastructure by ArgoCD.
|
||||
hero:
|
||||
tagline: App of Apps Chart to deploy infrastructure by ArgoCD.
|
||||
image:
|
||||
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/argo-cd.webp
|
||||
actions:
|
||||
- text: Source
|
||||
link: https://github.com/argoproj/argo-cd
|
||||
icon: right-arrow
|
||||
- text: Deployment Chart
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/stack
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
[App of Apps](https://argo-cd.readthedocs.io/en/stable/operator-manual/declarative-setup/#app-of-apps) Application to manage deployments through [ArgoCD](https://docs.alexlebens.dev/applications/argo-cd/).
|
||||
|
||||
# Notes
|
||||
|
||||
Be very, very careful making changes. Consider this the 'root' for all deployments.
|
||||
25
src/content/docs/applications/stalwart.mdx
Normal file
25
src/content/docs/applications/stalwart.mdx
Normal file
@@ -0,0 +1,25 @@
|
||||
---
|
||||
title: Stalwart
|
||||
description: All-in-one Mail & Collaboration server. Secure, scalable and fluent in every protocol (IMAP, JMAP, SMTP, CalDAV, CardDAV, WebDAV).
|
||||
hero:
|
||||
tagline: All-in-one Mail & Collaboration server. Secure, scalable and fluent in every protocol (IMAP, JMAP, SMTP, CalDAV, CardDAV, WebDAV).
|
||||
image:
|
||||
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/stalwart.webp
|
||||
actions:
|
||||
- text: Source
|
||||
link: https://github.com/stalwartlabs/mail-server
|
||||
icon: right-arrow
|
||||
- text: Deployment Chart
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/stalwart
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
Email server.
|
||||
|
||||
# Notes
|
||||
|
||||
Configuration seems to be only through UI.
|
||||
|
||||
Not currently used.
|
||||
23
src/content/docs/applications/tailscale-operator.mdx
Normal file
23
src/content/docs/applications/tailscale-operator.mdx
Normal file
@@ -0,0 +1,23 @@
|
||||
---
|
||||
title: Tailscale Operator
|
||||
description: The easiest, most secure way to use WireGuard and 2FA.
|
||||
hero:
|
||||
tagline: The easiest, most secure way to use WireGuard and 2FA.
|
||||
image:
|
||||
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/tailscale-light.webp
|
||||
actions:
|
||||
- text: Source
|
||||
link: https://github.com/tailscale/tailscale
|
||||
icon: right-arrow
|
||||
- text: Deployment Chart
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/tailscale-operator
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
Operator to manage [Tailscale](https://tailscale.com/) inside the cluster.
|
||||
|
||||
# Notes
|
||||
|
||||
Manages the main subnet router, provides inter workload connections, allows access to the tailnet from inside the cluster, among other features.
|
||||
29
src/content/docs/applications/talos.mdx
Normal file
29
src/content/docs/applications/talos.mdx
Normal file
@@ -0,0 +1,29 @@
|
||||
---
|
||||
title: Talos
|
||||
description: Jobs to automate the maintainance of the underlying OS, Talos Linux.
|
||||
hero:
|
||||
tagline: Jobs to automate the maintainance of the underlying OS, Talos Linux.
|
||||
image:
|
||||
file: https://raw.githubusercontent.com/siderolabs/docs/3989ed11f0622252d7cee03b3ba3a3052be242d7/public/images/talos.svg
|
||||
actions:
|
||||
- text: Source
|
||||
link: https://github.com/siderolabs/talos
|
||||
icon: right-arrow
|
||||
- text: Deployment Chart
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/talos
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
import { Aside } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside type="tip">etcd has an internal [Grafana Dashboard](https://grafana.alexlebens.net/goto/efit8ig3fljb4c?orgId=1).</Aside>
|
||||
|
||||
# Purpose
|
||||
|
||||
Automated tooling for managing the host OS.
|
||||
|
||||
# Notes
|
||||
|
||||
Runs backups of the etcd database for disaster recovery.
|
||||
|
||||
Runs regular defragmentation of etcd.
|
||||
29
src/content/docs/applications/tdarr.mdx
Normal file
29
src/content/docs/applications/tdarr.mdx
Normal file
@@ -0,0 +1,29 @@
|
||||
---
|
||||
title: Tdarr
|
||||
description: Tdarr - Distributed transcode automation using FFmpeg/HandBrake + Audio/Video library analytics + video health checking.
|
||||
hero:
|
||||
tagline: Tdarr - Distributed transcode automation using FFmpeg/HandBrake + Audio/Video library analytics + video health checking.
|
||||
image:
|
||||
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/tdarr.webp
|
||||
actions:
|
||||
- text: Source
|
||||
link: https://github.com/HaveAGitGat/Tdarr
|
||||
icon: right-arrow
|
||||
- text: Deployment Chart
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/tdarr
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
import { Aside } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside type="tip">Has an internal [Grafana Dashboard](https://grafana.alexlebens.net/goto/ffit9qzig6w3ke?orgId=1).</Aside>
|
||||
|
||||
# Purpose
|
||||
|
||||
Runs healthchecks on media files.
|
||||
|
||||
# Notes
|
||||
|
||||
Need to check the error queue, sometimes there are false errors.
|
||||
|
||||
Runs the files through ffmpeg on either cpu or gpu, but gpu generates more false errors.
|
||||
27
src/content/docs/applications/traefik.mdx
Normal file
27
src/content/docs/applications/traefik.mdx
Normal file
@@ -0,0 +1,27 @@
|
||||
---
|
||||
title: Traefik
|
||||
description: Traefik (pronounced traffic) is a modern HTTP reverse proxy and load balancer that makes deploying microservices easy.
|
||||
hero:
|
||||
tagline: Traefik (pronounced traffic) is a modern HTTP reverse proxy and load balancer that makes deploying microservices easy.
|
||||
image:
|
||||
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/traefik.webp
|
||||
actions:
|
||||
- text: Source
|
||||
link: https://github.com/traefik/traefik
|
||||
icon: right-arrow
|
||||
- text: Deployment Chart
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/traefik
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
import { Aside } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside type="tip">Has an internal [Grafana Dashboard](https://grafana.alexlebens.net/goto/cfit9rqyd179cb?orgId=1).</Aside>
|
||||
|
||||
# Purpose
|
||||
|
||||
Gateway for the cluster, enables external access of the webpages for both host routing and TLS.
|
||||
|
||||
# Notes
|
||||
|
||||
Really want to swap it out for Cillium's built in Gateway implementation.
|
||||
23
src/content/docs/applications/tubearchivist.mdx
Normal file
23
src/content/docs/applications/tubearchivist.mdx
Normal file
@@ -0,0 +1,23 @@
|
||||
---
|
||||
title: Tube Archivist
|
||||
description: Your self hosted YouTube media server.
|
||||
hero:
|
||||
tagline: Your self hosted YouTube media server.
|
||||
image:
|
||||
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/tube-archivist.webp
|
||||
actions:
|
||||
- text: Source
|
||||
link: https://github.com/tubearchivist/tubearchivist
|
||||
icon: right-arrow
|
||||
- text: Deployment Chart
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/tubearchivist
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
# Purpose
|
||||
|
||||
Archives Youtube videos.
|
||||
|
||||
# Notes
|
||||
|
||||
Mostly to ensure I get to keep videos that may be deleted or removed from Youtube. Also for videos I want to save to watch locally.
|
||||
27
src/content/docs/applications/unpackerr.mdx
Normal file
27
src/content/docs/applications/unpackerr.mdx
Normal file
@@ -0,0 +1,27 @@
|
||||
---
|
||||
title: Unpackerr
|
||||
description: Extracts downloads for Radarr, Sonarr, Lidarr, Readarr, and/or a Watch folder - Deletes extracted files after import.
|
||||
hero:
|
||||
tagline: Extracts downloads for Radarr, Sonarr, Lidarr, Readarr, and/or a Watch folder - Deletes extracted files after import.
|
||||
image:
|
||||
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/unpackerr.webp
|
||||
actions:
|
||||
- text: Source
|
||||
link: https://github.com/Unpackerr/unpackerr
|
||||
icon: right-arrow
|
||||
- text: Deployment Chart
|
||||
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/unpackerr
|
||||
icon: right-arrow
|
||||
---
|
||||
|
||||
import { Aside } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside type="tip">Has an internal [Grafana Dashboard](https://grafana.alexlebens.net/goto/bfit8ehwuxwcgc?orgId=1).</Aside>
|
||||
|
||||
# Purpose
|
||||
|
||||
Unpacks files.
|
||||
|
||||
# Notes
|
||||
|
||||
Some people like to make their files bundled in a zip or tar or something. This makes those not so.
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user