From 4d88b99658e736364c4e7414e2217f12a5bc4608 Mon Sep 17 00:00:00 2001 From: Jun-te Kim Date: Sun, 8 Mar 2026 14:42:02 +0000 Subject: [PATCH 1/2] papra --- juntekim_frontend/app/SelfHosted/page.tsx | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/juntekim_frontend/app/SelfHosted/page.tsx b/juntekim_frontend/app/SelfHosted/page.tsx index ca23058..8f66e80 100644 --- a/juntekim_frontend/app/SelfHosted/page.tsx +++ b/juntekim_frontend/app/SelfHosted/page.tsx @@ -100,6 +100,12 @@ const services = [ url: "https://traefik.mealcraft.com/dashboard/", icon: "📊" }, + { + name: "Papra", + description: "Document management and ingestion platform for organizing files", + url: "https://papra.juntekim.com", + icon: "📁" + }, { name: "Kokoro TTS", description: "Open-source text-to-speech API running locally with an OpenAI-compatible interface", From 3f49e140d2c786e590e55a32a63c1aec3d42d14d Mon Sep 17 00:00:00 2001 From: Jun-te Kim Date: Sun, 8 Mar 2026 14:56:45 +0000 Subject: [PATCH 2/2] save for porfolio --- papra/papra.yaml | 116 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 papra/papra.yaml diff --git a/papra/papra.yaml b/papra/papra.yaml new file mode 100644 index 0000000..5e922e9 --- /dev/null +++ b/papra/papra.yaml @@ -0,0 +1,116 @@ +# ================================ +# PAPRA - DOCUMENT MANAGEMENT +# https://github.com/papra-hq/papra +# ================================ + +--- +apiVersion: v1 +kind: PersistentVolume +metadata: + name: papra-pv +spec: + capacity: + storage: 10Gi + volumeMode: Filesystem + accessModes: + - ReadWriteOnce + persistentVolumeReclaimPolicy: Retain + storageClassName: papra-local-storage + local: + path: /home/kimjunte/k8s_storage/papra + nodeAffinity: + required: + nodeSelectorTerms: + - matchExpressions: + - key: kubernetes.io/hostname + operator: In + values: + - mist + +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: papra-pvc +spec: + accessModes: + - ReadWriteOnce + storageClassName: papra-local-storage + resources: + requests: + storage: 10Gi + +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: papra + labels: + app: papra +spec: + replicas: 1 + selector: + matchLabels: + app: papra + template: + metadata: + labels: + app: papra + spec: + nodeSelector: + kubernetes.io/hostname: mist + containers: + - name: papra + image: ghcr.io/papra-hq/papra:latest + ports: + - containerPort: 1221 + env: + - name: APP_BASE_URL + value: "https://papra.juntekim.com" + - name: AUTH_SECRET + value: "junteAUTH$uperS3cretHomelab2024!!" + resources: + requests: + cpu: "100m" + memory: "256Mi" + limits: + cpu: "500m" + memory: "512Mi" + volumeMounts: + - name: papra-data + mountPath: /app/app-data + volumes: + - name: papra-data + persistentVolumeClaim: + claimName: papra-pvc + +--- +apiVersion: v1 +kind: Service +metadata: + name: papra +spec: + selector: + app: papra + ports: + - port: 1221 + targetPort: 1221 + +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: IngressRoute +metadata: + name: papra-ingressroute +spec: + entryPoints: + - websecure + routes: + - match: Host(`papra.juntekim.com`) + kind: Rule + services: + - name: papra + port: 1221 + tls: + certResolver: myresolver + domains: + - main: papra.juntekim.com