11 Commits

Author SHA1 Message Date
semantic-release-bot
816ee9d110 chore(release): 0.13.0 [skip ci]
# [0.13.0](http://gitea-http.gitea:3000/alexlebens/site-documentation/compare/0.12.0...0.13.0) (2026-03-31)

### Features

* documentation on vault ssh ([648fb31](648fb319b1))
2026-03-31 21:47:38 +00:00
b03e2039d1 Merge pull request 'feat: documentation on vault ssh' (#205) from main into release
All checks were successful
release-image / guarddog (push) Successful in 2m24s
release-image / build (push) Successful in 4m48s
release-image / semantic-release (push) Successful in 3m27s
release-image / release-harbor (push) Successful in 8m46s
release-image / release-gitea (push) Successful in 13m46s
Reviewed-on: #205
2026-03-31 21:39:34 +00:00
648fb319b1 feat: documentation on vault ssh
All checks were successful
renovate / renovate (push) Successful in 1m6s
2026-03-31 16:27:34 -05:00
semantic-release-bot
bac794bdc4 chore(release): 0.12.0 [skip ci]
# [0.12.0](http://gitea-http.gitea:3000/alexlebens/site-documentation/compare/0.11.0...0.12.0) (2026-03-30)

### Features

* add more apps ([e13f3e3](e13f3e30e2))
* add more apps ([ef4ff67](ef4ff67818))
* add more apps ([32eacf8](32eacf8df7))
2026-03-30 02:08:01 +00:00
5be099fe02 Merge pull request 'main' (#204) from main into release
All checks were successful
release-image / guarddog (push) Successful in 1m41s
release-image / build (push) Successful in 2m42s
release-image / semantic-release (push) Successful in 2m0s
test-build / guarddog (push) Successful in 16s
test-build / build (push) Successful in 43s
release-image / release-harbor (push) Successful in 6m54s
release-image / release-gitea (push) Successful in 5m42s
renovate / renovate (push) Successful in 30s
Reviewed-on: #204
2026-03-30 02:03:28 +00:00
e13f3e30e2 feat: add more apps
All checks were successful
test-build / build (push) Successful in 2m47s
test-build / guarddog (push) Successful in 4m0s
2026-03-29 20:41:20 -05:00
ef4ff67818 feat: add more apps
All checks were successful
test-build / guarddog (push) Successful in 2m9s
test-build / build (push) Successful in 3m30s
renovate / renovate (push) Successful in 1m17s
2026-03-27 21:32:40 -05:00
32eacf8df7 feat: add more apps
All checks were successful
test-build / guarddog (push) Successful in 22s
test-build / build (push) Successful in 44s
renovate / renovate (push) Successful in 55s
2026-03-26 20:52:03 -05:00
semantic-release-bot
69a49f914a chore(release): 0.11.0 [skip ci]
# [0.11.0](http://gitea-http.gitea:3000/alexlebens/site-documentation/compare/0.10.0...0.11.0) (2026-03-27)

### Features

* add more apps ([2221cbb](2221cbb099))
* add more apps ([82736ec](82736ec2a9))
2026-03-27 01:09:11 +00:00
2221cbb099 feat: add more apps
All checks were successful
test-build / guarddog (push) Successful in 16s
test-build / build (push) Successful in 38s
release-image / guarddog (push) Successful in 22s
release-image / build (push) Successful in 29s
release-image / semantic-release (push) Successful in 17s
release-image / release-harbor (push) Successful in 5m28s
release-image / release-gitea (push) Successful in 2m6s
2026-03-26 20:00:11 -05:00
82736ec2a9 feat: add more apps
All checks were successful
test-build / guarddog (push) Successful in 13s
test-build / build (push) Successful in 31s
2026-03-26 19:17:08 -05:00
17 changed files with 340 additions and 1 deletions

View File

@@ -1,3 +1,27 @@
# [0.13.0](http://gitea-http.gitea:3000/alexlebens/site-documentation/compare/0.12.0...0.13.0) (2026-03-31)
### Features
* documentation on vault ssh ([648fb31](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/648fb319b192ecd7826fe03599f7a0ee55a419ea))
# [0.12.0](http://gitea-http.gitea:3000/alexlebens/site-documentation/compare/0.11.0...0.12.0) (2026-03-30)
### Features
* add more apps ([e13f3e3](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/e13f3e30e2a73a712008f65cc5932cbe1e71adb2))
* add more apps ([ef4ff67](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/ef4ff67818d2758e21b9f0076519ca9221f74bb0))
* add more apps ([32eacf8](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/32eacf8df7cd07eaf33a46d9df88e22f22d0cbf6))
# [0.11.0](http://gitea-http.gitea:3000/alexlebens/site-documentation/compare/0.10.0...0.11.0) (2026-03-27)
### Features
* add more apps ([2221cbb](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/2221cbb0993595d7b8641fa4ffbc2fe874cdff39))
* add more apps ([82736ec](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/82736ec2a95db97abc7337ec1849dbb97a0fca5e))
# [0.10.0](http://gitea-http.gitea:3000/alexlebens/site-documentation/compare/0.9.0...0.10.0) (2026-03-26) # [0.10.0](http://gitea-http.gitea:3000/alexlebens/site-documentation/compare/0.9.0...0.10.0) (2026-03-26)

View File

@@ -1,7 +1,7 @@
{ {
"name": "site-documentation", "name": "site-documentation",
"type": "module", "type": "module",
"version": "0.10.0", "version": "0.13.0",
"scripts": { "scripts": {
"dev": "astro dev", "dev": "astro dev",
"build": "astro build", "build": "astro build",

View File

@@ -0,0 +1,15 @@
---
title: Eraser
description: Eraser helps Kubernetes admins remove a list of non-running images from all Kubernetes nodes in a cluster.
hero:
tagline: Eraser helps Kubernetes admins remove a list of non-running images from all Kubernetes nodes in a cluster.
image:
file: https://raw.githubusercontent.com/eraser-dev/eraser/20576a24c512feb83c26ed867353d4143717d798/docs/static/img/eraser.svg
actions:
- text: Source
link: https://github.com/eraser-dev/eraser
icon: right-arrow
- text: Deployment Chart
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/eraser
icon: right-arrow
---

View File

@@ -0,0 +1,15 @@
---
title: Excalidraw
description: Excalidraw is an open source virtual hand-drawn style whiteboard.
hero:
tagline: Excalidraw is an open source virtual hand-drawn style whiteboard.
image:
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/excalidraw.webp
actions:
- text: Source
link: https://github.com/excalidraw/excalidraw
icon: right-arrow
- text: Deployment Chart
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/excalidraw
icon: right-arrow
---

View File

@@ -0,0 +1,15 @@
---
title: ExternalDNS
description: ExternalDNS synchronizes exposed Kubernetes Services and Ingresses with DNS providers.
hero:
tagline: ExternalDNS synchronizes exposed Kubernetes Services and Ingresses with DNS providers.
image:
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/kubernetes.webp
actions:
- text: Source
link: https://github.com/kubernetes-sigs/external-dns
icon: right-arrow
- text: Deployment Chart
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/external-dns
icon: right-arrow
---

View File

@@ -0,0 +1,15 @@
---
title: External Secrets Operator
description: External Secrets Operator is a Kubernetes operator that integrates external secret management systems.
hero:
tagline: External Secrets Operator is a Kubernetes operator that integrates external secret management systems.
image:
file: https://raw.githubusercontent.com/external-secrets/external-secrets/a16e618c8607b599a2360dd08725015e78cafa1a/assets/eso-round-logo.svg
actions:
- text: Source
link: https://github.com/external-secrets/external-secrets
icon: right-arrow
- text: Deployment Chart
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/external-secrets
icon: right-arrow
---

View File

@@ -0,0 +1,15 @@
---
title: Foldergram
description: Local-only photo and video gallery for folders, with an Instagram-inspired browsing pattern.
hero:
tagline: Local-only photo and video gallery for folders, with an Instagram-inspired browsing pattern.
image:
file: https://raw.githubusercontent.com/foldergram/foldergram/263f2c2c48e4362bf46fc349040d6376737d512b/client/public/favicon.svg
actions:
- text: Source
link: https://github.com/foldergram/foldergram
icon: right-arrow
- text: Deployment Chart
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/foldergram
icon: right-arrow
---

View File

@@ -0,0 +1,15 @@
---
title: FreshRSS
description: FreshRSS is a self-hosted RSS feed aggregator. It is lightweight, easy to work with, powerful, customizable, and has been translated into many languages.
hero:
tagline: FreshRSS is a self-hosted RSS feed aggregator. It is lightweight, easy to work with, powerful, customizable, and has been translated into many languages.
image:
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/freshrss.webp
actions:
- text: Source
link: https://github.com/FreshRSS/FreshRSS
icon: right-arrow
- text: Deployment Chart
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/freshrss
icon: right-arrow
---

View File

@@ -0,0 +1,15 @@
---
title: Garage
description: Garage is an S3-compatible distributed object storage service designed for self-hosting at a small-to-medium scale.
hero:
tagline: Garage is an S3-compatible distributed object storage service designed for self-hosting at a small-to-medium scale.
image:
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/garage.webp
actions:
- text: Source
link: https://git.deuxfleurs.fr/Deuxfleurs/garage
icon: right-arrow
- text: Deployment Chart
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/garage
icon: right-arrow
---

View File

@@ -0,0 +1,15 @@
---
title: Gatus
description: Gatus is a developer-oriented health dashboard that gives you the ability to monitor your services using HTTP, ICMP, TCP, and even DNS queries as well as evaluate the result of said queries by using a list of conditions on values like the status code, the response time, the certificate expiration, the body and many others.
hero:
tagline: Gatus is a developer-oriented health dashboard that gives you the ability to monitor your services using HTTP, ICMP, TCP, and even DNS queries as well as evaluate the result of said queries by using a list of conditions on values like the status code, the response time, the certificate expiration, the body and many others.
image:
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/gatus.webp
actions:
- text: Source
link: https://github.com/TwiN/gatus
icon: right-arrow
- text: Deployment Chart
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/gatus
icon: right-arrow
---

View File

@@ -0,0 +1,15 @@
---
title: Generic Device Plugin
description: Generic Device Plugin enables allocating generic Linux devices, such as serial devices, the FUSE device, or video cameras, to Kubernetes Pods.
hero:
tagline: Generic Device Plugin enables allocating generic Linux devices, such as serial devices, the FUSE device, or video cameras, to Kubernetes Pods.
image:
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/kubernetes.webp
actions:
- text: Source
link: https://github.com/squat/generic-device-plugin
icon: right-arrow
- text: Deployment Chart
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/generic-device-plugin
icon: right-arrow
---

View File

@@ -0,0 +1,15 @@
---
title: Gitea
description: Git with a cup of tea! Painless self-hosted all-in-one software development service, including Git hosting, code review, team collaboration, package registry and CI/CD
hero:
tagline: Git with a cup of tea! Painless self-hosted all-in-one software development service, including Git hosting, code review, team collaboration, package registry and CI/CD
image:
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/gitea.webp
actions:
- text: Source
link: https://github.com/go-gitea/gitea
icon: right-arrow
- text: Deployment Chart
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/gitea
icon: right-arrow
---

View File

@@ -0,0 +1,15 @@
---
title: Grafana Operator
description: Grafana Operator is a Kubernetes operator built to help you manage your Grafana instances and its resources in and outside of Kubernetes.
hero:
tagline: Grafana Operator is a Kubernetes operator built to help you manage your Grafana instances and its resources in and outside of Kubernetes.
image:
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/grafana.webp
actions:
- text: Source
link: https://github.com/grafana/grafana-operator
icon: right-arrow
- text: Deployment Chart
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/grafana-operator
icon: right-arrow
---

View File

@@ -0,0 +1,15 @@
---
title: Harbor
description: Harbor is an open source trusted cloud native registry project that stores, signs, and scans content.
hero:
tagline: Harbor is an open source trusted cloud native registry project that stores, signs, and scans content.
image:
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/harbor.webp
actions:
- text: Source
link: https://github.com/goharbor/harbor
icon: right-arrow
- text: Deployment Chart
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/harbor
icon: right-arrow
---

View File

@@ -0,0 +1,15 @@
---
title: Headlamp
description: Headlamp is an easy-to-use and extensible Kubernetes web UI and was created to blend the traditional feature set of other web UIs/dashboards with added functionality.
hero:
tagline: Headlamp is an easy-to-use and extensible Kubernetes web UI and was created to blend the traditional feature set of other web UIs/dashboards with added functionality.
image:
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/headlamp.webp
actions:
- text: Source
link: https://github.com/kubernetes-sigs/headlamp
icon: right-arrow
- text: Deployment Chart
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/headlamp
icon: right-arrow
---

View File

@@ -0,0 +1,15 @@
---
title: Home Assistant
description: Open source home automation that puts local control and privacy first. Powered by a worldwide community of tinkerers and DIY enthusiasts.
hero:
tagline: Open source home automation that puts local control and privacy first. Powered by a worldwide community of tinkerers and DIY enthusiasts.
image:
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/home-assistant.webp
actions:
- text: Source
link: https://github.com/home-assistant/core
icon: right-arrow
- text: Deployment Chart
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/home-assistant
icon: right-arrow
---

View File

@@ -0,0 +1,105 @@
---
title: Vault SSH Certificate Authority
description: Steps followed to enable using Vault as a CA for ssh login
---
# Setup
[Reference Vault Documentation](https://developer.hashicorp.com/vault/docs/secrets/ssh/signed-ssh-certificates#host-key-signing)
I have set the documenation to use my own defaults and configuration. This also assumes a running and active Vault instance.
## Enable the SSH CA
I followed the defaults mostly in the docs, reference the above link for details. Use either root or a role with permissions for the endpoints.
Start with enabling the mount.
```bash
vault secrets enable -path=ssh-client-signer ssh
```
Generate a key. This will be used only for signing and not for client authentication. Keep it in a secure location, rename the path the key will be written to.
```bash
ssh-keygen -t rsa -C "alexanderlebens@gmail.com"
```
Add the above signing key.
```bash
vault write ssh-client-signer/config/ca private_key="..." public_key="..."
```
## Create Client Role and Key
Once the above is complete, create a role to use to sign your own client cert. I used my common username and configurations. This can also be done in the Vault UI.
```bash
vault write ssh-client-signer/roles/alexlebens -<<"EOH"
{
"algorithm_signer": "rsa-sha2-256",
"allow_user_certificates": true,
"allowed_users": "*",
"allowed_extensions": "permit-pty,permit-port-forwarding",
"default_extensions": {
"permit-pty": ""
},
"key_type": "ca",
"default_user": "alexlebens",
"ttl": "30m0s"
}
EOH
```
## Create Client Key
Generate the ssh key to use to authenticate to your hosts. This is the one to keep in ~/.ssh.
```bash
ssh-keygen -t rsa -C "alexanderlebens@gmail.com"
```
## Configure SSH to use the Key and Cert
SSH will defailt to using the cert when using the matching name "id_rsa_host-cert.pub" as shown in the renewal certificate section. Use the principal as signed by Vault as the User and set the IdentityFile to the Key as generated above.
```
Host ps08rp
Hostname 10.232.1.51
User alexlebens
IdentityFile ~/.ssh/id_rsa_host
```
# Operations
## Prepare Target Host
Download the public cert from the endpoint.
```bash
curl -o /etc/ssh/trusted-user-ca-keys.pem https://vault.alexlebens.net/v1/ssh-client-signer/public_key
```
Then add that file to the sshd config.
```
TrustedUserCAKeys /etc/ssh/trusted-user-ca-keys.pem
```
### Automation
This step is currently manual as I have few hosts that I need ssh for. The most common tool for automation would be Ansible. But this would only be useful for my RaspberyPis and I plan to migrate those to Talos and Kubernetes in the future.
## Renew Client Certificate
Sign the client cert, on your machine, with the Vault CA.
```bash
vault write -field=signed_key ssh-client-signer/sign/alexlebens public_key=@$HOME/.ssh/id_rsa_host.pub > ~/.ssh/id_rsa_host-cert.pub
```
I added the following to my .zshrc to make this easier. So now I just run "vault-renew" before I need to ssh.
```
# Vault
export VAULT_ADDR="https://vault.alexlebens.net"
alias vault-renew='vault write -field=signed_key ssh-client-signer/sign/alexlebens public_key=@$HOME/.ssh/id_rsa_host.pub > ~/.ssh/id_rsa_host-cert.pub'
```
### View Cert Details
For troubleshooting purposes or clafification use the follow to inspect the cert.
```bash
ssh-keygen -Lf ~/.ssh/id_rsa_host-cert.pub
```