Compare commits

..

7 Commits

Author SHA1 Message Date
259c4aa83f Closes #44 2026-01-25 11:30:35 -05:00
69b989a112 Gitea, MinIO, and Prometheus changes 2026-01-06 19:06:46 -05:00
92a024d744 Misc. changes 2025-11-06 11:35:51 -05:00
055c92f3f7 Closes #15 2025-11-06 11:33:41 -05:00
71d0491236 Closes #33 2025-11-03 22:59:41 -05:00
460fdedf50 Updates to LocalAI, Discourse, and Owncast 2025-10-29 09:22:15 -04:00
b1cd53a9d8 Pinned PostgreSQL to v16.6 (#38)
This change was made to recover from an update made while attempting to address DevOps/ansible-role-eom#37, which was not solved here.

Reviewed-on: #38
2025-08-01 17:29:29 +00:00
12 changed files with 191 additions and 23 deletions

View File

@@ -17,6 +17,9 @@
release_namespace: coturn
create_namespace: true
values:
global:
security:
allowInsecureImages: true
service:
type: LoadBalancer
externalTrafficPolicy: Local
@@ -30,8 +33,14 @@
pullPolicy: Always
externalDatabase:
enabled: true
username: coturn
password: "{{ coturn_admin_password }}"
database: coturn
postgresql:
enabled: true
image:
repository: bitnamilegacy/postgresql
tag: 17.6.0-debian-12-r0
global:
postgresql:
auth:
@@ -101,3 +110,6 @@
auth:
username: coturn
password: "{{ coturn_admin_password }}"
extraTurnserverConfiguration: |
use-auth-secret
static-auth-secret={{ coturn_shared_secret }}

View File

@@ -32,10 +32,6 @@
volumeName: "data"
size: 256Gi
- name: Deploy Dex
kubernetes.core.helm:
name: dex
@@ -45,6 +41,12 @@
values:
config:
issuer: https://dex.eom.dev/
staticClients:
- id: "{{ matrix_dex_oidc_client_id }}"
name: Matrix Auth Service
secret: "{{ matrix_dex_oidc_client_secret }}"
redirectURIs:
- "https://mas.eom.dev/upstream/callback/01K96AQEZKKABW34PY3R6BVNJ4"
storage:
type: postgres
config:
@@ -62,10 +64,10 @@
config:
host: openldap.openldap.svc.cluster.local
insecureNoSSL: true
bindDN: cn=readonly,dc=example,dc=com
bindDN: cn=readonly,dc=eom,dc=dev
bindPW: "{{ openldap_readonly_password }}"
userSearch:
baseDN: dc=example,dc=com
baseDN: dc=eom,dc=dev
filter: "(&(objectClass=posixAccount)(memberOf=cn=Dex Users,ou=Dex,ou=Services,dc=eom,dc=dev))"
username: uid
idAttr: uid
@@ -81,12 +83,14 @@
nameAttr: cn
ingress:
enabled: true
className: nginx
annotations:
cert-manager.io/cluster-issuer: ca-issuer
hosts:
- host: dex.eom.dev
paths:
- path: /
pathType: ImplementationSpecific
tls:
- hosts:
- dex.eom.dev

View File

@@ -22,6 +22,8 @@
password: "{{ discourse_admin_password }}"
image:
debug: false
repository: bitnamilegacy/discourse
tag: 3.4.7-debian-12-r0
service:
externalTrafficPolicy: Local
discourse:
@@ -32,6 +34,7 @@
- https://github.com/discourse/discourse-activity-pub
- https://github.com/discourse/discourse-openid-connect
- https://github.com/jonmbake/discourse-ldap-auth
- https://github.com/discourse/discourse-math
- https://github.com/discourse/discourse-post-voting
- https://github.com/discourse/discourse-prometheus
- https://github.com/discourse/discourse-reactions
@@ -58,6 +61,8 @@
tls: true
postgresql:
enabled: true
image:
repository: bitnamilegacy/postgresql
auth:
enablePostgresUser: true
postgresPassword: "{{ discourse_admin_password }}"
@@ -67,5 +72,7 @@
size: 2Ti
redis:
enabled: true
image:
repository: bitnamilegacy/redis
auth:
password: "{{ discourse_admin_password }}"

View File

@@ -79,9 +79,9 @@
APP_NAME: "Gitea"
service:
DISABLE_REGISTRATION: false
SHOW_REGISTRATION_BUTTON: false
SHOW_REGISTRATION_BUTTON: true
DEFAULT_ALLOW_CREATE_ORGANIZATION: false
ALLOW_ONLY_EXTERNAL_REGISTRATION: true
ALLOW_ONLY_EXTERNAL_REGISTRATION: false
oauth2_client:
ENABLE_AUTO_REGISTRATION: true
UPDATE_AVATAR: true

View File

@@ -1,5 +1,14 @@
---
# tasks file for grafana-matrix-forwarder
- name: Create Grafana Matrix Forwarder namespace
k8s:
state: present
definition:
apiVersion: v1
kind: Namespace
metadata:
name: grafana-matrix-forwarder
- name: Create a Deployment for Grafana Matrix Forwarder
k8s:
definition:
@@ -7,7 +16,7 @@
kind: Deployment
metadata:
name: matrix-forwarder
namespace: grafana
namespace: grafana-matrix-forwarder
spec:
replicas: 1
selector:
@@ -29,7 +38,7 @@
- name: GMF_MATRIX_PASSWORD
value: "{{ grafana_admin_password }}"
- name: GMF_MATRIX_HOMESERVER
value: eom.dev
value: synapse.eom.dev
- name: GMF_RESOLVE_MODE
value: reply
@@ -40,7 +49,7 @@
kind: Service
metadata:
name: matrix-forwarder
namespace: grafana
namespace: grafana-matrix-forwarder
spec:
selector:
app: matrix-forwarder

View File

@@ -17,12 +17,21 @@
release_namespace: localai
create_namespace: true
values:
service:
type: LoadBalancer
deployment:
image:
tag: latest-gpu-nvidia-cuda-12
runtimeClassName: nvidia
secretEnv:
- name: LOCALAI_DISABLE_WEBUI
value: "true"
- name: LOCALAI_API_KEY
value: "{{ localai_api_keys | join(',') }}"
- name: LOCALAI_WATCHDOG_IDLE
value: "true"
- name: LOCALAI_WATCHDOG_IDLE_TIMEOUT
value: "5m"
- name: LOCALAI_WATCHDOG_BUSY
value: "true"
resources:
limits:
nvidia.com/gpu: 1
@@ -36,3 +45,17 @@
operator: Equal
value: GPU
effect: NoSchedule
ingress:
enabled: true
className: nginx
annotations:
cert-manager.io/cluster-issuer: ca-issuer
hosts:
- host: localai.eom.dev
paths:
- path: /
pathType: ImplementationSpecific
tls:
- secretName: localai-tls
hosts:
- localai.eom.dev

View File

@@ -90,6 +90,38 @@
requests:
storage: 2Ti
- name: Create a ConfigMap for encryption
k8s:
state: present
definition:
apiVersion: v1
kind: ConfigMap
metadata:
name: certs
namespace: mail
data:
privkey.pem: "{{ mail_encryption_privkey }}"
pubkey.pem: "{{ mail_encryption_pubkey }}"
- name: Create a ConfigMap for Dovecot
k8s:
state: present
definition:
apiVersion: v1
kind: ConfigMap
metadata:
name: dovecot
namespace: mail
data:
10-encryption.conf: |
# Enables mail_crypt for all services (pop3, pop3, etc)
mail_plugins = $mail_plugins mail_crypt
plugin {
mail_crypt_global_private_key = </certs/privkey.pem
mail_crypt_global_public_key = </certs/pubkey.pem
mail_crypt_save_version = 2
}
- name: Create a deployment
k8s:
definition:
@@ -141,8 +173,13 @@
seccompProfile:
type: RuntimeDefault
volumeMounts:
- name: certs
mountPath: /certs
- name: config
mountPath: /tmp/docker-mailserver
- name: dovecot
mountPath: /etc/dovecot/conf.d/10-encryption.conf
subPath: 10-encryption.conf
- name: ssl
mountPath: /etc/letsencrypt
- name: mail
@@ -207,6 +244,9 @@
- name: SSL_KEY_PATH
value: "/etc/letsencrypt/tls.key"
volumes:
- name: certs
configMap:
name: certs
- name: ssl
secret:
secretName: mail
@@ -219,6 +259,9 @@
- name: dkim
persistentVolumeClaim:
claimName: dkim
- name: dovecot
configMap:
name: dovecot
- name: Expose deployment as a service
k8s:

View File

@@ -3,4 +3,4 @@
- name: Deploy
include_tasks: "{{ item }}"
loop:
- nextcloud.yaml
- gitea.yaml

View File

@@ -7,13 +7,17 @@
release_namespace: minio
create_namespace: true
values:
image:
repository: bitnamilegacy/minio
metrics:
enabled: true
disableWebUI: true
console:
enabled: false
auth:
rootUser: minio_admin
rootPassword: "{{ minio_admin_password }}"
defaultBuckets: default
defaultInitContainers:
volumePermissions:
enabled: true
mode: standalone
@@ -46,13 +50,10 @@
value: OpenLDAP
- name: MINIO_IDENTITY_LDAP_SERVER_INSECURE
value: "on"
apiIngress:
ingress:
enabled: true
hostname: minio.eom.dev
ingressClassName: nginx
annotations:
cert-manager.io/cluster-issuer: ca-issuer
tls:
- hosts:
- minio.eom.dev
secretName: minio-tls
tls: true

View File

@@ -41,6 +41,36 @@
requests:
storage: 32Gi
- name: Request a certificate for OpenLDAP
k8s:
state: present
definition:
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: openldap
namespace: openldap
spec:
secretName: openldap
privateKey:
algorithm: RSA
encoding: PKCS1
size: 2048
duration: 2160h # 90d
renewBefore: 360h # 15d
isCA: false
usages:
- server auth
- client auth
subject:
organizations:
- EOM
dnsNames:
- openldap.eom.dev
issuerRef:
name: ca-issuer
kind: ClusterIssuer
- name: Create Deployment for OpenLDAP
k8s:
definition:
@@ -75,6 +105,10 @@
value: "{{ openldap_readonly_password }}"
- name: LDAP_TLS_VERIFY_CLIENT
value: never
- name: LDAP_TLS_CRT_FILENAME
value: tls.crt
- name: LDAP_TLS_KEY_FILENAME
value: tls.key
volumeMounts:
- name: config
mountPath: /etc/ldap/slapd.d

View File

@@ -49,6 +49,9 @@
containers:
- name: owncast
image: owncast/owncast:0.2.0
resources:
requests:
cpu: 1.5
volumeMounts:
- name: data
mountPath: /app/data
@@ -78,6 +81,7 @@
name: rtmp
- port: 8080
name: http
externalTrafficPolicy: Local
type: LoadBalancer
- name: Create Ingress

View File

@@ -27,7 +27,18 @@
instance: grafana
metrics_path: /metrics
- job_name: nextcloud
- job_name: owncast
scrape_interval: 1m
metrics_path: /api/admin/prometheus
scheme: https
basic_auth:
username: admin
password: "{{ owncast_admin_password }}"
static_config:
- targets:
- owncast.eom.dev
- job_name: local
static_configs:
- targets:
- nextcloud-metrics.nextcloud.svc.cluster.local:9205
@@ -113,4 +124,24 @@
- 192.168.1.72:9100
labels:
instance: alpha-worker-12
- targets:
- 192.168.1.95:9100
labels:
instance: alpha-worker-13
- targets:
- 192.168.1.70:9100
labels:
instance: alpha-worker-14
- targets:
- 192.168.1.46:9100
labels:
instance: alpha-worker-15
- targets:
- 192.168.1.74:9100
labels:
instance: alpha-worker-16
- targets:
- 192.168.1.88:9100
labels:
instance: alpha-worker-17
metrics_path: /metrics