Adding home assistant

This commit is contained in:
Moritz Graf 2024-09-04 21:03:10 +02:00
parent 4fb8dba34f
commit 8786adba80
3 changed files with 238 additions and 1 deletions

View File

@ -318,13 +318,20 @@ done
### home-assistant hass ### home-assistant hass
How to generate token (not really required): https://github.com/hahn-th/homematicip-rest-api
Using this helm chart: [https://github.com/pajikos/home-assistant-helm-chart](https://github.com/pajikos/home-assistant-helm-chart)
Install chart: Install chart:
```sh ```sh
# secret for auth in hass-code
k apply -f home-assistant/hass-code-auth.secret.yml
#
helm repo add pajikos http://pajikos.github.io/home-assistant-helm-chart/ helm repo add pajikos http://pajikos.github.io/home-assistant-helm-chart/
helm repo update helm repo update
#helm show values pajikos/home-assistant > ./home-assistant/home-assistant.yaml #helm show values pajikos/home-assistant > ./home-assistant/home-assistant.yaml
helm install home-assistant pajikos/home-assistant k create ns home-assistant
helm upgrade --install home-assistant pajikos/home-assistant -n home-assistant -f ./home-assistant/home-assistant.yaml
``` ```
### robusta ### robusta

View File

@ -0,0 +1,13 @@
# htpasswd -c htpasswd moritz
# => ooshi7doh0rutaNazeit
# cat htpasswd
# moritz:$apr1$Wes7/nZG$HvxzpYXrP9Ff0FRCxHnnn1
# k create secret generic --from-literal='auth=moritz:$apr1$Wes7/nZG$HvxzpYXrP9Ff0FRCxHnnn1' -o yaml --dry-run=server hass-coder-auth
apiVersion: v1
data:
auth: bW9yaXR6OiRhcHIxJFdlczcvblpHJEh2eHpwWVhyUDlGZjBGUkN4SG5ubjE=
kind: Secret
metadata:
name: hass-coder-auth
namespace: home-assistant
type: Opaque

View File

@ -0,0 +1,217 @@
# # helm show values pajikos/home-assistant | less
# Environment variables
env:
- name: TZ
value: Europe/Berlin
# - name: SOME_VAR_FROM_CONFIG_MAP
# valueFrom:
# configMapRef:
# name: configmap-name
# key: config-key
# - name: SOME_SECRET
# valueFrom:
# secretKeyRef:
# name: secret-name
# key: secret-key
# Ingress settings
ingress:
# Enable ingress for home assistant
enabled: true
className: "nginx"
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
cert-manager.io/cluster-issuer: "letsencrypt-prod"
kubernetes.io/tls-acme: "true"
hosts:
- host: hass.moritzgraf.de
paths:
- path: /
pathType: ImplementationSpecific
tls:
- hosts:
- "hass.moritzgraf.de"
secretName: hass-moritzgraf-de
# Persistence values for the Home Assistant instance
persistence:
# Enable or disable persistence
enabled: true
# Access mode for the persistent volume claim
accessMode: ReadWriteOnce
# Size of the persistent volume claim
size: 10Gi
# Storage class for the persistent volume claim
storageClass: ""
configuration:
# Enable or disable the configuration setup for Home Assistant
enabled: true
# Force init will merge the current configuration file with the default configuration on every start
# This is useful when you want to ensure that the configuration file is always up to date
forceInit: true
# List of trusted proxies in the format of CIDR notation in a case of using a reverse proxy
# Here is the list of the most common private IP ranges, use your list of possible trusted proxies, usually, it's the IP of the reverse proxy
trusted_proxies:
- 10.233.0.0/16
# Template for the configuration.yaml file
# Used the `tpl` function to render the template, so you can use Go template functions
templateConfig: |-
# Loads default set of integrations. Do not remove.
default_config:
{{- if .Values.ingress.enabled }}
http:
use_x_forwarded_for: true
trusted_proxies:
{{- range .Values.configuration.trusted_proxies }}
- {{ . }}
{{- end }}
{{- end}}
# Load frontend themes from the themes folder
frontend:
themes: !include_dir_merge_named themes
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
# moritz custom config
prometheus:
namespace: hass
# Init script for the Home Assistant initialization, you can use Go template functions
# Script is executed before the Home Assistant container starts and is used to prepare the configuration
# Will be executed only if the configuration.enabled is set to true
initScript: |-
#!/bin/bash
set -e
# Check if the configuration file exists
if [ ! -f /config/configuration.yaml ]; then
echo "Configuration file not found, creating a new one"
cp /config-templates/configuration.yaml /config/configuration.yaml
fi
# Check if the force init is enabled
forceInit="{{ .Values.configuration.forceInit }}"
if [ "$forceInit" = "true" ]; then
echo "Force init is enabled, overwriting the configuration file"
current_time=$(date +%Y%m%d_%H%M%S)
echo "Backup the current configuration file to configuration.yaml.$current_time"
cp /config/configuration.yaml /config/configuration.yaml.$current_time
echo "The current configuration file will be merged with the default configuration file with this content:"
cat /config-templates/configuration.yaml
if [[ ! -s /config/configuration.yaml ]]; then
# If /config/configuration.yaml is empty, use the content of /config-templates/configuration.yaml
cat /config-templates/configuration.yaml > /config/configuration.yaml
else
# Perform the merge operation if /config/configuration.yaml is not empty
yq eval-all --inplace 'select(fileIndex == 0) *d select(fileIndex == 1)' /config/configuration.yaml /config-templates/configuration.yaml
fi
fi
# Check if the automations file exists
if [ ! -f /config/automations.yaml ]; then
echo "Automations file not found, creating a new one"
touch /config/automations.yaml
echo "[]" >> /config/automations.yaml
fi
# Check if the scripts file exists
if [ ! -f /config/scripts.yaml ]; then
echo "Scripts file not found, creating a new one"
touch /config/scripts.yaml
fi
# Check if the scenes file exists
if [ ! -f /config/scenes.yaml ]; then
echo "Scenes file not found, creating a new one"
touch /config/scenes.yaml
fi
initContainer:
name: setup-config
image: mikefarah/yq:4
securityContext:
runAsUser: 0
command: ["/bin/sh", "-c"]
args:
- /bin/sh /mnt/init/init.sh
# env:
# - name: FORCE_INIT
# valueFrom:
# configMapKeyRef:
# name: init-script
# key: forceInit
# Home Assistant configuration volume will be mounted to /config automatically
volumeMounts:
- name: init-volume
mountPath: /mnt/init/init.sh
subPath: init.sh
- name: config-volume
mountPath: /config-templates
serviceMonitor:
# requires HA integration: https://www.home-assistant.io/integrations/prometheus/
enabled: true
scrapeInterval: 30s
labels:
prometheus: haumdaucher
# Addons configuration for additional services
addons:
# Code-server addon configuration
codeserver:
# Enable or disable the code-server addon
enabled: true
# # Resource settings for the code-server container
# resources: {}
# # Image settings for the code-server addon
# image:
# # Repository for the code-server image
# repository: ghcr.io/coder/code-server
# # Image pull policy for the code-server image
# pullPolicy: IfNotPresent
# # Tag for the code-server image
# tag: "4.92.2"
# Service settings
service:
# Service type (ClusterIP, NodePort, LoadBalancer, or ExternalName)
type: ClusterIP
# Service port
port: 12321
# Ingress settings for the code-server addon
ingress:
# Enable or disable the ingress for the code-server addon
enabled: true
# Ingress class name
className: "nginx"
# Ingress annotations
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
cert-manager.io/cluster-issuer: "letsencrypt-prod"
kubernetes.io/tls-acme: "true"
nginx.ingress.kubernetes.io/auth-type: basic
nginx.ingress.kubernetes.io/auth-secret: hass-coder-auth
nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required - HASS Coder'
# Ingress hosts configuration
hosts:
- host: hass-coder.moritzgraf.de
paths:
- path: /
pathType: ImplementationSpecific
# Ingress TLS configuration
tls:
- hosts:
- "hass-coder.moritzgraf.de"
secretName: hass-coder-moritzgraf-de
# if you need any additional volume mounts, you can define them here
additionalMounts: []
# - mountPath: /home/coder/.ssh/id_rsa
# name: id-rsa