Initial commit: k3s GitOps manifests with ArgoCD App-of-Apps

This commit is contained in:
2026-05-05 13:18:51 +03:00
commit 5d9a80b976
65 changed files with 3445 additions and 0 deletions

122
sillytavern/configmap.yaml Normal file
View File

@@ -0,0 +1,122 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: sillytavern-config
namespace: sillytavern
data:
config.yaml: |
dataRoot: ./data
listen: true
listenAddress:
ipv4: 0.0.0.0
ipv6: '[::]'
protocol:
ipv4: true
ipv6: false
dnsPreferIPv6: false
browserLaunch:
enabled: false
browser: 'default'
hostname: 'auto'
port: -1
avoidLocalhost: false
port: 8000
ssl:
enabled: false
certPath: "./certs/cert.pem"
keyPath: "./certs/privkey.pem"
keyPassphrase: ""
whitelistMode: false
enableForwardedWhitelist: false
whitelist:
- ::1
- 127.0.0.1
whitelistDockerHosts: false
basicAuthMode: false
basicAuthUser:
username: "user"
password: "password"
enableCorsProxy: false
requestProxy:
enabled: false
url: "socks5://username:password@example.com:1080"
bypass:
- localhost
- 127.0.0.1
enableUserAccounts: false
enableDiscreetLogin: false
perUserBasicAuth: false
sso:
autheliaAuth: false
authentikAuth: false
hostWhitelist:
enabled: false
scan: true
hosts: []
sessionTimeout: -1
disableCsrfProtection: false
securityOverride: false
logging:
enableAccessLog: true
minLogLevel: 0
rateLimiting:
preferRealIpHeader: false
backups:
common:
numberOfBackups: 50
chat:
enabled: true
checkIntegrity: true
maxTotalBackups: -1
throttleInterval: 10000
thumbnails:
enabled: true
format: "jpg"
quality: 95
dimensions: { 'bg': [160, 90], 'avatar': [96, 144], 'persona': [96, 144] }
performance:
lazyLoadCharacters: false
memoryCacheCapacity: '100mb'
useDiskCache: true
cacheBuster:
enabled: false
userAgentPattern: ''
allowKeysExposure: false
skipContentCheck: false
whitelistImportDomains:
- localhost
- cdn.discordapp.com
- files.catbox.moe
- raw.githubusercontent.com
- char-archive.evulid.cc
requestOverrides: []
extensions:
enabled: true
autoUpdate: true
models:
autoDownload: true
classification: Cohee/distilbert-base-uncased-go-emotions-onnx
captioning: Xenova/vit-gpt2-image-captioning
embedding: Cohee/jina-embeddings-v2-base-en
speechToText: Xenova/whisper-small
textToSpeech: Xenova/speecht5_tts
enableDownloadableTokenizers: true
promptPlaceholder: "[Start a new chat]"
openai:
randomizeUserId: false
captionSystemPrompt: ""
deepl:
formality: default
mistral:
enablePrefix: false
ollama:
keepAlive: -1
batchSize: -1
claude:
enableSystemPromptCache: false
cachingAtDepth: -1
extendedTTL: false
gemini:
apiVersion: 'v1beta'
enableServerPlugins: false
enableServerPluginsAutoUpdate: true

View File

@@ -0,0 +1,61 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: sillytavern
namespace: sillytavern
spec:
replicas: 1
strategy:
type: Recreate
selector:
matchLabels:
app: sillytavern
template:
metadata:
labels:
app: sillytavern
spec:
containers:
- name: sillytavern
image: ghcr.io/sillytavern/sillytavern:latest
ports:
- containerPort: 8000
protocol: TCP
env:
- name: NODE_ENV
value: production
- name: FORCE_COLOR
value: "1"
envFrom:
- secretRef:
name: sillytavern-auth
volumeMounts:
- name: config
mountPath: /home/node/app/config/config.yaml
subPath: config.yaml
- name: data
mountPath: /home/node/app/data
- name: plugins
mountPath: /home/node/app/plugins
- name: extensions
mountPath: /home/node/app/public/scripts/extensions/third-party
resources:
requests:
cpu: "1"
memory: 1Gi
limits:
cpu: "4"
memory: 4Gi
volumes:
- name: config
configMap:
name: sillytavern-config
- name: data
persistentVolumeClaim:
claimName: sillytavern-data
- name: plugins
persistentVolumeClaim:
claimName: sillytavern-plugins
- name: extensions
persistentVolumeClaim:
claimName: sillytavern-extensions

30
sillytavern/ingress.yaml Normal file
View File

@@ -0,0 +1,30 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: sillytavern
namespace: sillytavern
labels:
app.kubernetes.io/name: sillytavern
app.kubernetes.io/component: frontend
app.kubernetes.io/part-of: sillytavern
annotations:
cert-manager.io/cluster-issuer: letsencrypt-production
traefik.ingress.kubernetes.io/router.entrypoints: websecure
traefik.ingress.kubernetes.io/router.tls: "true"
spec:
ingressClassName: traefik
tls:
- hosts:
- sillytavern.mrt0rtikize.ru
secretName: sillytavern-tls
rules:
- host: sillytavern.mrt0rtikize.ru
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: sillytavern
port:
number: 8000

View File

@@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: sillytavern

35
sillytavern/pvc.yaml Normal file
View File

@@ -0,0 +1,35 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: sillytavern-data
namespace: sillytavern
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: sillytavern-plugins
namespace: sillytavern
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: sillytavern-extensions
namespace: sillytavern
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi

10
sillytavern/secret.yaml Normal file
View File

@@ -0,0 +1,10 @@
apiVersion: v1
kind: Secret
metadata:
name: sillytavern-auth
namespace: sillytavern
type: Opaque
stringData:
SILLYTAVERN_BASICAUTHMODE: "true"
SILLYTAVERN_BASICAUTHUSER_USERNAME: admin
SILLYTAVERN_BASICAUTHUSER_PASSWORD: 0cdaa30c396dae77

13
sillytavern/service.yaml Normal file
View File

@@ -0,0 +1,13 @@
apiVersion: v1
kind: Service
metadata:
name: sillytavern
namespace: sillytavern
spec:
selector:
app: sillytavern
ports:
- port: 8000
targetPort: 8000
protocol: TCP
type: ClusterIP