From 7ded7906795cc6476829032135923b170825eaf0 Mon Sep 17 00:00:00 2001 From: Shahab Dogar Date: Mon, 17 Nov 2025 10:32:09 +0500 Subject: [PATCH] feat: DevPi | configure local pip cache behind pip.dogar.dev --- 1password/secrets.json | 4 ++ cloudflare/ddns.yaml | 2 +- devpy/manifest.yaml | 89 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 94 insertions(+), 1 deletion(-) create mode 100644 devpy/manifest.yaml diff --git a/1password/secrets.json b/1password/secrets.json index 54ad935..00f63f7 100644 --- a/1password/secrets.json +++ b/1password/secrets.json @@ -52,5 +52,9 @@ { "name": "curseforge", "itemPath": "vaults/Lab/items/curseforge" + }, + { + "name": "devpi-secret", + "itemPath": "vaults/Lab/items/devpi-secret" } ] diff --git a/cloudflare/ddns.yaml b/cloudflare/ddns.yaml index 8ae4903..9203b6b 100644 --- a/cloudflare/ddns.yaml +++ b/cloudflare/ddns.yaml @@ -14,7 +14,7 @@ metadata: name: cloudflare-domains-config-non-proxied namespace: homelab data: - DOMAINS: "dogar.dev,git.dogar.dev,nix.dogar.dev" + DOMAINS: "dogar.dev,git.dogar.dev,nix.dogar.dev,pip.dogar.dev" PROXIED: "false" --- apiVersion: apps/v1 diff --git a/devpy/manifest.yaml b/devpy/manifest.yaml new file mode 100644 index 0000000..f2ea3f0 --- /dev/null +++ b/devpy/manifest.yaml @@ -0,0 +1,89 @@ +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: devpi + namespace: homelab +spec: + storageClassName: longhorn + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 128Gi +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: devpi + namespace: homelab +spec: + replicas: 1 + selector: + matchLabels: + app: devpi + template: + metadata: + labels: + app: devpi + spec: + containers: + - name: devpi + image: jonasal/devpi-server:latest + env: + - name: DEVPI_PASSWORD + valueFrom: + secretKeyRef: + name: devpi-secret + key: password + ports: + - containerPort: 3141 + volumeMounts: + - name: data + mountPath: /devpi + volumes: + - name: data + persistentVolumeClaim: + claimName: devpi +--- +apiVersion: v1 +kind: Service +metadata: + name: devpi + namespace: homelab +spec: + selector: + app: devpi + ports: + - port: 3141 + targetPort: 3141 + protocol: TCP + type: ClusterIP +--- +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: devpi-ingress + namespace: homelab + annotations: + nginx.ingress.kubernetes.io/proxy-body-size: "0" + cert-manager.io/cluster-issuer: "cloudflare-issuer" + cert-manager.io/acme-challenge-type: "dns01" + cert-manager.io/private-key-size: "4096" +spec: + ingressClassName: nginx-internal + tls: + - hosts: + - pip.dogar.dev + secretName: devpi-tls + rules: + - host: pip.dogar.dev + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: devpi + port: + number: 3141