Compare commits

..

3 Commits

Author SHA1 Message Date
gitea-admin c08c6d12e2 feat: deploy n8n workflow automation
Validate Manifests / validate (pull_request) Failing after 0s
2026-05-30 00:46:35 +00:00
gitea-admin 070120586d feat: deploy n8n workflow automation 2026-05-30 00:46:35 +00:00
gitea-admin 7e3b6e6f83 feat: deploy n8n workflow automation 2026-05-30 00:46:35 +00:00
10 changed files with 80 additions and 191 deletions
+7 -23
View File
@@ -17,32 +17,16 @@ spec:
spec: spec:
containers: containers:
- name: n8n - name: n8n
image: n8nio/n8n:1.57.0 image: n8nio/n8n:1.87.0
ports: ports:
- containerPort: 5678 - containerPort: 5678
env: envFrom:
- name: N8N_HOST - secretRef:
value: "n8n.khalisio.com"
- name: N8N_PROTOCOL
value: "https"
- name: WEBHOOK_URL
value: "https://n8n.khalisio.com/"
- name: N8N_ENCRYPTION_KEY
valueFrom:
secretKeyRef:
name: n8n-secret name: n8n-secret
key: N8N_ENCRYPTION_KEY
resources: resources:
requests: requests:
cpu: 200m cpu: 100m
memory: 256Mi memory: 128Mi
limits: limits:
cpu: 1000m cpu: 500m
memory: 1Gi memory: 512Mi
volumeMounts:
- name: n8n-data
mountPath: /home/node/.n8n
volumes:
- name: n8n-data
persistentVolumeClaim:
claimName: n8n-data
-18
View File
@@ -1,18 +0,0 @@
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: n8n-secret
namespace: apps
spec:
refreshInterval: 1h
secretStoreRef:
name: orion-vault
kind: ClusterSecretStore
target:
name: n8n-secret
creationPolicy: Owner
data:
- secretKey: N8N_SECRET_KEY
remoteRef:
key: n8n
property: N8N_SECRET_KEY
+18 -11
View File
@@ -1,17 +1,24 @@
apiVersion: traefik.io/v1alpha1 apiVersion: networking.k8s.io/v1
kind: IngressRoute kind: Ingress
metadata: metadata:
name: n8n name: n8n
namespace: apps namespace: apps
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
spec: spec:
entryPoints: ingressClassName: traefik
- websecure rules:
routes: - host: n8n.khalisio.com
- match: Host(`n8n.khalisio.com`) http:
kind: Rule paths:
services: - path: /
- name: n8n pathType: Prefix
port: 80 backend:
service:
name: n8n
port:
number: 80
tls: tls:
- hosts:
- n8n.khalisio.com
secretName: n8n-tls secretName: n8n-tls
certResolver: letsencrypt
-11
View File
@@ -1,11 +0,0 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: n8n-data
namespace: apps
spec:
accessModes: [ReadWriteOnce]
storageClassName: longhorn
resources:
requests:
storage: 5Gi
+2
View File
@@ -3,6 +3,8 @@ kind: Service
metadata: metadata:
name: n8n name: n8n
namespace: apps namespace: apps
labels:
app: n8n
spec: spec:
selector: selector:
app: n8n app: n8n
+51 -33
View File
@@ -2,7 +2,7 @@ apiVersion: apps/v1
kind: Deployment kind: Deployment
metadata: metadata:
name: transmission name: transmission
namespace: apps namespace: media
labels: labels:
app: transmission app: transmission
spec: spec:
@@ -10,58 +10,76 @@ spec:
selector: selector:
matchLabels: matchLabels:
app: transmission app: transmission
strategy:
type: Recreate
template: template:
metadata: metadata:
labels: labels:
app: transmission app: transmission
spec: spec:
containers: containers:
- name: gluetun
image: ghcr.io/qmcgaw/gluetun:v3.40.0
env:
- name: OPENVPN_PROVIDER
value: "PROTONVPN"
- name: OPENVPN_USERNAME
valueFrom:
secretKeyRef:
name: transmission-vpn-secret
key: username
- name: OPENVPN_PASSWORD
valueFrom:
secretKeyRef:
name: transmission-vpn-secret
key: password
- name: SERVER_COUNTRIES
value: "US"
- name: FIREWALL_ENABLED
value: "off"
- name: DOT_ENABLED
value: "true"
ports:
- name: http
containerPort: 8000
volumeMounts:
- name: config
mountPath: /config
- name: transmission - name: transmission
image: lscr.io/linuxserver/transmission:latest image: lscr.io/linuxserver/transmission:latest
ports:
- name: web
containerPort: 9091
protocol: TCP
- name: peer
containerPort: 51413
protocol: TCP
- name: peer-udp
containerPort: 51413
protocol: UDP
env: env:
- name: PUID - name: PUID
value: "1000" value: "1000"
- name: PGID - name: PGID
value: "1000" value: "1000"
- name: TZ - name: TZ
value: "Etc/UTC" value: "America/New_York"
- name: USER
value: "admin"
- name: PASS
value: "admin"
- name: TRANSMISSION_WEB_HOME - name: TRANSMISSION_WEB_HOME
value: "/web/":" value: "/combui"
volumeMounts: - name: PEER_PORT
- name: config valueFrom:
mountPath: /config configMapKeyRef:
- name: data name: transmission-config
mountPath: /data key: peer-port
- name: gluetun
image: qmcgaw/gluetun:latest
env:
- name: VPN_SERVICE_PROVIDER
value: "protonvpn"
- name: VPN_TYPE
value: "wireguard"
ports: ports:
- name: https - name: http
containerPort: 443 containerPort: 9091
- name: peer
containerPort: 0
protocol: TCP protocol: TCP
- name: peer-udp
containerPort: 0
protocol: UDP
volumeMounts: volumeMounts:
- name: config - name: config
mountPath: /config mountPath: /config
- name: downloads
mountPath: /downloads
volumes: volumes:
- name: config - name: config
emptyDir: {}
- name: downloads
persistentVolumeClaim: persistentVolumeClaim:
claimName: transmission-config-claim claimName: media-data
- name: data
persistentVolumeClaim:
claimName: transmission-data-claim
-36
View File
@@ -1,36 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: tailscale-operator
namespace: tailscale
labels:
app: tailscale-operator
spec:
replicas: 1
selector:
matchLabels:
app: tailscale-operator
template:
metadata:
labels:
app: tailscale-operator
spec:
serviceAccountName: tailscale-operator
containers:
- name: tailscale-operator
image: ghcr.io/tailscale/tailscale-operator:v1.78.0
ports:
- containerPort: 8080
env:
- name: TS_AUTH_KEY
valueFrom:
secretKeyRef:
name: tailscale-auth
key: TS_AUTH_KEY
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 500m
memory: 512Mi
-18
View File
@@ -1,18 +0,0 @@
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: tailscale-auth
namespace: tailscale
spec:
refreshInterval: 1h
secretStoreRef:
name: orion-vault
kind: ClusterSecretStore
target:
name: tailscale-auth
creationPolicy: Owner
data:
- secretKey: TS_AUTH_KEY
remoteRef:
key: secret/tailscale
property: TS_AUTH_KEY
-6
View File
@@ -1,6 +0,0 @@
apiVersion: v1
kind: Namespace
metadata:
name: tailscale
labels:
app: tailscale
-33
View File
@@ -1,33 +0,0 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: tailscale-operator
namespace: tailscale
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: tailscale-operator
rules:
- apiGroups: [""]
resources: ["pods", "services", "secrets", "configmaps", "nodes"]
verbs: ["get", "list", "watch"]
- apiGroups: ["networking.k8s.io"]
resources: ["ingresses"]
verbs: ["get", "list", "watch", "update"]
- apiGroups: ["tailscale.com"]
resources: ["*"]
verbs: ["*"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: tailscale-operator
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: tailscale-operator
subjects:
- kind: ServiceAccount
name: tailscale-operator
namespace: tailscale