Compare commits
206 Commits
746e8465a4
...
0.24.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1d1baa0f2a | ||
| 3b2b38b625 | |||
| b88b13ef16 | |||
| bc36b67320 | |||
| 869ff82875 | |||
| 2a17d50122 | |||
| 22bb54a0e2 | |||
| 1ac2f62082 | |||
|
|
8776b21515 | ||
| ddc7ec3008 | |||
| 357eaf37ed | |||
|
b49be7bc09
|
|||
| 320a66c0fc | |||
|
08bba3a2bf
|
|||
|
bfa7523a2b
|
|||
|
|
746f948218 | ||
| c56f6a07a4 | |||
| a1589ee88a | |||
| c1f7e193fc | |||
| 3b9ca7e76e | |||
|
6607a36ad4
|
|||
| 5c4a10acac | |||
|
75025890ef
|
|||
| 0d9a1fa93d | |||
| e04b5f0e06 | |||
|
|
772591f574 | ||
| fa91135059 | |||
| 32f11ff679 | |||
| 0e04e396e4 | |||
| 451dd2859b | |||
| ea1e36da0d | |||
| 94a03d070d | |||
| b2102678aa | |||
| c5b230e94e | |||
|
|
01b7552f7e | ||
| c14dc38735 | |||
| b82b3f09cc | |||
|
|
51f1cb4090 | ||
| 7a6e667a81 | |||
| 53cbb049ed | |||
| 9b906fa18f | |||
|
|
8c2d625d12 | ||
| 0af5a69d8a | |||
| 58a8faf795 | |||
| 3f3e35396e | |||
|
|
ca33145e2d | ||
| 59f5f08d44 | |||
| 89649f904f | |||
|
1b650a411e
|
|||
| f627fbe316 | |||
|
|
f5776fdef8 | ||
| b16abe43c9 | |||
| 57aec90c9e | |||
| 425651bd30 | |||
| 2ccfecaf63 | |||
| 76a568a61b | |||
|
|
a25d7e27b7 | ||
| 09567e2c26 | |||
| 3ce50ceccd | |||
|
|
6eda19b09c | ||
| 6dd50c7c0b | |||
|
75a9af6d0b
|
|||
| 335db34a6b | |||
| a925d68e38 | |||
| 4282d575be | |||
| dbe3d5cdd2 | |||
| d8946158b0 | |||
|
|
816ee9d110 | ||
| b03e2039d1 | |||
| 648fb319b1 | |||
|
|
bac794bdc4 | ||
| 5be099fe02 | |||
| e13f3e30e2 | |||
| ef4ff67818 | |||
| 32eacf8df7 | |||
|
|
69a49f914a | ||
| 2221cbb099 | |||
| 82736ec2a9 | |||
|
|
97b18372b5 | ||
| 6a5129edcc | |||
| 33b64b0122 | |||
|
e331eb2fb6
|
|||
|
|
cc567738de | ||
| 82187855d8 | |||
| 28910c8ee5 | |||
|
9bbdd65be9
|
|||
|
|
56f97d1e9c | ||
| 79b2f0d1c8 | |||
| 39b446589a | |||
| c69fde38f9 | |||
|
|
7a7a348a3a | ||
| 8e49a12511 | |||
| 4077d3289c | |||
| 9e5ad9cc73 | |||
|
|
c6a6655aa1 | ||
| ce3d1a4a27 | |||
|
|
ff24eed9ef | ||
| 36be56e450 | |||
|
|
f47f5f2409 | ||
| a3e6e65c79 | |||
| 9b03c4e6d5 | |||
| abde3db3c7 | |||
| 3fecb72e89 | |||
| e21d1426d2 | |||
| bfe3395c00 | |||
| 171182a242 | |||
| 3259db18ce | |||
| c55b0de4fd | |||
| 5e97a524ba | |||
| 643ef9bfa5 | |||
|
|
a1174b5287 | ||
| 95805dcd07 | |||
|
|
8db0155faa | ||
|
|
ff1610748d | ||
| 972bbffb41 | |||
|
|
1ae7bf44f1 | ||
| 15af720e9a | |||
| c5073389f3 | |||
| 7a9b62dc04 | |||
| 5dcce08aa9 | |||
| d84625c052 | |||
| 774eb707a3 | |||
| 4575bfb913 | |||
| a9dff234c4 | |||
| 3cfac19e9b | |||
| 3af200c8ff | |||
| 50ed4d4ff9 | |||
| 225790414b | |||
| 47e5938bf7 | |||
| 4ef43534a0 | |||
| 74138302a4 | |||
| 6161f58468 | |||
| eb76550fb0 | |||
| 2b7b853962 | |||
| 63e6ecd824 | |||
| 1304c0c745 | |||
| 7aef8cac08 | |||
| 3516726458 | |||
| fbf40dca3b | |||
| 9dd9cc9d47 | |||
| 069edc7348 | |||
| 1dea5221d1 | |||
| eac9c5d7a2 | |||
| 7167994edc | |||
| 6ae2eaf62d | |||
| b04f0c8654 | |||
| 6c7eb8f043 | |||
| cf71334b60 | |||
| 8abf649510 | |||
| ddb3aaa186 | |||
| 98f84f892d | |||
| 274681e4e6 | |||
| 1726f627c2 | |||
| e341150328 | |||
| 0824b3246b | |||
| 183112d67a | |||
| 6df4aecf68 | |||
| 67a6039bb3 | |||
| b392500fe5 | |||
| 7fd9c250f7 | |||
| 28d3559f32 | |||
| 1cc2cb5486 | |||
| eb5b502345 | |||
| e14571e30b | |||
| 9fb4efa571 | |||
| 4db6aec655 | |||
| d347ed3055 | |||
| c65de6dd6a | |||
| f4eede7d75 | |||
| 16e4061743 | |||
| 84c86ba2b4 | |||
| e0cd4ec079 | |||
| 4c02890f61 | |||
| c24d512148 | |||
| ef42431919 | |||
| dfa74d4a6d | |||
| ee2ca6bd46 | |||
| 390b07e481 | |||
| a532d2fae1 | |||
| 440ab196b2 | |||
| 697ec596aa | |||
| 48c3fabb0a | |||
| a5ef209186 | |||
| 337f94de8b | |||
| 2c66f054ac | |||
| f4203df217 | |||
| e6c41b60f1 | |||
| 303022a508 | |||
| 5fb18bc6f9 | |||
| ecdb56e2aa | |||
| 9691ffb459 | |||
| 0bb0b969a5 | |||
| 0b8d54db12 | |||
| e603bb0ec6 | |||
| 1ee55bea25 | |||
| e44cf5c273 | |||
| 20b5ed4950 | |||
| 89ade69719 | |||
| 3e99430b70 | |||
| 19ce82a0e9 | |||
| df6bfe452e | |||
| 0f6e45a2d3 | |||
| 99a10a8e53 | |||
| 2be2d76f18 | |||
| 079025c028 | |||
| 2d1a8959ba |
340
.gitea/workflows/release-image.yaml
Normal file
340
.gitea/workflows/release-image.yaml
Normal file
@@ -0,0 +1,340 @@
|
|||||||
|
name: release-image
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- release
|
||||||
|
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-js
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v6
|
||||||
|
with:
|
||||||
|
ref: release
|
||||||
|
|
||||||
|
- name: Set up Node
|
||||||
|
uses: actions/setup-node@v6
|
||||||
|
with:
|
||||||
|
node-version: 24.14.1
|
||||||
|
|
||||||
|
- name: Set up Bun
|
||||||
|
uses: oven-sh/setup-bun@v2
|
||||||
|
with:
|
||||||
|
bun-version: 1.3.12
|
||||||
|
|
||||||
|
- name: Install Dependencies
|
||||||
|
run: bun install --frozen-lockfile
|
||||||
|
|
||||||
|
- name: Cache Astro Build Cache
|
||||||
|
uses: actions/cache@v5
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
.astro
|
||||||
|
node_modules/.vite
|
||||||
|
key: ${{ runner.os }}-astro-${{ hashFiles('**/*.astro', 'astro.config.mjs') }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-astro-
|
||||||
|
|
||||||
|
# - name: Lint Code
|
||||||
|
# run: bun run lint
|
||||||
|
|
||||||
|
- name: Build Project
|
||||||
|
run: bun run build
|
||||||
|
|
||||||
|
- name: ntfy Failed
|
||||||
|
uses: niniyas/ntfy-action@master
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
url: '${{ secrets.NTFY_URL }}'
|
||||||
|
topic: '${{ secrets.NTFY_TOPIC }}'
|
||||||
|
title: 'Test Failure - Site Documentation'
|
||||||
|
priority: 4
|
||||||
|
headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
|
||||||
|
tags: action,failed
|
||||||
|
details: 'During release tests failed for building Site Documentation'
|
||||||
|
icon: 'https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png'
|
||||||
|
actions: '[{"action": "view", "label": "Open Gitea", "url": "https://gitea.alexlebens.dev/alexlebens/site-documentation/actions?workflow=release-image.yaml", "clear": true}]'
|
||||||
|
image: true
|
||||||
|
|
||||||
|
guarddog:
|
||||||
|
runs-on: ubuntu-js
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v6
|
||||||
|
with:
|
||||||
|
ref: release
|
||||||
|
|
||||||
|
- name: Set up Python
|
||||||
|
uses: actions/setup-python@v6
|
||||||
|
with:
|
||||||
|
python-version: '3.12.13'
|
||||||
|
|
||||||
|
- name: Install GuardDog
|
||||||
|
run: |
|
||||||
|
python3 -m pip install --upgrade pip
|
||||||
|
python3 -m pip install guarddog
|
||||||
|
|
||||||
|
- name: Run GuardDog
|
||||||
|
run: |
|
||||||
|
guarddog npm scan ./
|
||||||
|
|
||||||
|
- name: ntfy Failed
|
||||||
|
uses: niniyas/ntfy-action@master
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
url: '${{ secrets.NTFY_URL }}'
|
||||||
|
topic: '${{ secrets.NTFY_TOPIC }}'
|
||||||
|
title: 'Security Failure - Site Documentation'
|
||||||
|
priority: 4
|
||||||
|
headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
|
||||||
|
tags: action,failed
|
||||||
|
details: 'During release guarddog scan failed for Site Documentation'
|
||||||
|
icon: 'https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png'
|
||||||
|
actions: '[{"action": "view", "label": "Open Gitea", "url": "https://gitea.alexlebens.dev/alexlebens/site-documentation/actions?workflow=release-image.yaml", "clear": true}]'
|
||||||
|
image: true
|
||||||
|
|
||||||
|
semantic-release:
|
||||||
|
needs: [ build, guarddog ]
|
||||||
|
runs-on: ubuntu-js
|
||||||
|
outputs:
|
||||||
|
new-release-published: ${{ steps.semantic.outputs.new-release-published }}
|
||||||
|
new-release-version: ${{ steps.semantic.outputs.new-release-version }}
|
||||||
|
new-release-git-tag: ${{ steps.semantic.outputs.new-release-git-tag }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v6
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
token: ${{ secrets.BOT_TOKEN }}
|
||||||
|
|
||||||
|
- name: Set up Node
|
||||||
|
uses: actions/setup-node@v6
|
||||||
|
with:
|
||||||
|
node-version: 24.14.1
|
||||||
|
|
||||||
|
- name: Set up Bun
|
||||||
|
uses: oven-sh/setup-bun@v2
|
||||||
|
with:
|
||||||
|
bun-version: 1.3.12
|
||||||
|
|
||||||
|
- name: Install Dependencies
|
||||||
|
run: bun install --frozen-lockfile
|
||||||
|
|
||||||
|
- name: Run Semantic Release
|
||||||
|
id: semantic
|
||||||
|
env:
|
||||||
|
GITEA_TOKEN: ${{ secrets.BOT_TOKEN }}
|
||||||
|
GITHUB_TOKEN: ${{ secrets.BOT_TOKEN }}
|
||||||
|
NODE_PATH: ${{ github.workspace }}/node_modules
|
||||||
|
run: |
|
||||||
|
bun run semantic-release
|
||||||
|
|
||||||
|
release-harbor:
|
||||||
|
runs-on: ubuntu-js
|
||||||
|
needs: semantic-release
|
||||||
|
if: ${{ needs.semantic-release.outputs.new-release-published == 'true' }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v6
|
||||||
|
with:
|
||||||
|
ref: release
|
||||||
|
|
||||||
|
- name: Login to Harbor Registry
|
||||||
|
uses: docker/login-action@v4
|
||||||
|
with:
|
||||||
|
registry: ${{ vars.REGISTRY_HOST }}
|
||||||
|
username: ${{ vars.REGISTRY_USER }}
|
||||||
|
password: ${{ secrets.REGISTRY_SECRET }}
|
||||||
|
|
||||||
|
- name: Login to Docker
|
||||||
|
uses: docker/login-action@v4
|
||||||
|
with:
|
||||||
|
registry: ${{ vars.DH_REGISTRY }}
|
||||||
|
username: ${{ secrets.DH_USERNAME }}
|
||||||
|
password: ${{ secrets.DH_TOKEN }}
|
||||||
|
|
||||||
|
- name: Create Kubeconfig
|
||||||
|
run: |
|
||||||
|
mkdir $HOME/.kube
|
||||||
|
echo "${{ secrets.KUBECONFIG_BUILDX }}" > $HOME/.kube/config
|
||||||
|
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
id: buildx
|
||||||
|
uses: docker/setup-buildx-action@v4
|
||||||
|
with:
|
||||||
|
driver: kubernetes
|
||||||
|
driver-opts: |
|
||||||
|
namespace=gitea
|
||||||
|
qemu.install=true
|
||||||
|
buildkitd-config-inline: |
|
||||||
|
[registry."docker.io"]
|
||||||
|
mirrors = ["harbor.alexlebens.net/proxy-hub.docker/"]
|
||||||
|
|
||||||
|
- name: Available Platforms
|
||||||
|
run: echo ${{ steps.buildx.outputs.platforms }}
|
||||||
|
|
||||||
|
- name: Extract Metadata
|
||||||
|
id: meta
|
||||||
|
uses: docker/metadata-action@v6
|
||||||
|
with:
|
||||||
|
images: |
|
||||||
|
${{ vars.REGISTRY_HOST }}/images/site-documentation
|
||||||
|
tags: |
|
||||||
|
type=ref,event=branch
|
||||||
|
type=sha,format=long
|
||||||
|
type=raw,value=latest,enable=${{ needs.semantic-release.outputs.new-release-published == 'true' }}
|
||||||
|
type=semver,pattern={{version}},value=${{ needs.semantic-release.outputs.new-release-version }}
|
||||||
|
type=semver,pattern={{major}}.{{minor}},value=${{ needs.semantic-release.outputs.new-release-version }}
|
||||||
|
type=semver,pattern={{major}},value=${{ needs.semantic-release.outputs.new-release-version }}
|
||||||
|
|
||||||
|
- name: Build and Push Image
|
||||||
|
uses: docker/build-push-action@v7
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
push: true
|
||||||
|
platforms: linux/amd64
|
||||||
|
tags: ${{ steps.meta.outputs.tags }}
|
||||||
|
labels: ${{ steps.meta.outputs.labels }}
|
||||||
|
build-args: |
|
||||||
|
APP_VERSION=${{ needs.semantic-release.outputs.new-release-version }}
|
||||||
|
COMMIT_SHA=${{ github.sha }}
|
||||||
|
IS_RELEASE=true
|
||||||
|
file: ./Dockerfile
|
||||||
|
cache-from: type=gha
|
||||||
|
cache-to: type=gha,mode=max
|
||||||
|
|
||||||
|
- name: ntfy Success
|
||||||
|
uses: niniyas/ntfy-action@master
|
||||||
|
if: success()
|
||||||
|
with:
|
||||||
|
url: '${{ secrets.NTFY_URL }}'
|
||||||
|
topic: '${{ secrets.NTFY_TOPIC }}'
|
||||||
|
title: 'Release Success - Site Documentation'
|
||||||
|
priority: 3
|
||||||
|
headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
|
||||||
|
tags: action,successfully,completed
|
||||||
|
details: 'Harbor Image for Site Documentation has been released!'
|
||||||
|
icon: 'https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png'
|
||||||
|
|
||||||
|
- name: ntfy Failed
|
||||||
|
uses: niniyas/ntfy-action@master
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
url: '${{ secrets.NTFY_URL }}'
|
||||||
|
topic: '${{ secrets.NTFY_TOPIC }}'
|
||||||
|
title: 'Release Failure - Site Documentation'
|
||||||
|
priority: 4
|
||||||
|
headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
|
||||||
|
tags: action,failed
|
||||||
|
details: 'Harbor Image for Site Documentation has failed to be released.'
|
||||||
|
icon: 'https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png'
|
||||||
|
actions: '[{"action": "view", "label": "Open Gitea", "url": "https://gitea.alexlebens.dev/alexlebens/site-documentation/actions?workflow=release-image.yml", "clear": true}]'
|
||||||
|
image: true
|
||||||
|
|
||||||
|
release-gitea:
|
||||||
|
runs-on: ubuntu-js
|
||||||
|
needs: [ semantic-release, release-harbor ]
|
||||||
|
if: |
|
||||||
|
always() &&
|
||||||
|
needs.semantic-release.outputs.new-release-published == 'true'
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v6
|
||||||
|
with:
|
||||||
|
ref: release
|
||||||
|
|
||||||
|
- name: Login to Gitea Registry
|
||||||
|
uses: docker/login-action@v4
|
||||||
|
with:
|
||||||
|
registry: ${{ vars.REPOSITORY_HOST }}
|
||||||
|
username: ${{ gitea.actor }}
|
||||||
|
password: ${{ secrets.REPOSITORY_TOKEN }}
|
||||||
|
|
||||||
|
- name: Login to Docker
|
||||||
|
uses: docker/login-action@v4
|
||||||
|
with:
|
||||||
|
registry: ${{ vars.DH_REGISTRY }}
|
||||||
|
username: ${{ secrets.DH_USERNAME }}
|
||||||
|
password: ${{ secrets.DH_TOKEN }}
|
||||||
|
|
||||||
|
- name: Create Kubeconfig
|
||||||
|
run: |
|
||||||
|
mkdir $HOME/.kube
|
||||||
|
echo "${{ secrets.KUBECONFIG_BUILDX }}" > $HOME/.kube/config
|
||||||
|
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
id: buildx
|
||||||
|
uses: docker/setup-buildx-action@v4
|
||||||
|
with:
|
||||||
|
driver: kubernetes
|
||||||
|
driver-opts: |
|
||||||
|
namespace=gitea
|
||||||
|
qemu.install=true
|
||||||
|
buildkitd-config-inline: |
|
||||||
|
[registry."docker.io"]
|
||||||
|
mirrors = ["harbor.alexlebens.net/proxy-hub.docker/"]
|
||||||
|
|
||||||
|
- name: Available Platforms
|
||||||
|
run: echo ${{ steps.buildx.outputs.platforms }}
|
||||||
|
|
||||||
|
- name: Extract Metadata
|
||||||
|
id: meta
|
||||||
|
uses: docker/metadata-action@v6
|
||||||
|
with:
|
||||||
|
images: |
|
||||||
|
${{ vars.REPOSITORY_HOST }}/${{ gitea.repository }}
|
||||||
|
tags: |
|
||||||
|
type=ref,event=branch
|
||||||
|
type=sha,format=long
|
||||||
|
type=raw,value=latest,enable=${{ needs.semantic-release.outputs.new-release-published == 'true' }}
|
||||||
|
type=semver,pattern={{version}},value=${{ needs.semantic-release.outputs.new-release-version }}
|
||||||
|
type=semver,pattern={{major}}.{{minor}},value=${{ needs.semantic-release.outputs.new-release-version }}
|
||||||
|
type=semver,pattern={{major}},value=${{ needs.semantic-release.outputs.new-release-version }}
|
||||||
|
|
||||||
|
- name: Build and Push Image
|
||||||
|
uses: docker/build-push-action@v7
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
push: true
|
||||||
|
platforms: linux/amd64
|
||||||
|
tags: ${{ steps.meta.outputs.tags }}
|
||||||
|
labels: ${{ steps.meta.outputs.labels }}
|
||||||
|
build-args: |
|
||||||
|
APP_VERSION=${{ needs.semantic-release.outputs.new-release-version }}
|
||||||
|
COMMIT_SHA=${{ github.sha }}
|
||||||
|
IS_RELEASE=true
|
||||||
|
file: ./Dockerfile
|
||||||
|
cache-from: type=gha
|
||||||
|
cache-to: type=gha,mode=max
|
||||||
|
|
||||||
|
- name: ntfy Success
|
||||||
|
uses: niniyas/ntfy-action@master
|
||||||
|
if: success()
|
||||||
|
with:
|
||||||
|
url: '${{ secrets.NTFY_URL }}'
|
||||||
|
topic: '${{ secrets.NTFY_TOPIC }}'
|
||||||
|
title: 'Release Success - Site Documentation'
|
||||||
|
priority: 3
|
||||||
|
headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
|
||||||
|
tags: action,successfully,completed
|
||||||
|
details: 'Gitea Image for Site Documentation has been released!'
|
||||||
|
icon: 'https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png'
|
||||||
|
|
||||||
|
- name: ntfy Failed
|
||||||
|
uses: niniyas/ntfy-action@master
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
url: '${{ secrets.NTFY_URL }}'
|
||||||
|
topic: '${{ secrets.NTFY_TOPIC }}'
|
||||||
|
title: 'Release Failure - Site Documentation'
|
||||||
|
priority: 4
|
||||||
|
headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
|
||||||
|
tags: action,failed
|
||||||
|
details: 'Gitea Image for Site Documentation has failed to be released.'
|
||||||
|
icon: 'https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png'
|
||||||
|
actions: '[{"action": "view", "label": "Open Gitea", "url": "https://gitea.alexlebens.dev/alexlebens/site-documentation/actions?workflow=release-image.yaml", "clear": true}]'
|
||||||
|
image: true
|
||||||
@@ -1,98 +0,0 @@
|
|||||||
name: release-image
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
tags:
|
|
||||||
- 0.*
|
|
||||||
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
release:
|
|
||||||
runs-on: ubuntu-js
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v6
|
|
||||||
|
|
||||||
- name: Login to Registry
|
|
||||||
uses: docker/login-action@v3
|
|
||||||
with:
|
|
||||||
registry: ${{ vars.REPOSITORY_HOST }}
|
|
||||||
username: ${{ gitea.actor }}
|
|
||||||
password: ${{ secrets.REPOSITORY_TOKEN }}
|
|
||||||
|
|
||||||
- name: Login to Registry
|
|
||||||
uses: docker/login-action@v3
|
|
||||||
with:
|
|
||||||
registry: ${{ vars.REGISTRY_HOST }}
|
|
||||||
username: ${{ vars.REGISTRY_USER }}
|
|
||||||
password: ${{ secrets.REGISTRY_SECRET }}
|
|
||||||
|
|
||||||
- name: Create Kubeconfig
|
|
||||||
run: |
|
|
||||||
mkdir $HOME/.kube
|
|
||||||
echo "${{ secrets.KUBECONFIG_BUILDX }}" > $HOME/.kube/config
|
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
|
||||||
id: buildx
|
|
||||||
uses: docker/setup-buildx-action@v3
|
|
||||||
with:
|
|
||||||
driver: kubernetes
|
|
||||||
driver-opts: |
|
|
||||||
namespace=gitea
|
|
||||||
qemu.install=true
|
|
||||||
buildkitd-config-inline: |
|
|
||||||
[registry."docker.io"]
|
|
||||||
mirrors = ["harbor.alexlebens.net/proxy-hub.docker/"]
|
|
||||||
|
|
||||||
- name: Available Platforms
|
|
||||||
run: echo ${{ steps.buildx.outputs.platforms }}
|
|
||||||
|
|
||||||
- name: Extract Metadata
|
|
||||||
id: meta
|
|
||||||
uses: docker/metadata-action@v5
|
|
||||||
with:
|
|
||||||
tags: |
|
|
||||||
type=ref,event=branch
|
|
||||||
type=ref,event=tag
|
|
||||||
images: |
|
|
||||||
${{ vars.REPOSITORY_HOST }}/${{ gitea.repository }}
|
|
||||||
${{ vars.REGISTRY_HOST }}/images/site-documentation
|
|
||||||
|
|
||||||
- name: Build and Push Image
|
|
||||||
uses: docker/build-push-action@v6
|
|
||||||
with:
|
|
||||||
context: .
|
|
||||||
push: true
|
|
||||||
platforms: linux/amd64
|
|
||||||
tags: ${{ steps.meta.outputs.tags }}
|
|
||||||
labels: ${{ steps.meta.outputs.labels }}
|
|
||||||
file: ./Dockerfile
|
|
||||||
|
|
||||||
- name: ntfy Success
|
|
||||||
uses: niniyas/ntfy-action@master
|
|
||||||
if: success()
|
|
||||||
with:
|
|
||||||
url: '${{ secrets.NTFY_URL }}'
|
|
||||||
topic: '${{ secrets.NTFY_TOPIC }}'
|
|
||||||
title: 'Release Success - Site Documentation'
|
|
||||||
priority: 3
|
|
||||||
headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
|
|
||||||
tags: action,successfully,completed
|
|
||||||
details: 'Image for Site Documentation has been released!'
|
|
||||||
icon: 'https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png'
|
|
||||||
|
|
||||||
- name: ntfy Failed
|
|
||||||
uses: niniyas/ntfy-action@master
|
|
||||||
if: failure()
|
|
||||||
with:
|
|
||||||
url: '${{ secrets.NTFY_URL }}'
|
|
||||||
topic: '${{ secrets.NTFY_TOPIC }}'
|
|
||||||
title: 'Release Failure - Site Documentation'
|
|
||||||
priority: 4
|
|
||||||
headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
|
|
||||||
tags: action,failed
|
|
||||||
details: 'Image for Site Documentation has failed to be released.'
|
|
||||||
icon: 'https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png'
|
|
||||||
actions: '[{"action": "view", "label": "Open Gitea", "url": "https://gitea.alexlebens.dev/alexlebens/site-documentation/actions?workflow=release-image.yml", "clear": true}]'
|
|
||||||
image: true
|
|
||||||
@@ -2,18 +2,14 @@ name: renovate
|
|||||||
|
|
||||||
on:
|
on:
|
||||||
schedule:
|
schedule:
|
||||||
- cron: '@daily'
|
- cron: '0 */6 * * *'
|
||||||
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
|
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
renovate:
|
renovate:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
container: ghcr.io/renovatebot/renovate:42
|
container: ghcr.io/renovatebot/renovate:43
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v6
|
uses: actions/checkout@v6
|
||||||
@@ -25,8 +21,10 @@ jobs:
|
|||||||
RENOVATE_ENDPOINT: ${{ vars.INSTANCE_URL }}
|
RENOVATE_ENDPOINT: ${{ vars.INSTANCE_URL }}
|
||||||
RENOVATE_REPOSITORIES: alexlebens/site-documentation
|
RENOVATE_REPOSITORIES: alexlebens/site-documentation
|
||||||
RENOVATE_GIT_AUTHOR: Renovate Bot <renovate-bot@alexlebens.net>
|
RENOVATE_GIT_AUTHOR: Renovate Bot <renovate-bot@alexlebens.net>
|
||||||
LOG_LEVEL: info
|
RENOVATE_REDIS_URL: ${{ vars.RENOVATE_REDIS_URL }}
|
||||||
|
LOG_LEVEL: debug
|
||||||
RENOVATE_TOKEN: ${{ secrets.RENOVATE_TOKEN }}
|
RENOVATE_TOKEN: ${{ secrets.RENOVATE_TOKEN }}
|
||||||
RENOVATE_GIT_PRIVATE_KEY: ${{ secrets.RENOVATE_GIT_PRIVATE_KEY }}
|
RENOVATE_GIT_PRIVATE_KEY: ${{ secrets.RENOVATE_GIT_PRIVATE_KEY }}
|
||||||
RENOVATE_GITHUB_COM_TOKEN: ${{ secrets.RENOVATE_GITHUB_COM_TOKEN }}
|
RENOVATE_GITHUB_COM_TOKEN: ${{ secrets.RENOVATE_GITHUB_COM_TOKEN }}
|
||||||
RENOVATE_REDIS_URL: ${{ vars.RENOVATE_REDIS_URL }}
|
RENOVATE_REGISTRY_ALIASES: '{"dhi.io": "dhi.io"}'
|
||||||
|
RENOVATE_HOST_RULES: '[{"matchHost":"dhi.io","hostType":"docker","username":"${{ secrets.RENOVATE_DHI_USER }}","password":"${{ secrets.RENOVATE_DHI_TOKEN }}"}]'
|
||||||
|
|||||||
@@ -4,6 +4,9 @@ on:
|
|||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
|
paths-ignore:
|
||||||
|
- '.gitea/workflows/**'
|
||||||
|
- '**.md'
|
||||||
|
|
||||||
pull_request:
|
pull_request:
|
||||||
branches:
|
branches:
|
||||||
@@ -16,25 +19,34 @@ jobs:
|
|||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v6
|
uses: actions/checkout@v6
|
||||||
|
|
||||||
- name: Set up pnpm
|
- name: Set up Node
|
||||||
uses: pnpm/action-setup@v4
|
|
||||||
with:
|
|
||||||
version: 10.x
|
|
||||||
|
|
||||||
- name: Set up Node.js
|
|
||||||
uses: actions/setup-node@v6
|
uses: actions/setup-node@v6
|
||||||
with:
|
with:
|
||||||
node-version: 24.12.0
|
node-version: 24.14.1
|
||||||
cache: pnpm
|
|
||||||
|
- name: Set up Bun
|
||||||
|
uses: oven-sh/setup-bun@v2
|
||||||
|
with:
|
||||||
|
bun-version: 1.3.12
|
||||||
|
|
||||||
- name: Install Dependencies
|
- name: Install Dependencies
|
||||||
run: pnpm install
|
run: bun install --frozen-lockfile
|
||||||
|
|
||||||
|
- name: Cache Astro Build Cache
|
||||||
|
uses: actions/cache@v5
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
.astro
|
||||||
|
node_modules/.vite
|
||||||
|
key: ${{ runner.os }}-astro-${{ hashFiles('**/*.astro', 'astro.config.mjs') }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-astro-
|
||||||
|
|
||||||
# - name: Lint Code
|
# - name: Lint Code
|
||||||
# run: pnpm lint
|
# run: bun run lint
|
||||||
|
|
||||||
- name: Build Project
|
- name: Build Project
|
||||||
run: pnpm build
|
run: bun run build
|
||||||
|
|
||||||
- name: ntfy Failed
|
- name: ntfy Failed
|
||||||
uses: niniyas/ntfy-action@master
|
uses: niniyas/ntfy-action@master
|
||||||
@@ -50,3 +62,38 @@ jobs:
|
|||||||
icon: 'https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png'
|
icon: 'https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png'
|
||||||
actions: '[{"action": "view", "label": "Open Gitea", "url": "https://gitea.alexlebens.dev/alexlebens/site-documentation/actions?workflow=test-build.yaml", "clear": true}]'
|
actions: '[{"action": "view", "label": "Open Gitea", "url": "https://gitea.alexlebens.dev/alexlebens/site-documentation/actions?workflow=test-build.yaml", "clear": true}]'
|
||||||
image: true
|
image: true
|
||||||
|
|
||||||
|
guarddog:
|
||||||
|
runs-on: ubuntu-js
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v6
|
||||||
|
|
||||||
|
- name: Set up Python
|
||||||
|
uses: actions/setup-python@v6
|
||||||
|
with:
|
||||||
|
python-version: '3.12.13'
|
||||||
|
|
||||||
|
- name: Install GuardDog
|
||||||
|
run: |
|
||||||
|
python3 -m pip install --upgrade pip
|
||||||
|
python3 -m pip install guarddog
|
||||||
|
|
||||||
|
- name: Run GuardDog
|
||||||
|
run: |
|
||||||
|
guarddog npm scan ./
|
||||||
|
|
||||||
|
- name: ntfy Failed
|
||||||
|
uses: niniyas/ntfy-action@master
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
url: '${{ secrets.NTFY_URL }}'
|
||||||
|
topic: '${{ secrets.NTFY_TOPIC }}'
|
||||||
|
title: 'Security Failure - Site Documentation'
|
||||||
|
priority: 4
|
||||||
|
headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
|
||||||
|
tags: action,failed
|
||||||
|
details: 'Guarddog scan failed for Site Documentation'
|
||||||
|
icon: 'https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png'
|
||||||
|
actions: '[{"action": "view", "label": "Open Gitea", "url": "https://gitea.alexlebens.dev/alexlebens/site-documentation/actions?workflow=test-build.yaml", "clear": true}]'
|
||||||
|
image: true
|
||||||
|
|||||||
17
.pre-commit-config.yaml
Normal file
17
.pre-commit-config.yaml
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
repos:
|
||||||
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||||
|
rev: v6.0.0
|
||||||
|
hooks:
|
||||||
|
- id: end-of-file-fixer
|
||||||
|
- id: trailing-whitespace
|
||||||
|
- id: check-merge-conflict
|
||||||
|
- id: check-json
|
||||||
|
- repo: https://github.com/pre-commit/mirrors-prettier
|
||||||
|
rev: v4.0.0-alpha.11
|
||||||
|
hooks:
|
||||||
|
- id: prettier
|
||||||
|
types_or: [javascript, typescript, css, scss, html, json, yaml, markdown]
|
||||||
|
additional_dependencies:
|
||||||
|
- prettier
|
||||||
|
- prettier-plugin-astro
|
||||||
|
- prettier-plugin-tailwindcss
|
||||||
18
.releaserc.json
Normal file
18
.releaserc.json
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"branches": ["release"],
|
||||||
|
"tagFormat": "${version}",
|
||||||
|
"plugins": [
|
||||||
|
"@semantic-release/commit-analyzer",
|
||||||
|
"@semantic-release/release-notes-generator",
|
||||||
|
"@semantic-release/changelog",
|
||||||
|
"semantic-release-export-data",
|
||||||
|
["@semantic-release/npm", { "npmPublish": false }],
|
||||||
|
["@semantic-release/git", {
|
||||||
|
"assets": ["package.json", "CHANGELOG.md"],
|
||||||
|
"message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
|
||||||
|
}],
|
||||||
|
["@saithodev/semantic-release-gitea", {
|
||||||
|
"giteaUrl": "https://gitea.alexlebens.dev"
|
||||||
|
}]
|
||||||
|
]
|
||||||
|
}
|
||||||
218
CHANGELOG.md
Normal file
218
CHANGELOG.md
Normal file
@@ -0,0 +1,218 @@
|
|||||||
|
# [0.24.0](http://gitea-http.gitea:3000/alexlebens/site-documentation/compare/0.23.0...0.24.0) (2026-04-12)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* add notes ([869ff82](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/869ff82875c2ab9d030767e480896b29b1056f02))
|
||||||
|
* add notes ([1ac2f62](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/1ac2f62082d180d42a4baf9b330b67b3483b7a64))
|
||||||
|
* add notes to all applications ([3b2b38b](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/3b2b38b6256fbd699ce7fa5521b43761c6c6a9ed))
|
||||||
|
* add rybbit tracking ([bc36b67](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/bc36b67320b1f515a70ad4e338ce7549a153a8b6))
|
||||||
|
* remove csp ([b88b13e](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/b88b13ef1693610b06c5e99dc8906b215a5fda40))
|
||||||
|
|
||||||
|
# [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)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* add more apps ([fa91135](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/fa911350597b0dff19b83956b9947a9e7884ca4a))
|
||||||
|
* add more apps ([32f11ff](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/32f11ff67968b8a9239941facff679a607ca6e57))
|
||||||
|
* add more apps ([0e04e39](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/0e04e396e4bf749bde21aebd0647df6e6be4f80f))
|
||||||
|
* add more apps ([451dd28](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/451dd2859b9d5072b1ab0f41b5f7d7ba4201cb5a))
|
||||||
|
* add more apps ([ea1e36d](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/ea1e36da0d271b75852939c339f7e768964d7e2c))
|
||||||
|
* add more apps ([94a03d0](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/94a03d070d32a165f8b9e180291aad7f751b3ebe))
|
||||||
|
* add more apps ([b210267](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/b2102678aacd3e1659486740fdebfd8560015bb7))
|
||||||
|
* add more apps ([c5b230e](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/c5b230e94e985c608568c38a5c497af9b7bd5003))
|
||||||
|
|
||||||
|
# [0.20.0](http://gitea-http.gitea:3000/alexlebens/site-documentation/compare/0.19.0...0.20.0) (2026-04-06)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* add more apps ([b82b3f0](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/b82b3f09cc7a649d52f3495e5f11b1edb2856796))
|
||||||
|
|
||||||
|
# [0.19.0](http://gitea-http.gitea:3000/alexlebens/site-documentation/compare/0.18.0...0.19.0) (2026-04-06)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* add more apps ([9b906fa](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/9b906fa18fd2cb4888bccc1bf0ba51ea795a12c3))
|
||||||
|
* change to mdx ([53cbb04](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/53cbb049ed717e3b4890af864c0ce0cd205c751e))
|
||||||
|
|
||||||
|
# [0.18.0](http://gitea-http.gitea:3000/alexlebens/site-documentation/compare/0.17.0...0.18.0) (2026-04-05)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* add more apps ([58a8faf](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/58a8faf79563a7570f69a1863a3f4b056352dc2f))
|
||||||
|
* add more apps ([3f3e353](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/3f3e35396e56a91662807971e5b09e6c25bb067a))
|
||||||
|
|
||||||
|
# [0.17.0](http://gitea-http.gitea:3000/alexlebens/site-documentation/compare/0.16.0...0.17.0) (2026-04-05)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* add more apps ([f627fbe](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/f627fbe3165af551a546fff41ef26431a919ea02))
|
||||||
|
* add ntfy ([89649f9](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/89649f904f0304b5e1f41eaec4faa07a409f679d))
|
||||||
|
|
||||||
|
# [0.16.0](http://gitea-http.gitea:3000/alexlebens/site-documentation/compare/0.15.0...0.16.0) (2026-04-04)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* add more apps ([57aec90](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/57aec90c9e0c9b51c238a76a82f7d4f0a3a14195))
|
||||||
|
* add more apps ([425651b](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/425651bd309ba215ec1fbd618882e98b3fad17b4))
|
||||||
|
* add more apps ([2ccfeca](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/2ccfecaf63b623c0fc7a847d5d81ca8d54c991bd))
|
||||||
|
* add more apps ([76a568a](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/76a568a61bb35511d84deaeb86eadc2a4643b473))
|
||||||
|
* add more apps ([09567e2](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/09567e2c266fd1d2f66ba42f5ed6d3cb134216ae))
|
||||||
|
|
||||||
|
# [0.15.0](http://gitea-http.gitea:3000/alexlebens/site-documentation/compare/0.14.0...0.15.0) (2026-04-02)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* add more apps ([3ce50ce](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/3ce50ceccd12c8059f3c5146f6c0ad90d75c47b7))
|
||||||
|
|
||||||
|
# [0.14.0](http://gitea-http.gitea:3000/alexlebens/site-documentation/compare/0.13.0...0.14.0) (2026-04-01)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **deps:** pin dependencies ([75a9af6](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/75a9af6d0b907c90dba7b0969624c1daee8a0435))
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* add homepage ([d894615](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/d8946158b04f49876cc9aff79004f92ccbea6a1c))
|
||||||
|
* change code theme ([dbe3d5c](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/dbe3d5cdd20321ef276c3e36ca8877ada7739486))
|
||||||
|
|
||||||
|
# [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)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* add more apps ([33b64b0](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/33b64b0122a8ff734e632d0fdcaf92a474e1d631))
|
||||||
|
|
||||||
|
# [0.9.0](http://gitea-http.gitea:3000/alexlebens/site-documentation/compare/0.8.0...0.9.0) (2026-03-26)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* add more apps ([28910c8](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/28910c8ee57a2436cbe1ca01e95b85d8600f360e))
|
||||||
|
* collapse apps by default, too many ([79b2f0d](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/79b2f0d1c89da74693ffddd78460197cd3d91bd5))
|
||||||
|
|
||||||
|
# [0.8.0](http://gitea-http.gitea:3000/alexlebens/site-documentation/compare/0.7.0...0.8.0) (2026-03-25)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* add more apps ([c69fde3](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/c69fde38f93cd8f8fe50503c7e3b0523eeb73775))
|
||||||
|
|
||||||
|
# [0.7.0](http://gitea-http.gitea:3000/alexlebens/site-documentation/compare/0.6.0...0.7.0) (2026-03-25)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* add more apps ([8e49a12](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/8e49a12511f26de4060ff2aaef0f707446e210bd))
|
||||||
|
* change schedule ([4077d32](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/4077d3289cd2a87d8499b31eb6a70fd460aa72e4))
|
||||||
|
|
||||||
|
# [0.6.0](http://gitea-http.gitea:3000/alexlebens/site-documentation/compare/0.5.0...0.6.0) (2026-03-23)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* add more apps ([ce3d1a4](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/ce3d1a4a27d3e7850f05cc91fd3e1bae42ef5cea))
|
||||||
|
|
||||||
|
# [0.5.0](http://gitea-http.gitea:3000/alexlebens/site-documentation/compare/0.4.0...0.5.0) (2026-03-23)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* add argo-cd ([36be56e](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/36be56e4502cbc40a7380ef1f7124b002ba7c583))
|
||||||
|
|
||||||
|
# [0.4.0](http://gitea-http.gitea:3000/alexlebens/site-documentation/compare/0.3.0...0.4.0) (2026-03-23)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* remove react deps ([5e97a52](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/5e97a524ba045398267f80f55c40288ab40f0d47))
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* add and update pre-commit ([95805dc](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/95805dcd071dd08e1e6451d96b2d0d1058abedaf))
|
||||||
|
* add applications, actual ([e21d142](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/e21d1426d23c7deee7ccd415e8ad528f3a9c0b08))
|
||||||
|
* add argo-workflows ([abde3db](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/abde3db3c76a37ffda8232f8293b8b402eaef81e))
|
||||||
|
* merge ([a3e6e65](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/a3e6e65c79a92d34cc4b0fffdbba7719bcb14b5d))
|
||||||
|
* remove splash template ([3fecb72](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/3fecb72e89af7eac1d4fa04e7ec5280c6cf546c8))
|
||||||
|
|
||||||
|
# [0.3.0](http://gitea-http.gitea:3000/alexlebens/site-documentation/compare/0.2.0...0.3.0) (2026-03-15)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* add and update pre-commit ([972bbff](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/972bbffb41020489508660c261559b0e6c806ca6))
|
||||||
|
|
||||||
|
# [0.2.0](http://gitea-http.gitea:3000/alexlebens/site-documentation/compare/0.1.7...0.2.0) (2026-03-12)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* add robots ([4ef4353](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/4ef43534a0f26bc5593258c9cd6a31d62283929d))
|
||||||
|
* switch to bun ([7413830](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/74138302a4c2ad45a850459c47a17dd09014f3ad))
|
||||||
|
* trigger minor version update ([7a9b62d](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/7a9b62dc048ffd947bb6dd41523091bbc9346e84))
|
||||||
|
* use alpine-dev for bun builder ([4575bfb](http://gitea-http.gitea:3000/alexlebens/site-documentation/commit/4575bfb9138bc9ca5f9d93e845155fc56d3a8491))
|
||||||
38
Dockerfile
38
Dockerfile
@@ -1,35 +1,35 @@
|
|||||||
ARG REGISTRY=docker.io
|
ARG REGISTRY=dhi.io
|
||||||
FROM ${REGISTRY}/node:24.13.0-alpine3.22 AS base
|
FROM ${REGISTRY}/bun:1.3.11-alpine3.22-dev AS builder
|
||||||
|
|
||||||
LABEL version="0.0.7"
|
|
||||||
LABEL description="Astro based documentation website"
|
|
||||||
|
|
||||||
ENV PNPM_HOME="/pnpm"
|
|
||||||
ENV PATH="$PNPM_HOME:$PATH"
|
|
||||||
RUN corepack enable
|
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
COPY package.json pnpm-lock.yaml ./
|
COPY package.json bun.lock ./
|
||||||
|
|
||||||
FROM base AS prod-deps
|
FROM builder AS prod-deps
|
||||||
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --prod --frozen-lockfile
|
RUN --mount=type=cache,id=bun,target=/root/.bun/install/cache \
|
||||||
|
bun install --production --frozen-lockfile
|
||||||
|
|
||||||
FROM prod-deps AS build-deps
|
FROM builder AS build-deps
|
||||||
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile
|
RUN --mount=type=cache,id=bun,target=/root/.bun/install/cache \
|
||||||
|
bun install --frozen-lockfile
|
||||||
|
|
||||||
FROM build-deps AS build
|
FROM build-deps AS build
|
||||||
COPY . .
|
COPY . .
|
||||||
RUN pnpm run build
|
RUN bun run build
|
||||||
RUN pnpm prune --prod
|
|
||||||
|
|
||||||
FROM base AS runtime
|
FROM ${REGISTRY}/bun:1.3.11-alpine3.22 AS runtime
|
||||||
|
WORKDIR /app
|
||||||
COPY --from=prod-deps /app/node_modules /app/node_modules
|
COPY --from=prod-deps /app/node_modules /app/node_modules
|
||||||
COPY --from=build /app/dist /app/dist
|
COPY --from=build /app/dist /app/dist
|
||||||
|
|
||||||
|
ARG APP_VERSION=latest
|
||||||
|
ARG APP_VERSION
|
||||||
|
|
||||||
ENV HOST=0.0.0.0
|
ENV HOST=0.0.0.0
|
||||||
ENV SITE_URL=https://docs.alexlebens.dev
|
|
||||||
ENV PORT=4321
|
ENV PORT=4321
|
||||||
|
|
||||||
|
LABEL version=$APP_VERSION
|
||||||
|
LABEL description="Astro based documentation website"
|
||||||
|
|
||||||
EXPOSE $PORT
|
EXPOSE $PORT
|
||||||
CMD ["node", "./dist/server/entry.mjs"]
|
CMD ["bun", "run", "./dist/server/entry.mjs"]
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
21
README.md
21
README.md
@@ -1,4 +1,4 @@
|
|||||||
# Starlight Starter Kit: Basics
|
# Starlight
|
||||||
|
|
||||||
[](https://starlight.astro.build)
|
[](https://starlight.astro.build)
|
||||||
|
|
||||||
@@ -6,9 +6,7 @@
|
|||||||
pnpm create astro@latest -- --template starlight
|
pnpm create astro@latest -- --template starlight
|
||||||
```
|
```
|
||||||
|
|
||||||
> 🧑🚀 **Seasoned astronaut?** Delete this file. Have fun!
|
## Project Structure
|
||||||
|
|
||||||
## 🚀 Project Structure
|
|
||||||
|
|
||||||
Inside of your Astro + Starlight project, you'll see the following folders and files:
|
Inside of your Astro + Starlight project, you'll see the following folders and files:
|
||||||
|
|
||||||
@@ -31,19 +29,12 @@ Images can be added to `src/assets/` and embedded in Markdown with a relative li
|
|||||||
|
|
||||||
Static assets, like favicons, can be placed in the `public/` directory.
|
Static assets, like favicons, can be placed in the `public/` directory.
|
||||||
|
|
||||||
## 🧞 Commands
|
## Commands
|
||||||
|
|
||||||
All commands are run from the root of the project, from a terminal:
|
All commands are run from the root of the project, from a terminal:
|
||||||
|
|
||||||
| Command | Action |
|
| Command | Action |
|
||||||
| :--------------------- | :----------------------------------------------- |
|
| :--------------------- | :----------------------------------------------- |
|
||||||
| `pnpm install` | Installs dependencies |
|
| `bun install` | Installs dependencies |
|
||||||
| `pnpm dev` | Starts local dev server at `localhost:4321` |
|
| `bun run dev` | Starts local dev server at `localhost:4321` |
|
||||||
| `pnpm build` | Build your production site to `./dist/` |
|
| `bun run build` | Build your production site to `./dist/` |
|
||||||
| `pnpm preview` | Preview your build locally, before deploying |
|
|
||||||
| `pnpm astro ...` | Run CLI commands like `astro add`, `astro check` |
|
|
||||||
| `pnpm astro -- --help` | Get help using the Astro CLI |
|
|
||||||
|
|
||||||
## 👀 Want to learn more?
|
|
||||||
|
|
||||||
Check out [Starlight’s docs](https://starlight.astro.build/), read [the Astro documentation](https://docs.astro.build), or jump into the [Astro Discord server](https://astro.build/chat).
|
|
||||||
|
|||||||
@@ -2,9 +2,9 @@
|
|||||||
import { defineConfig } from "astro/config";
|
import { defineConfig } from "astro/config";
|
||||||
|
|
||||||
import node from "@astrojs/node";
|
import node from "@astrojs/node";
|
||||||
import tailwindcss from "@tailwindcss/vite";
|
import sitemap from '@astrojs/sitemap';
|
||||||
import starlight from "@astrojs/starlight";
|
import starlight from "@astrojs/starlight";
|
||||||
import catppuccin from "@catppuccin/starlight";
|
import starlightThemeRapide from 'starlight-theme-rapide'
|
||||||
|
|
||||||
const getSiteURL = () => {
|
const getSiteURL = () => {
|
||||||
if (process.env.SITE_URL) {
|
if (process.env.SITE_URL) {
|
||||||
@@ -13,52 +13,62 @@ const getSiteURL = () => {
|
|||||||
return "http://localhost:4321";
|
return "http://localhost:4321";
|
||||||
};
|
};
|
||||||
|
|
||||||
// https://astro.build/config
|
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
site: getSiteURL(),
|
site: getSiteURL(),
|
||||||
|
|
||||||
|
prefetch: true,
|
||||||
|
|
||||||
integrations: [
|
integrations: [
|
||||||
tailwindcss(),
|
sitemap(),
|
||||||
starlight({
|
starlight({
|
||||||
title: "My Docs",
|
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',
|
||||||
|
],
|
||||||
|
expressiveCode: {
|
||||||
|
themes: ['vitesse-light', 'vitesse-dark'],
|
||||||
|
},
|
||||||
social: [
|
social: [
|
||||||
{
|
{
|
||||||
icon: "github",
|
icon: "external",
|
||||||
label: "GitHub",
|
label: "Homepage",
|
||||||
href: "https://github.com/withastro/starlight",
|
href: "https://www.alexlebens.dev",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
plugins: [
|
plugins: [
|
||||||
catppuccin({
|
starlightThemeRapide()
|
||||||
dark: { flavor: "macchiato", accent: "sapphire" },
|
|
||||||
light: { flavor: "latte", accent: "sky" }
|
|
||||||
})
|
|
||||||
],
|
],
|
||||||
sidebar: [
|
sidebar: [
|
||||||
{
|
|
||||||
label: "Guides",
|
|
||||||
items: [
|
|
||||||
// Each item here is one entry in the navigation menu.
|
|
||||||
{ label: "Example Guide", slug: "guides/example" },
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
label: "Reference",
|
label: "Reference",
|
||||||
autogenerate: { directory: "reference" },
|
autogenerate: { directory: "reference" },
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
label: "Guides",
|
||||||
|
autogenerate: { directory: "guides" },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "Applications",
|
||||||
|
collapsed: true,
|
||||||
|
autogenerate: { directory: "applications" },
|
||||||
|
},
|
||||||
],
|
],
|
||||||
}),
|
})
|
||||||
],
|
],
|
||||||
|
|
||||||
plugins: {
|
output: 'static',
|
||||||
"@tailwindcss/postcss": {},
|
|
||||||
},
|
|
||||||
|
|
||||||
vite: {
|
|
||||||
plugins: [tailwindcss()],
|
|
||||||
},
|
|
||||||
|
|
||||||
adapter: node({
|
adapter: node({
|
||||||
mode: "standalone",
|
mode: 'standalone',
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
|
|||||||
50
package.json
50
package.json
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "site-documentation",
|
"name": "site-documentation",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"version": "0.0.7",
|
"version": "0.24.0",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "astro dev",
|
"dev": "astro dev",
|
||||||
"build": "astro build",
|
"build": "astro build",
|
||||||
@@ -12,27 +12,37 @@
|
|||||||
"astro": "astro"
|
"astro": "astro"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@astrojs/mdx": "4.3.13",
|
"@astrojs/mdx": "5.0.3",
|
||||||
"@astrojs/node": "9.5.2",
|
"@astrojs/node": "10.0.4",
|
||||||
"@astrojs/starlight": "^0.37.1",
|
"@astrojs/sitemap": "3.7.2",
|
||||||
"@catppuccin/starlight": "1.0.2",
|
"@astrojs/starlight": "0.38.3",
|
||||||
"@tailwindcss/postcss": "^4.1.18",
|
"@tailwindcss/postcss": "4.2.2",
|
||||||
"@tailwindcss/vite": "^4.1.18",
|
"@tailwindcss/vite": "4.2.2",
|
||||||
"astro": "5.16.14",
|
"astro": "6.1.5",
|
||||||
"motion": "^12.23.26",
|
"sanitize-html": "2.17.2",
|
||||||
"sanitize-html": "^2.17.0",
|
"sharp": "0.34.5",
|
||||||
"sharp": "^0.34.5",
|
"starlight-theme-rapide": "0.5.2",
|
||||||
"tailwindcss": "^4.1.18"
|
"tailwindcss": "4.2.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@tailwindcss/typography": "^0.5.19",
|
"@saithodev/semantic-release-gitea": "2.1.0",
|
||||||
"@typescript-eslint/parser": "8.53.1",
|
"@semantic-release/changelog": "6.0.3",
|
||||||
"eslint": "9.39.2",
|
"@semantic-release/commit-analyzer": "13.0.1",
|
||||||
|
"@semantic-release/git": "10.0.1",
|
||||||
|
"@semantic-release/npm": "13.1.5",
|
||||||
|
"@semantic-release/release-notes-generator": "14.1.0",
|
||||||
|
"@tailwindcss/forms": "0.5.11",
|
||||||
|
"@tailwindcss/typography": "0.5.19",
|
||||||
|
"@typescript-eslint/parser": "8.58.1",
|
||||||
|
"eslint": "10.2.0",
|
||||||
"eslint-config-prettier": "10.1.8",
|
"eslint-config-prettier": "10.1.8",
|
||||||
"eslint-plugin-astro": "1.5.0",
|
"eslint-plugin-astro": "1.7.0",
|
||||||
"prettier": "^3.7.4",
|
"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",
|
||||||
"typescript-eslint": "8.53.1"
|
"semantic-release": "25.0.3",
|
||||||
|
"semantic-release-export-data": "1.2.0",
|
||||||
|
"typescript": "6.0.2",
|
||||||
|
"typescript-eslint": "8.58.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
5916
pnpm-lock.yaml
generated
5916
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
|
Before Width: | Height: | Size: 696 B After Width: | Height: | Size: 9.9 KiB |
BIN
public/favicon_icon.png
Normal file
BIN
public/favicon_icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 98 KiB |
1
public/favicon_icon.svg
Normal file
1
public/favicon_icon.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 9.9 KiB |
@@ -5,10 +5,11 @@
|
|||||||
"mergeConfidence:all-badges",
|
"mergeConfidence:all-badges",
|
||||||
":rebaseStalePrs"
|
":rebaseStalePrs"
|
||||||
],
|
],
|
||||||
"timezone": "US/Central",
|
"timezone": "America/Chicago",
|
||||||
"labels": [],
|
"labels": [],
|
||||||
"prHourlyLimit": 0,
|
"prHourlyLimit": 0,
|
||||||
"prConcurrentLimit": 0,
|
"prConcurrentLimit": 0,
|
||||||
|
"rangeStrategy": "pin",
|
||||||
"packageRules": [
|
"packageRules": [
|
||||||
{
|
{
|
||||||
"description": "Label dependency",
|
"description": "Label dependency",
|
||||||
|
|||||||
BIN
src/assets/autumn_mountain.png
Normal file
BIN
src/assets/autumn_mountain.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 13 MiB |
Binary file not shown.
|
Before Width: | Height: | Size: 96 KiB |
23
src/content/docs/applications/actual.mdx
Normal file
23
src/content/docs/applications/actual.mdx
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
title: Actual
|
||||||
|
description: Actual Budget is a super fast and privacy-focused app for managing finances.
|
||||||
|
hero:
|
||||||
|
tagline: Actual Budget is a super fast and privacy-focused app for managing finances.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/actual-budget.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/actualbudget/actual
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
29
src/content/docs/applications/argo-cd.mdx
Normal file
29
src/content/docs/applications/argo-cd.mdx
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
---
|
||||||
|
title: Argo CD
|
||||||
|
description: Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes.
|
||||||
|
hero:
|
||||||
|
tagline: Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes.
|
||||||
|
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/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.
|
||||||
25
src/content/docs/applications/audiobookshelf.mdx
Normal file
25
src/content/docs/applications/audiobookshelf.mdx
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
---
|
||||||
|
title: Audiobookshelf
|
||||||
|
description: Audiobookshelf is a self-hosted audiobook and podcast server.
|
||||||
|
hero:
|
||||||
|
tagline: Audiobookshelf is a self-hosted audiobook and podcast server.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/audiobookshelf.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/advplyr/audiobookshelf
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
29
src/content/docs/applications/authentik.mdx
Normal file
29
src/content/docs/applications/authentik.mdx
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
---
|
||||||
|
title: Authentik
|
||||||
|
description: Authentik is an open-source Identity Provider (IdP) for modern SSO. It supports SAML, OAuth2/OIDC, LDAP, RADIUS, and more, designed for self-hosting from small labs to large production clusters.
|
||||||
|
hero:
|
||||||
|
tagline: Authentik is an open-source Identity Provider (IdP) for modern SSO. It supports SAML, OAuth2/OIDC, LDAP, RADIUS, and more, designed for self-hosting from small labs to large production clusters.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/authentik.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/goauthentik/authentik
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
25
src/content/docs/applications/backrest.mdx
Normal file
25
src/content/docs/applications/backrest.mdx
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
---
|
||||||
|
title: Backrest
|
||||||
|
description: Backrest is a web-accessible backup solution built on top of restic.
|
||||||
|
hero:
|
||||||
|
tagline: Backrest is a web-accessible backup solution built on top of restic.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/backrest.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/garethgeorge/backrest
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
23
src/content/docs/applications/bazarr.mdx
Normal file
23
src/content/docs/applications/bazarr.mdx
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
title: Bazarr
|
||||||
|
description: Bazarr is a companion application to Sonarr and Radarr. It manages and downloads subtitles based on your requirements.
|
||||||
|
hero:
|
||||||
|
tagline: Bazarr is a companion application to Sonarr and Radarr. It manages and downloads subtitles based on your requirements.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/bazarr.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/morpheus65535/bazarr
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
29
src/content/docs/applications/blocky.mdx
Normal file
29
src/content/docs/applications/blocky.mdx
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
---
|
||||||
|
title: Blocky
|
||||||
|
description: Blocky is a DNS proxy and ad-blocker for the local network written in Go with following features.
|
||||||
|
hero:
|
||||||
|
tagline: Blocky is a DNS proxy and ad-blocker for the local network written in Go with following features.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/blocky.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/0xERR0R/blocky
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
27
src/content/docs/applications/cert-manager.mdx
Normal file
27
src/content/docs/applications/cert-manager.mdx
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
title: Cert Manager
|
||||||
|
description: Cert Manager adds certificates and certificate issuers as resource types in Kubernetes clusters, and simplifies the process of obtaining, renewing and using those certificates.
|
||||||
|
hero:
|
||||||
|
tagline: Cert Manager adds certificates and certificate issuers as resource types in Kubernetes clusters, and simplifies the process of obtaining, renewing and using those certificates.
|
||||||
|
image:
|
||||||
|
file: https://raw.githubusercontent.com/cert-manager/cert-manager/52bddefde7b2d44841c77cf15038d51330cb9748/logo/logo.svg
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/cert-manager/cert-manager
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
29
src/content/docs/applications/cilium.mdx
Normal file
29
src/content/docs/applications/cilium.mdx
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
---
|
||||||
|
title: Cilium
|
||||||
|
description: Cilium is a networking, observability, and security solution with an eBPF-based dataplane.
|
||||||
|
hero:
|
||||||
|
tagline: Cilium is a networking, observability, and security solution with an eBPF-based dataplane.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/cilium.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/cilium/cilium
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
31
src/content/docs/applications/cloudnative-pg.mdx
Normal file
31
src/content/docs/applications/cloudnative-pg.mdx
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
---
|
||||||
|
title: CloudNativePG
|
||||||
|
description: CloudNativePG (CNPG) is an open-source platform designed to seamlessly manage PostgreSQL databases in Kubernetes environments.
|
||||||
|
hero:
|
||||||
|
tagline: CloudNativePG (CNPG) is an open-source platform designed to seamlessly manage PostgreSQL databases in Kubernetes environments.
|
||||||
|
image:
|
||||||
|
file: https://raw.githubusercontent.com/cloudnative-pg/cloudnative-pg.github.io/0c2d2ff561b7b8ddb6bc06ddb91bd20b73d3f82d/assets/images/hero_image.svg
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/cloudnative-pg/cloudnative-pg
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
29
src/content/docs/applications/coredns.mdx
Normal file
29
src/content/docs/applications/coredns.mdx
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
---
|
||||||
|
title: CoreDNS
|
||||||
|
description: CoreDNS is a DNS server/forwarder, written in Go, that chains plugins.
|
||||||
|
hero:
|
||||||
|
tagline: CoreDNS is a DNS server/forwarder, written in Go, that chains plugins.
|
||||||
|
image:
|
||||||
|
file: https://raw.githubusercontent.com/coredns/coredns.io/refs/heads/master/static/images/favicon.png
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/coredns/coredns
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
25
src/content/docs/applications/dawarich.mdx
Normal file
25
src/content/docs/applications/dawarich.mdx
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
---
|
||||||
|
title: Dawarich
|
||||||
|
description: Dawarich is a self-hostable web app designed to replace Google Timeline (aka Google Location History).
|
||||||
|
hero:
|
||||||
|
tagline: Dawarich is a self-hostable web app designed to replace Google Timeline (aka Google Location History).
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/dawarich.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/Freika/dawarich
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
title: Democratic CSI
|
||||||
|
description: Democratic CSI implements the csi (container storage interface) spec providing storage for various container orchestration systems.
|
||||||
|
hero:
|
||||||
|
tagline: Democratic CSI implements the csi (container storage interface) spec providing storage for various container orchestration systems.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/kubernetes.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/democratic-csi/democratic-csi
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
27
src/content/docs/applications/descheduler.mdx
Normal file
27
src/content/docs/applications/descheduler.mdx
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
title: Descheduler
|
||||||
|
description: Descheduler, based on its policy, finds pods that can be moved and evicts them.
|
||||||
|
hero:
|
||||||
|
tagline: Descheduler, based on its policy, finds pods that can be moved and evicts them.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/kubernetes.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/kubernetes-sigs/descheduler
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
23
src/content/docs/applications/directus.mdx
Normal file
23
src/content/docs/applications/directus.mdx
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
title: Directus
|
||||||
|
description: Directus is a real-time API and App dashboard for managing SQL database content.
|
||||||
|
hero:
|
||||||
|
tagline: Directus is a real-time API and App dashboard for managing SQL database content.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/directus.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/directus/directus
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
23
src/content/docs/applications/elastic-operator.mdx
Normal file
23
src/content/docs/applications/elastic-operator.mdx
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
title: Elastic Cloud on Kubernetes
|
||||||
|
description: Elastic Cloud on Kubernetes automates the deployment, provisioning, management, and orchestration of Elasticsearch, Kibana, APM Server, Enterprise Search, Beats, Elastic Agent, Elastic Maps Server, Logstash, Elastic AutoOps Agent, and Elastic Package Registry on Kubernetes based on the operator pattern.
|
||||||
|
hero:
|
||||||
|
tagline: Elastic Cloud on Kubernetes automates the deployment, provisioning, management, and orchestration of Elasticsearch, Kibana, APM Server, Enterprise Search, Beats, Elastic Agent, Elastic Maps Server, Logstash, Elastic AutoOps Agent, and Elastic Package Registry on Kubernetes based on the operator pattern.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/elastic.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/elastic/cloud-on-k8s
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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/).
|
||||||
27
src/content/docs/applications/element-web.mdx
Normal file
27
src/content/docs/applications/element-web.mdx
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
title: Element Web
|
||||||
|
description: Element (formerly known as Vector and Riot) is a Matrix web & desktop client built using the Matrix JS SDK.
|
||||||
|
hero:
|
||||||
|
tagline: Element (formerly known as Vector and Riot) is a Matrix web & desktop client built using the Matrix JS SDK.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/element.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/element-hq/element-web
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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/)
|
||||||
23
src/content/docs/applications/eraser.mdx
Normal file
23
src/content/docs/applications/eraser.mdx
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
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
|
||||||
|
---
|
||||||
|
|
||||||
|
# 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.
|
||||||
23
src/content/docs/applications/excalidraw.mdx
Normal file
23
src/content/docs/applications/excalidraw.mdx
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
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
|
||||||
|
---
|
||||||
|
|
||||||
|
# Purpose
|
||||||
|
|
||||||
|
Used to make diagrams and other sketches.
|
||||||
|
|
||||||
|
# Notes
|
||||||
|
|
||||||
|
Mostly used in blog posts and documentation.
|
||||||
27
src/content/docs/applications/external-dns.mdx
Normal file
27
src/content/docs/applications/external-dns.mdx
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
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
|
||||||
|
---
|
||||||
|
|
||||||
|
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.
|
||||||
27
src/content/docs/applications/external-secrets.mdx
Normal file
27
src/content/docs/applications/external-secrets.mdx
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
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
|
||||||
|
---
|
||||||
|
|
||||||
|
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/).
|
||||||
27
src/content/docs/applications/foldergram.mdx
Normal file
27
src/content/docs/applications/foldergram.mdx
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
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
|
||||||
|
---
|
||||||
|
|
||||||
|
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.
|
||||||
27
src/content/docs/applications/freshrss.mdx
Normal file
27
src/content/docs/applications/freshrss.mdx
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
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
|
||||||
|
---
|
||||||
|
|
||||||
|
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.
|
||||||
33
src/content/docs/applications/garage.mdx
Normal file
33
src/content/docs/applications/garage.mdx
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
---
|
||||||
|
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
|
||||||
|
---
|
||||||
|
|
||||||
|
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.
|
||||||
27
src/content/docs/applications/gatus.mdx
Normal file
27
src/content/docs/applications/gatus.mdx
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
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
|
||||||
|
---
|
||||||
|
|
||||||
|
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/).
|
||||||
23
src/content/docs/applications/generic-device-plugin.mdx
Normal file
23
src/content/docs/applications/generic-device-plugin.mdx
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
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
|
||||||
|
---
|
||||||
|
|
||||||
|
# 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).
|
||||||
31
src/content/docs/applications/gitea.mdx
Normal file
31
src/content/docs/applications/gitea.mdx
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
---
|
||||||
|
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
|
||||||
|
---
|
||||||
|
|
||||||
|
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.
|
||||||
27
src/content/docs/applications/grafana-operator.mdx
Normal file
27
src/content/docs/applications/grafana-operator.mdx
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
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
|
||||||
|
---
|
||||||
|
|
||||||
|
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].
|
||||||
25
src/content/docs/applications/grimmory.mdx
Normal file
25
src/content/docs/applications/grimmory.mdx
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
---
|
||||||
|
title: Grimmory
|
||||||
|
description: Grimmory is a self-hosted application for managing your entire book collection in one place.
|
||||||
|
hero:
|
||||||
|
tagline: Grimmory is a self-hosted application for managing your entire book collection in one place.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/booklore.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/grimmory-tools/grimmory
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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/).
|
||||||
29
src/content/docs/applications/harbor.mdx
Normal file
29
src/content/docs/applications/harbor.mdx
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
---
|
||||||
|
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
|
||||||
|
---
|
||||||
|
|
||||||
|
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.
|
||||||
23
src/content/docs/applications/headlamp.mdx
Normal file
23
src/content/docs/applications/headlamp.mdx
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
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
|
||||||
|
---
|
||||||
|
|
||||||
|
# Purpose
|
||||||
|
|
||||||
|
Dashboard for Kubernetes.
|
||||||
|
|
||||||
|
# Notes
|
||||||
|
|
||||||
|
I also use the desktop app which is identical.
|
||||||
23
src/content/docs/applications/home-assistant.mdx
Normal file
23
src/content/docs/applications/home-assistant.mdx
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
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
|
||||||
|
---
|
||||||
|
|
||||||
|
# Purpose
|
||||||
|
|
||||||
|
Home automation, connecting to various IoT devices through Zigbee, Matter, etc.
|
||||||
|
|
||||||
|
# Notes
|
||||||
|
|
||||||
|
Currently unused.
|
||||||
23
src/content/docs/applications/homepage.mdx
Normal file
23
src/content/docs/applications/homepage.mdx
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
title: Homepage
|
||||||
|
description: A highly customizable homepage (or startpage / application dashboard) with Docker and service API integrations.
|
||||||
|
hero:
|
||||||
|
tagline: A highly customizable homepage (or startpage / application dashboard) with Docker and service API integrations.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/homepage.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/gethomepage/homepage
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
23
src/content/docs/applications/houndarr.mdx
Normal file
23
src/content/docs/applications/houndarr.mdx
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
title: Houndarr
|
||||||
|
description: Automated missing-media search for your *arr stack. Small batches. Polite intervals. Zero indexer abuse.
|
||||||
|
hero:
|
||||||
|
tagline: Automated missing-media search for your *arr stack. Small batches. Polite intervals. Zero indexer abuse.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/houndarr.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/av1155/houndarr
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
27
src/content/docs/applications/immich.mdx
Normal file
27
src/content/docs/applications/immich.mdx
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
title: Immich
|
||||||
|
description: High performance self-hosted photo and video management solution.
|
||||||
|
hero:
|
||||||
|
tagline: High performance self-hosted photo and video management solution.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/immich.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/immich-app/immich
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
23
src/content/docs/applications/intel-device-plugin.mdx
Normal file
23
src/content/docs/applications/intel-device-plugin.mdx
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
title: Intel Device Plugins Operator
|
||||||
|
description: Intel Device Plugins Operator manages plugins, then the GPU device plugin provides access to discrete and integrated Intel GPU device files.
|
||||||
|
hero:
|
||||||
|
tagline: Intel Device Plugins Operator manages plugins, then the GPU device plugin provides access to discrete and integrated Intel GPU device files.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/kubernetes.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/intel/intel-device-plugins-for-kubernetes
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
29
src/content/docs/applications/jellyfin.mdx
Normal file
29
src/content/docs/applications/jellyfin.mdx
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
---
|
||||||
|
title: Jellyfin
|
||||||
|
description: Jellyfin is a Free Software Media System that puts you in control of managing and streaming your media.
|
||||||
|
hero:
|
||||||
|
tagline: Jellyfin is a Free Software Media System that puts you in control of managing and streaming your media.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/jellyfin.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/jellyfin/jellyfin
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
23
src/content/docs/applications/jellystat.mdx
Normal file
23
src/content/docs/applications/jellystat.mdx
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
title: Jellystat
|
||||||
|
description: Jellystat is a free and open source Statistics App for Jellyfin!
|
||||||
|
hero:
|
||||||
|
tagline: Jellystat is a free and open source Statistics App for Jellyfin!
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/jellystat.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/CyferShepard/Jellystat
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
29
src/content/docs/applications/karakeep.mdx
Normal file
29
src/content/docs/applications/karakeep.mdx
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
---
|
||||||
|
title: Karakeep
|
||||||
|
description: Karakeep is a self-hostable bookmark-everything app with a touch of AI for the data hoarders out there.
|
||||||
|
hero:
|
||||||
|
tagline: Karakeep is a self-hostable bookmark-everything app with a touch of AI for the data hoarders out there.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/karakeep.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/karakeep-app/karakeep
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
26
src/content/docs/applications/kiwix.mdx
Normal file
26
src/content/docs/applications/kiwix.mdx
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
---
|
||||||
|
title: Kiwix
|
||||||
|
description: Kiwix is an open-source software that allows you to have the whole Wikipedia at your fingertips.
|
||||||
|
hero:
|
||||||
|
tagline: Kiwix is an open-source software that allows you to have the whole Wikipedia at your fingertips.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/kiwix.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/kiwix
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
|
|
||||||
25
src/content/docs/applications/komodo.mdx
Normal file
25
src/content/docs/applications/komodo.mdx
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
---
|
||||||
|
title: Komodo
|
||||||
|
description: Komodo is a tool to build and deploy software across many servers.
|
||||||
|
hero:
|
||||||
|
tagline: Komodo is a tool to build and deploy software across many servers.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/komodo.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/moghtech/komodo
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
33
src/content/docs/applications/kube-prometheus-stack.mdx
Normal file
33
src/content/docs/applications/kube-prometheus-stack.mdx
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
---
|
||||||
|
title: Prometheus
|
||||||
|
description: Prometheus, a Cloud Native Computing Foundation project, is a systems and service monitoring system.
|
||||||
|
hero:
|
||||||
|
tagline: Prometheus, a Cloud Native Computing Foundation project, is a systems and service monitoring system.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/prometheus.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/prometheus/prometheus
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
title: Kubelet Serving Certificate Approver
|
||||||
|
description: Kubelet Serving Certificate Approver is a custom approving controller which approves kubernetes.io/kubelet-serving Certificate Signing Request that kubelet use to serve TLS endpoints.
|
||||||
|
hero:
|
||||||
|
tagline: Kubelet Serving Certificate Approver is a custom approving controller which approves kubernetes.io/kubelet-serving Certificate Signing Request that kubelet use to serve TLS endpoints.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/kubernetes.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/alex1989hu/kubelet-serving-cert-approver
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
23
src/content/docs/applications/kubernetes-cloudflare-ddns.mdx
Normal file
23
src/content/docs/applications/kubernetes-cloudflare-ddns.mdx
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
title: Kubernetes Cloudflare DDNS
|
||||||
|
description: This is a simple Kubernetes cronjob which can be used for updating a DNS record on Cloudflare.
|
||||||
|
hero:
|
||||||
|
tagline: This is a simple Kubernetes cronjob which can be used for updating a DNS record on Cloudflare.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/cloudflare.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/kubitodev/kubernetes-cloudflare-ddns
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
23
src/content/docs/applications/languagetool.mdx
Normal file
23
src/content/docs/applications/languagetool.mdx
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
title: LanguageTool
|
||||||
|
description: LanguageTool is open-source proofreading software for English, Spanish, French, German, Portuguese, Polish, Dutch, and more than 20 other languages. It finds many errors that a simple spell checker cannot detect.
|
||||||
|
hero:
|
||||||
|
tagline: LanguageTool is open-source proofreading software for English, Spanish, French, German, Portuguese, Polish, Dutch, and more than 20 other languages. It finds many errors that a simple spell checker cannot detect.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/languagetool.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/languagetool-org/languagetool
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
23
src/content/docs/applications/libation.mdx
Normal file
23
src/content/docs/applications/libation.mdx
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
title: Libation
|
||||||
|
description: Libation is a free, open-source application for downloading and managing your Audible audiobooks. It decrypts your library, removes DRM, and lets you own your audiobooks forever.
|
||||||
|
hero:
|
||||||
|
tagline: Libation is a free, open-source application for downloading and managing your Audible audiobooks. It decrypts your library, removes DRM, and lets you own your audiobooks forever.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/libation.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/rmcrackan/Libation
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
25
src/content/docs/applications/lidarr.mdx
Normal file
25
src/content/docs/applications/lidarr.mdx
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
---
|
||||||
|
title: Lidarr
|
||||||
|
description: Lidarr is a music collection manager for Usenet and BitTorrent users.
|
||||||
|
hero:
|
||||||
|
tagline: Lidarr is a music collection manager for Usenet and BitTorrent users.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/lidarr.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/Lidarr/Lidarr
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
23
src/content/docs/applications/local-path-provisioner.mdx
Normal file
23
src/content/docs/applications/local-path-provisioner.mdx
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
title: Local Path Provisioner
|
||||||
|
description: Dynamically provisioning persistent local storage with Kubernetes
|
||||||
|
hero:
|
||||||
|
tagline: Dynamically provisioning persistent local storage with Kubernetes
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/kubernetes.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/rancher/local-path-provisioner
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
31
src/content/docs/applications/loki.mdx
Normal file
31
src/content/docs/applications/loki.mdx
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
---
|
||||||
|
title: Loki
|
||||||
|
description: Loki is a horizontally-scalable, highly-available, multi-tenant log aggregation system inspired by Prometheus.
|
||||||
|
hero:
|
||||||
|
tagline: Loki is a horizontally-scalable, highly-available, multi-tenant log aggregation system inspired by Prometheus.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/loki.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/grafana/loki
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
25
src/content/docs/applications/mariadb-operator.mdx
Normal file
25
src/content/docs/applications/mariadb-operator.mdx
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
---
|
||||||
|
title: MariaDB Operator
|
||||||
|
description: Run and operate MariaDB in a cloud native way. Declaratively manage your MariaDB using Kubernetes CRDs rather than imperative commands.
|
||||||
|
hero:
|
||||||
|
tagline: Run and operate MariaDB in a cloud native way. Declaratively manage your MariaDB using Kubernetes CRDs rather than imperative commands.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/mariadb.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/mariadb-operator/mariadb-operator
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
29
src/content/docs/applications/matrix-synapse.mdx
Normal file
29
src/content/docs/applications/matrix-synapse.mdx
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
---
|
||||||
|
title: Matrix Synapse
|
||||||
|
description: Matrix is the open standard for secure and interoperable real-time communications. Synapse is an open source Matrix homeserver implementation, written and maintained by Element.
|
||||||
|
hero:
|
||||||
|
tagline: Matrix is the open standard for secure and interoperable real-time communications. Synapse is an open source Matrix homeserver implementation, written and maintained by Element.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/matrix.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/element-hq/synapse
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
23
src/content/docs/applications/medialyze.mdx
Normal file
23
src/content/docs/applications/medialyze.mdx
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
title: MediaLyze
|
||||||
|
description: Self-hosted media library analysis for large video collections.
|
||||||
|
hero:
|
||||||
|
tagline: Self-hosted media library analysis for large video collections.
|
||||||
|
image:
|
||||||
|
file: https://raw.githubusercontent.com/frederikemmer/MediaLyze/d8f69c0628bac7c047b90f91a66341648029c273/frontend/public/favicon.svg
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/frederikemmer/MediaLyze
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
23
src/content/docs/applications/metrics-server.mdx
Normal file
23
src/content/docs/applications/metrics-server.mdx
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
title: Metrics Server
|
||||||
|
description: Metrics Server is a scalable, efficient source of container resource metrics for Kubernetes built-in autoscaling pipelines.
|
||||||
|
hero:
|
||||||
|
tagline: Metrics Server is a scalable, efficient source of container resource metrics for Kubernetes built-in autoscaling pipelines.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/kubernetes.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/kubernetes-sigs/metrics-server
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
23
src/content/docs/applications/music-grabber.mdx
Normal file
23
src/content/docs/applications/music-grabber.mdx
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
title: Music Grabber
|
||||||
|
description: A self-hosted music acquisition service. Search YouTube, SoundCloud, Soulseek, MP3Phoenix and Monochrome (Tidal lossless), tap a result and it downloads the best quality audio straight into your music library.
|
||||||
|
hero:
|
||||||
|
tagline: A self-hosted music acquisition service. Search YouTube, SoundCloud, Soulseek, MP3Phoenix and Monochrome (Tidal lossless), tap a result and it downloads the best quality audio straight into your music library.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/music-grabber.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://gitlab.com/g33kphr33k/musicgrabber
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
29
src/content/docs/applications/navidrome.mdx
Normal file
29
src/content/docs/applications/navidrome.mdx
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
---
|
||||||
|
title: Navidrome
|
||||||
|
description: Navidrome is an open source web-based music collection server and streamer. It gives you freedom to listen to your music collection from any browser or mobile device.
|
||||||
|
hero:
|
||||||
|
tagline: Navidrome is an open source web-based music collection server and streamer. It gives you freedom to listen to your music collection from any browser or mobile device.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/navidrome.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/navidrome/navidrome
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
23
src/content/docs/applications/node-feature-discovery.mdx
Normal file
23
src/content/docs/applications/node-feature-discovery.mdx
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
title: Node Feature Discovery
|
||||||
|
description: Node Feature Discovery is a Kubernetes add-on for detecting hardware features and system configuration.
|
||||||
|
hero:
|
||||||
|
tagline: Node Feature Discovery is a Kubernetes add-on for detecting hardware features and system configuration.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/kubernetes.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/kubernetes-sigs/node-feature-discovery
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
27
src/content/docs/applications/ntfy.mdx
Normal file
27
src/content/docs/applications/ntfy.mdx
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
title: ntfy
|
||||||
|
description: ntfy (pronounced "notify") is a simple HTTP-based pub-sub notification service.
|
||||||
|
hero:
|
||||||
|
tagline: ntfy (pronounced "notify") is a simple HTTP-based pub-sub notification service.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/ntfy.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/binwiederhier/ntfy
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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).
|
||||||
27
src/content/docs/applications/ollama.mdx
Normal file
27
src/content/docs/applications/ollama.mdx
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
title: Ollama
|
||||||
|
description: Get up and running with Kimi-K2.5, GLM-5, MiniMax, DeepSeek, gpt-oss, Qwen, Gemma and other models.
|
||||||
|
hero:
|
||||||
|
tagline: Get up and running with Kimi-K2.5, GLM-5, MiniMax, DeepSeek, gpt-oss, Qwen, Gemma and other models.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/ollama.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/ollama/ollama
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
23
src/content/docs/applications/omni-tools.mdx
Normal file
23
src/content/docs/applications/omni-tools.mdx
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
title: OmniTools
|
||||||
|
description: Self-hosted collection of powerful web-based tools for everyday tasks. No ads, no tracking, just fast, accessible utilities right from your browser!
|
||||||
|
hero:
|
||||||
|
tagline: Self-hosted collection of powerful web-based tools for everyday tasks. No ads, no tracking, just fast, accessible utilities right from your browser!
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/omnitools.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/iib0011/omni-tools
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
29
src/content/docs/applications/outline.mdx
Normal file
29
src/content/docs/applications/outline.mdx
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
---
|
||||||
|
title: Outline
|
||||||
|
description: A fast, collaborative, knowledge base for your team built using React and Node.js.
|
||||||
|
hero:
|
||||||
|
tagline: A fast, collaborative, knowledge base for your team built using React and Node.js.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/outline.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/outline/outline
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
29
src/content/docs/applications/paperless-ngx.mdx
Normal file
29
src/content/docs/applications/paperless-ngx.mdx
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
---
|
||||||
|
title: Paperless-ngx
|
||||||
|
description: A community-supported supercharged document management system; scan, index and archive all your documents.
|
||||||
|
hero:
|
||||||
|
tagline: A community-supported supercharged document management system; scan, index and archive all your documents.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/paperless-ngx.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/paperless-ngx/paperless-ngx
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
25
src/content/docs/applications/plex.mdx
Normal file
25
src/content/docs/applications/plex.mdx
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
---
|
||||||
|
title: Plex
|
||||||
|
description: Plex organizes video, music and photos from personal media libraries and streams them to smart TVs, streaming boxes and mobile devices.
|
||||||
|
hero:
|
||||||
|
tagline: Plex organizes video, music and photos from personal media libraries and streams them to smart TVs, streaming boxes and mobile devices.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/plex.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/linuxserver/docker-plex
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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).
|
||||||
29
src/content/docs/applications/postiz.mdx
Normal file
29
src/content/docs/applications/postiz.mdx
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
---
|
||||||
|
title: Postiz
|
||||||
|
description: Postiz offers everything you need to manage your social media posts, build an audience, capture leads, and grow your business.
|
||||||
|
hero:
|
||||||
|
tagline: Postiz offers everything you need to manage your social media posts, build an audience, capture leads, and grow your business.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/postiz.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/gitroomhq/postiz-app
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
23
src/content/docs/applications/prowlarr.mdx
Normal file
23
src/content/docs/applications/prowlarr.mdx
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
title: Prowlarr
|
||||||
|
description: Prowlarr is an indexer manager/proxy built on the popular *arr .net/reactjs base stack to integrate with your various PVR apps, supporting management of both Torrent Trackers and Usenet Indexers.
|
||||||
|
hero:
|
||||||
|
tagline: Prowlarr is an indexer manager/proxy built on the popular *arr .net/reactjs base stack to integrate with your various PVR apps, supporting management of both Torrent Trackers and Usenet Indexers.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/prowlarr.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/Prowlarr/Prowlarr
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
29
src/content/docs/applications/qbittorrent.mdx
Normal file
29
src/content/docs/applications/qbittorrent.mdx
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
---
|
||||||
|
title: qBittorrent
|
||||||
|
description: qBittorrent is a bittorrent client programmed in C++ / Qt that uses libtorrent.
|
||||||
|
hero:
|
||||||
|
tagline: qBittorrent is a bittorrent client programmed in C++ / Qt that uses libtorrent.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/qbittorrent.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/qbittorrent/qBittorrent
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
40
src/content/docs/applications/radarr.mdx
Normal file
40
src/content/docs/applications/radarr.mdx
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
---
|
||||||
|
title: Radarr
|
||||||
|
description: Radarr is a movie collection manager for Usenet and BitTorrent users.
|
||||||
|
hero:
|
||||||
|
tagline: Radarr is a movie collection manager for Usenet and BitTorrent users.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/radarr.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/Radarr/Radarr
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/radarr
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart 4K
|
||||||
|
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/radarr-4k
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart Anime
|
||||||
|
link: https://gitea.alexlebens.dev/alexlebens/infrastructure/src/branch/main/clusters/cl01tl/helm/radarr-anime
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart Stand Up
|
||||||
|
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.
|
||||||
23
src/content/docs/applications/rclone.mdx
Normal file
23
src/content/docs/applications/rclone.mdx
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
title: Rclone
|
||||||
|
description: Rclone ("rsync for cloud storage") is a command-line program to sync files and directories to and from different cloud storage providers.
|
||||||
|
hero:
|
||||||
|
tagline: Rclone ("rsync for cloud storage") is a command-line program to sync files and directories to and from different cloud storage providers.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/rclone.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/rclone/rclone
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
23
src/content/docs/applications/reloader.mdx
Normal file
23
src/content/docs/applications/reloader.mdx
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
title: Reloader
|
||||||
|
description: Reloader is a Kubernetes controller that automatically triggers rollouts of workloads (like Deployments, StatefulSets, and more) whenever referenced Secrets, ConfigMaps or optionally CSI-mounted secrets are updated.
|
||||||
|
hero:
|
||||||
|
tagline: Reloader is a Kubernetes controller that automatically triggers rollouts of workloads (like Deployments, StatefulSets, and more) whenever referenced Secrets, ConfigMaps or optionally CSI-mounted secrets are updated.
|
||||||
|
image:
|
||||||
|
file: https://raw.githubusercontent.com/stakater/Reloader/refs/heads/master/assets/web/reloader.jpg
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/stakater/Reloader
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
33
src/content/docs/applications/rook-ceph.mdx
Normal file
33
src/content/docs/applications/rook-ceph.mdx
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
---
|
||||||
|
title: Rook Ceph
|
||||||
|
description: Rook is an open source cloud-native storage orchestrator for Kubernetes, providing the platform, framework, and support for Ceph storage to natively integrate with Kubernetes.
|
||||||
|
hero:
|
||||||
|
tagline: Rook is an open source cloud-native storage orchestrator for Kubernetes, providing the platform, framework, and support for Ceph storage to natively integrate with Kubernetes.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/ceph.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/rook/rook
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
27
src/content/docs/applications/roundcube.mdx
Normal file
27
src/content/docs/applications/roundcube.mdx
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
title: Roundcube
|
||||||
|
description: Roundcube Webmail is a browser-based multilingual IMAP client with an application-like user interface.
|
||||||
|
hero:
|
||||||
|
tagline: Roundcube Webmail is a browser-based multilingual IMAP client with an application-like user interface.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/roundcube.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/roundcube/roundcubemail
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
27
src/content/docs/applications/rybbit.mdx
Normal file
27
src/content/docs/applications/rybbit.mdx
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
title: Rybbit
|
||||||
|
description: Rybbit - open-source and privacy-friendly alternative to Google Analytics that is 10x more intuitive.
|
||||||
|
hero:
|
||||||
|
tagline: Rybbit - open-source and privacy-friendly alternative to Google Analytics that is 10x more intuitive.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/rybbit.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/rybbit-io/rybbit
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
27
src/content/docs/applications/s3-exporter.mdx
Normal file
27
src/content/docs/applications/s3-exporter.mdx
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
title: S3 Exporter
|
||||||
|
description: S3 bucket exporter exposing metrics size and number of objects.
|
||||||
|
hero:
|
||||||
|
tagline: S3 bucket exporter exposing metrics size and number of objects.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/amazon-s3.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/molu8bits/s3bucket_exporter
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
27
src/content/docs/applications/searxng.mdx
Normal file
27
src/content/docs/applications/searxng.mdx
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
title: Searxng
|
||||||
|
description: SearXNG is a free internet metasearch engine which aggregates results from various search services and databases.
|
||||||
|
hero:
|
||||||
|
tagline: SearXNG is a free internet metasearch engine which aggregates results from various search services and databases.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/searxng.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
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.
|
||||||
27
src/content/docs/applications/seerr.mdx
Normal file
27
src/content/docs/applications/seerr.mdx
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
title: Seerr
|
||||||
|
description: Open-source media request and discovery manager for Jellyfin, Plex, and Emby.
|
||||||
|
hero:
|
||||||
|
tagline: Open-source media request and discovery manager for Jellyfin, Plex, and Emby.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/seerr.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/seerr-team/seerr
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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/).
|
||||||
25
src/content/docs/applications/shelfmark.mdx
Normal file
25
src/content/docs/applications/shelfmark.mdx
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
---
|
||||||
|
title: Shelfmark
|
||||||
|
description: Shelfmark is a self-hosted web interface for searching and downloading books and audiobooks from multiple sources.
|
||||||
|
hero:
|
||||||
|
tagline: Shelfmark is a self-hosted web interface for searching and downloading books and audiobooks from multiple sources.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/shelfmark.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/calibrain/shelfmark
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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/)
|
||||||
27
src/content/docs/applications/shelly-plug.mdx
Normal file
27
src/content/docs/applications/shelly-plug.mdx
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
title: Shelly Plug
|
||||||
|
description: Shelly Plug Prometheus exporter.
|
||||||
|
hero:
|
||||||
|
tagline: Shelly Plug Prometheus exporter.
|
||||||
|
image:
|
||||||
|
file: https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/shelly.webp
|
||||||
|
actions:
|
||||||
|
- text: Source
|
||||||
|
link: https://github.com/geerlingguy/shelly-plug-prometheus
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
33
src/content/docs/applications/site-documentation.mdx
Normal file
33
src/content/docs/applications/site-documentation.mdx
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
---
|
||||||
|
title: Site Documentation
|
||||||
|
description: Personal site made with Astro and Starlight for hosting documentation on my homelab.
|
||||||
|
hero:
|
||||||
|
tagline: Personal site made with Astro and Starlight for hosting documentation on my homelab.
|
||||||
|
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-documentation
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
31
src/content/docs/applications/site-profile.mdx
Normal file
31
src/content/docs/applications/site-profile.mdx
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
---
|
||||||
|
title: Site Profile
|
||||||
|
description: Personal site made with Astro for blogging and information about myself.
|
||||||
|
hero:
|
||||||
|
tagline: Personal site made with Astro for blogging and information about myself.
|
||||||
|
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-profile
|
||||||
|
icon: right-arrow
|
||||||
|
- text: Deployment Chart
|
||||||
|
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.
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user