summaryrefslogtreecommitdiff
path: root/gemfeed/examples/conf/f3s/freshrss
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2025-10-02 11:28:53 +0300
committerPaul Buetow <paul@buetow.org>2025-10-02 11:28:53 +0300
commitc0f9ecf5e0b075db8e54ef1235ec80878e418398 (patch)
treed729aef5835fdfa173277c4189342976e33c6446 /gemfeed/examples/conf/f3s/freshrss
parenta96adfd84d903c50d75c8771cdcc78dd5e942618 (diff)
Update content for html
Diffstat (limited to 'gemfeed/examples/conf/f3s/freshrss')
-rw-r--r--gemfeed/examples/conf/f3s/freshrss/Justfile12
-rw-r--r--gemfeed/examples/conf/f3s/freshrss/README.md29
-rw-r--r--gemfeed/examples/conf/f3s/freshrss/helm-chart/Chart.yaml6
-rw-r--r--gemfeed/examples/conf/f3s/freshrss/helm-chart/templates/deployment.yaml48
-rw-r--r--gemfeed/examples/conf/f3s/freshrss/helm-chart/templates/ingress.yaml21
-rw-r--r--gemfeed/examples/conf/f3s/freshrss/helm-chart/templates/persistent-volumes.yaml28
6 files changed, 144 insertions, 0 deletions
diff --git a/gemfeed/examples/conf/f3s/freshrss/Justfile b/gemfeed/examples/conf/f3s/freshrss/Justfile
new file mode 100644
index 00000000..d88fe3d4
--- /dev/null
+++ b/gemfeed/examples/conf/f3s/freshrss/Justfile
@@ -0,0 +1,12 @@
+NAMESPACE := "services"
+RELEASE_NAME := "freshrss"
+CHART_PATH := "./helm-chart"
+
+install:
+ helm install {{RELEASE_NAME}} {{CHART_PATH}} --namespace {{NAMESPACE}} --create-namespace
+
+upgrade:
+ helm upgrade {{RELEASE_NAME}} {{CHART_PATH}} --namespace {{NAMESPACE}}
+
+delete:
+ helm uninstall {{RELEASE_NAME}} --namespace {{NAMESPACE}}
diff --git a/gemfeed/examples/conf/f3s/freshrss/README.md b/gemfeed/examples/conf/f3s/freshrss/README.md
new file mode 100644
index 00000000..1a883725
--- /dev/null
+++ b/gemfeed/examples/conf/f3s/freshrss/README.md
@@ -0,0 +1,29 @@
+# FreshRSS Helm Chart
+
+This chart deploys FreshRSS using a single Deployment, Service, Ingress, and a hostPath-backed PersistentVolume/PersistentVolumeClaim for data.
+
+## Prerequisites
+
+Before installing the chart, you must manually create the hostPath directory used by the PersistentVolume (see `templates/persistent-volumes.yaml`):
+
+- `/data/nfs/k3svolumes/freshrss/data`
+
+Example commands:
+
+```bash
+sudo mkdir -p /data/nfs/k3svolumes/freshrss/data
+# Ensure write permissions for the runtime user/group (nobody:nogroup = 65534:65534)
+sudo chown -R 65534:65534 /data/nfs/k3svolumes/freshrss/data
+```
+
+## Installing the Chart
+
+To install the chart with the release name `freshrss`, run:
+
+```bash
+helm install freshrss . --namespace services --create-namespace
+```
+
+## Access
+
+- Ingress host: `freshrss.f3s.lan.buetow.org`
diff --git a/gemfeed/examples/conf/f3s/freshrss/helm-chart/Chart.yaml b/gemfeed/examples/conf/f3s/freshrss/helm-chart/Chart.yaml
new file mode 100644
index 00000000..05cd76a0
--- /dev/null
+++ b/gemfeed/examples/conf/f3s/freshrss/helm-chart/Chart.yaml
@@ -0,0 +1,6 @@
+apiVersion: v2
+name: freshrss
+description: A Helm chart for deploying FreshRSS.
+version: 0.1.0
+appVersion: "latest"
+
diff --git a/gemfeed/examples/conf/f3s/freshrss/helm-chart/templates/deployment.yaml b/gemfeed/examples/conf/f3s/freshrss/helm-chart/templates/deployment.yaml
new file mode 100644
index 00000000..99f114cb
--- /dev/null
+++ b/gemfeed/examples/conf/f3s/freshrss/helm-chart/templates/deployment.yaml
@@ -0,0 +1,48 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: freshrss
+ namespace: services
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ app: freshrss
+ template:
+ metadata:
+ labels:
+ app: freshrss
+ spec:
+ securityContext:
+ runAsUser: 65534 # nobody
+ runAsGroup: 65534 # nobody / nogroup
+ fsGroup: 65534 # ensure mounted volumes are group-writable
+ runAsNonRoot: true
+ containers:
+ - name: freshrss
+ image: freshrss/freshrss:latest
+ ports:
+ - containerPort: 80
+ volumeMounts:
+ - name: freshrss-data
+ mountPath: /var/www/FreshRSS/data
+ volumes:
+ - name: freshrss-data
+ persistentVolumeClaim:
+ claimName: freshrss-data-pvc
+---
+apiVersion: v1
+kind: Service
+metadata:
+ labels:
+ app: freshrss
+ name: freshrss-service
+ namespace: services
+spec:
+ ports:
+ - name: web
+ port: 80
+ protocol: TCP
+ targetPort: 80
+ selector:
+ app: freshrss
diff --git a/gemfeed/examples/conf/f3s/freshrss/helm-chart/templates/ingress.yaml b/gemfeed/examples/conf/f3s/freshrss/helm-chart/templates/ingress.yaml
new file mode 100644
index 00000000..67409615
--- /dev/null
+++ b/gemfeed/examples/conf/f3s/freshrss/helm-chart/templates/ingress.yaml
@@ -0,0 +1,21 @@
+apiVersion: networking.k8s.io/v1
+kind: Ingress
+metadata:
+ name: freshrss-ingress
+ namespace: services
+ annotations:
+ spec.ingressClassName: traefik
+ traefik.ingress.kubernetes.io/router.entrypoints: web
+spec:
+ rules:
+ - host: freshrss.f3s.buetow.org
+ http:
+ paths:
+ - path: /
+ pathType: Prefix
+ backend:
+ service:
+ name: freshrss-service
+ port:
+ number: 80
+
diff --git a/gemfeed/examples/conf/f3s/freshrss/helm-chart/templates/persistent-volumes.yaml b/gemfeed/examples/conf/f3s/freshrss/helm-chart/templates/persistent-volumes.yaml
new file mode 100644
index 00000000..813d2acb
--- /dev/null
+++ b/gemfeed/examples/conf/f3s/freshrss/helm-chart/templates/persistent-volumes.yaml
@@ -0,0 +1,28 @@
+apiVersion: v1
+kind: PersistentVolume
+metadata:
+ name: freshrss-data-pv
+spec:
+ capacity:
+ storage: 1Gi
+ volumeMode: Filesystem
+ accessModes:
+ - ReadWriteOnce
+ persistentVolumeReclaimPolicy: Retain
+ hostPath:
+ path: /data/nfs/k3svolumes/freshrss/data
+ type: Directory
+---
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+ name: freshrss-data-pvc
+ namespace: services
+spec:
+ storageClassName: ""
+ accessModes:
+ - ReadWriteOnce
+ resources:
+ requests:
+ storage: 1Gi
+