Files
axion1337.chat-gitops/apps/production/wikijs.yaml
T
Thore CimbalandClaude Opus 4.8 5f54fbef8e feat(wikijs): default new users to Europe/Berlin (fork patch)
Wiki.js auto-provisions SSO users in processProfile without a timezone, so
the DB column default (America/New_York) applies. Since there is no Wiki.js
image build pipeline, patch server/models/users.js at container startup to set
timezone: 'Europe/Berlin' on new-user creation. Idempotent (grep guard) and
fail-open (node starts even if the anchor is gone after an upgrade).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-14 12:00:00 +00:00

141 lines
4.9 KiB
YAML

# Wiki.js — Plattform-Wiki (ADR-0014, #0048). Öffentlich unter wiki.axion1337.chat
# (Ingress/Cert in wiki-ingress.yaml), Login nativ via Authentik-OIDC (#0049, Guide 10).
# Git-Storage (Inhalt in git) wird nach dem ersten Start in der Admin-UI eingerichtet.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: wikijs-data
namespace: matrix
spec:
accessModes:
- ReadWriteOnce
storageClassName: local-path
resources:
requests:
storage: 2Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: wikijs
namespace: matrix
spec:
replicas: 1
strategy:
type: Recreate # RWO-Volume (Git-Storage-Klon)
selector:
matchLabels:
app.kubernetes.io/name: wikijs
template:
metadata:
labels:
app.kubernetes.io/name: wikijs
spec:
containers:
- name: wikijs
image: ghcr.io/requarks/wiki:2.5
# Fork-Patch (ThreadNet): neue OIDC-Nutzer sollen Europe/Berlin statt des
# Wiki.js-Defaults America/New_York bekommen. Wiki.js legt SSO-Nutzer in
# processProfile (server/models/users.js) OHNE timezone an -> es greift der
# DB-Spalten-Default (New_York). Wir setzen timezone bei der Neuanlage explizit.
# Startup-Overlay statt Custom-Image (es gibt keine Wiki.js-Build-Pipeline):
# idempotent (grep-Guard), failt open (node startet auch wenn der sed nicht
# greift). localeCode kommt bereits aus WIKI.config.lang.code (= de).
# ⚠️ Bei Wiki.js-Upgrade den Anker "localeCode: WIKI.config.lang.code," prüfen.
command:
- sh
- -c
- >-
grep -q "timezone: 'Europe/Berlin'" server/models/users.js ||
sed -i "s#localeCode: WIKI.config.lang.code,#localeCode: WIKI.config.lang.code, timezone: 'Europe/Berlin',#" server/models/users.js;
exec node --no-deprecation server
ports:
- name: http
containerPort: 3000
env:
- name: DB_TYPE
value: postgres
- name: DB_HOST
value: wikijs-postgres
- name: DB_PORT
value: "5432"
- name: DB_NAME
value: wiki
- name: DB_USER
valueFrom:
secretKeyRef:
name: wikijs-postgres-secret
key: username
- name: DB_PASS
valueFrom:
secretKeyRef:
name: wikijs-postgres-secret
key: password
volumeMounts:
- name: data
mountPath: /wiki/data
# Branding-Assets (Logo + Login-Hintergrund) als statische Dateien in den
# öffentlichen /_assets-Baum (express.static /wiki/assets). Dadurch ohne
# read:assets erreichbar (Guests bleiben gesperrt) und ohne externe URL —
# eine Quelle (ConfigMap platform-branding), Config zeigt auf /_assets/img/branding/.
- name: branding
mountPath: /wiki/assets/img/branding
readOnly: true
# Favicon (#0050): serve-favicon liest /wiki/assets/favicon.ico; der
# Browser-Tab nutzt zusätzlich die PNGs unter /_assets/favicons/. Einzelne
# Dateien per subPath überlagern, ohne die restlichen Default-Favicons zu verdecken.
- name: branding
mountPath: /wiki/assets/favicon.ico
subPath: favicon.ico
readOnly: true
- name: branding
mountPath: /wiki/assets/favicons/favicon-32x32.png
subPath: favicon-32x32.png
readOnly: true
- name: branding
mountPath: /wiki/assets/favicons/favicon-16x16.png
subPath: favicon-16x16.png
readOnly: true
- name: branding
mountPath: /wiki/assets/favicons/android-chrome-192x192.png
subPath: android-chrome-192x192.png
readOnly: true
- name: branding
mountPath: /wiki/assets/favicons/apple-touch-icon.png
subPath: apple-touch-icon.png
readOnly: true
- name: branding
mountPath: /wiki/assets/favicons/mstile-150x150.png
subPath: mstile-150x150.png
readOnly: true
readinessProbe:
tcpSocket:
port: http
initialDelaySeconds: 25
periodSeconds: 10
livenessProbe:
tcpSocket:
port: http
initialDelaySeconds: 60
periodSeconds: 20
volumes:
- name: data
persistentVolumeClaim:
claimName: wikijs-data
- name: branding
configMap:
name: platform-branding
---
apiVersion: v1
kind: Service
metadata:
name: wikijs
namespace: matrix
spec:
selector:
app.kubernetes.io/name: wikijs
ports:
- name: http
port: 3000
targetPort: http