Compare commits

...

2 Commits

Author SHA1 Message Date
fea5d21530 chore(deps): update dependency prettier to v3.8.2
All checks were successful
renovate/stability-days Updates have met minimum release age requirement
test-build / guarddog (pull_request) Successful in 42s
test-build / build (pull_request) Successful in 1m29s
2026-04-11 06:02:15 +00:00
d8c19f45c5 feat: add notes
All checks were successful
test-build / guarddog (push) Successful in 19s
test-build / build (push) Successful in 39s
renovate / renovate (push) Successful in 2m17s
2026-04-10 21:18:19 -05:00
29 changed files with 218 additions and 5 deletions

View File

@@ -1,6 +1,6 @@
# MIT License # 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 Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal

View File

@@ -30,7 +30,7 @@
"eslint": "10.2.0", "eslint": "10.2.0",
"eslint-config-prettier": "10.1.8", "eslint-config-prettier": "10.1.8",
"eslint-plugin-astro": "1.7.0", "eslint-plugin-astro": "1.7.0",
"prettier": "3.8.1", "prettier": "3.8.2",
"prettier-plugin-astro": "0.14.1", "prettier-plugin-astro": "0.14.1",
"prettier-plugin-tailwindcss": "0.7.2", "prettier-plugin-tailwindcss": "0.7.2",
"semantic-release": "25.0.3", "semantic-release": "25.0.3",
@@ -1369,7 +1369,7 @@
"prelude-ls": ["prelude-ls@1.2.1", "", {}, "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="], "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=="], "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=="],
@@ -2153,6 +2153,8 @@
"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=="], "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/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-package-up/type-fest": ["type-fest@4.41.0", "", {}, "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA=="],

View File

@@ -37,7 +37,7 @@
"eslint": "10.2.0", "eslint": "10.2.0",
"eslint-config-prettier": "10.1.8", "eslint-config-prettier": "10.1.8",
"eslint-plugin-astro": "1.7.0", "eslint-plugin-astro": "1.7.0",
"prettier": "3.8.1", "prettier": "3.8.2",
"prettier-plugin-astro": "0.14.1", "prettier-plugin-astro": "0.14.1",
"prettier-plugin-tailwindcss": "0.7.2", "prettier-plugin-tailwindcss": "0.7.2",
"semantic-release": "25.0.3", "semantic-release": "25.0.3",

View File

@@ -5,7 +5,7 @@
"mergeConfidence:all-badges", "mergeConfidence:all-badges",
":rebaseStalePrs" ":rebaseStalePrs"
], ],
"timezone": "US/Central", "timezone": "America/Chicago",
"labels": [], "labels": [],
"prHourlyLimit": 0, "prHourlyLimit": 0,
"prConcurrentLimit": 0, "prConcurrentLimit": 0,

View File

@@ -13,3 +13,11 @@ hero:
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/actual link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/actual
icon: right-arrow icon: right-arrow
--- ---
# Purpose
Budgeting and managing finances.
# Notes
Currently unused, need to setup bank integration or some other for of automation.

View File

@@ -13,3 +13,17 @@ hero:
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/argocd link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/argocd
icon: right-arrow 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.

View File

@@ -13,3 +13,13 @@ hero:
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/audiobookshelf link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/audiobookshelf
icon: right-arrow 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.

View File

@@ -13,3 +13,17 @@ hero:
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/authentik link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/authentik
icon: right-arrow 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.

View File

@@ -13,3 +13,13 @@ hero:
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/backrest link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/backrest
icon: right-arrow 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.

View File

@@ -13,3 +13,11 @@ hero:
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/bazarr link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/bazarr
icon: right-arrow 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.

View File

@@ -13,3 +13,17 @@ hero:
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/blocky link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/blocky
icon: right-arrow 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.

View File

@@ -13,3 +13,15 @@ hero:
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/cert-manager link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/cert-manager
icon: right-arrow 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.

View File

@@ -13,3 +13,17 @@ hero:
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/cilium link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/cilium
icon: right-arrow 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.

View File

@@ -13,3 +13,19 @@ hero:
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/cloudnative-pg link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/cloudnative-pg
icon: right-arrow 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.

View File

@@ -13,3 +13,17 @@ hero:
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/coredns link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/coredns
icon: right-arrow 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.

View File

@@ -13,3 +13,13 @@ hero:
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/dawarich link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/dawarich
icon: right-arrow 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

View File

@@ -13,3 +13,7 @@ hero:
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/element-web link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/element-web
icon: right-arrow 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>

View File

@@ -13,3 +13,7 @@ hero:
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/foldergram link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/foldergram
icon: right-arrow 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>

View File

@@ -13,3 +13,7 @@ hero:
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/freshrss link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/freshrss
icon: right-arrow 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>

View File

@@ -13,3 +13,7 @@ hero:
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/gitea link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/gitea
icon: right-arrow 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>

View File

@@ -13,3 +13,7 @@ hero:
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/karakeep link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/karakeep
icon: right-arrow 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>

View File

@@ -13,3 +13,7 @@ hero:
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/matrix-synapse link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/matrix-synapse
icon: right-arrow 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>

View File

@@ -13,3 +13,7 @@ hero:
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/outline link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/outline
icon: right-arrow 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>

View File

@@ -13,3 +13,7 @@ hero:
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/postiz link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/postiz
icon: right-arrow 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>

View File

@@ -13,3 +13,7 @@ hero:
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/rybbit link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/rybbit
icon: right-arrow 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>

View File

@@ -13,3 +13,7 @@ hero:
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/site-documentation link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/site-documentation
icon: right-arrow 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>

View File

@@ -13,3 +13,7 @@ hero:
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/site-profile link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/site-profile
icon: right-arrow 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>

View File

@@ -0,0 +1,19 @@
---
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>

View File

@@ -13,3 +13,7 @@ hero:
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/vaultwarden link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/vaultwarden
icon: right-arrow icon: right-arrow
--- ---
import { Aside } from '@astrojs/starlight/components';
<Aside>This app has public facing endpoint, at [passwords.alexlebens.dev](https://passwords.alexlebens.dev)</Aside>