Compare commits

...

3 Commits

Author SHA1 Message Date
1b2e571bfe pin stable jellyfin 2025-09-02 10:43:44 -05:00
cb70bf91b5 pin gitea to pi 2025-09-02 09:30:37 -05:00
2597abd084 pin stable jellyfin 2025-09-02 07:30:39 -05:00
13 changed files with 101 additions and 5 deletions

View File

@ -4,10 +4,10 @@
# Fallback: kubectl port-forward to service (OK for small/medium files).
#
# Usage:
# scripts/manual_jellyfin_load.fish <LOCAL_PATH> [REMOTE_SUBDIR] [JELLYFIN_API_KEY]
# scripts/jellyfin_manual_load.fish <LOCAL_PATH> [REMOTE_SUBDIR] [JELLYFIN_API_KEY]
# Examples:
# scripts/manual_jellyfin_load.fish "$HOME/Downloads/Avatar - The Last Airbender (2005 - 2008) [1080p]" kids_tv "$JELLYFIN_API_TOKEN"
# scripts/manual_jellyfin_load.fish "$HOME/Movies/." movies # copy contents-only into /media/movies
# scripts/jellyfin_manual_load.fish "$HOME/Downloads/Avatar - The Last Airbender (2005 - 2008) [1080p]" kids_tv "$JELLYFIN_API_TOKEN"
# scripts/jellyfin_manual_load.fish "$HOME/Movies/." movies # copy contents-only into /media/movies
function usage
echo "Usage: "(basename (status filename))" <LOCAL_PATH> [REMOTE_SUBDIR] [JELLYFIN_API_KEY]"

View File

@ -0,0 +1,23 @@
function pvc-usage --description "Show Longhorn PVC usage (human-readable) mapped to namespace/name"
begin
kubectl -n longhorn-system get volumes.longhorn.io -o json \
| jq -r '.items[] | "\(.metadata.name)\t\(.status.actualSize)\t\(.spec.size)"' \
| sed 's/^/V\t/'
kubectl get pvc -A -o json \
| jq -r '.items[] | "\(.spec.volumeName)\t\(.metadata.namespace)/\(.metadata.name)"' \
| sed 's/^/P\t/'
end \
| awk 'BEGIN{FS="\t"}
$1=="V"{vol=$2; vu[vol]=$3; vs[vol]=$4}
$1=="P"{vol=$2; name=$3; map[vol]=name}
END{
for (v in vu){
used=vu[v]+0; size=vs[v]+0; pct=(size>0?used/size*100:0);
cmd="numfmt --to=iec --suffix=B " used; cmd|getline hu; close(cmd);
cmd="numfmt --to=iec --suffix=B " size; cmd|getline hs; close(cmd);
n=(v in map?map[v]:v);
printf "%-40s %-10s / %-10s (%5.1f%%)\n", n, hu, hs, pct
}
}' | sort
end

View File

@ -18,6 +18,21 @@ spec:
fsGroupChangePolicy: OnRootMismatch
nodeSelector:
node-role.kubernetes.io/worker: "true"
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: hardware
operator: In
values: ["rpi4","rpi5"]
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 50
preference:
matchExpressions:
- key: hardware
operator: In
values: ["rpi4"]
containers:
- name: monerod
image: registry.bstein.dev/infra/monerod:0.18.4.1

View File

@ -15,6 +15,21 @@ spec:
spec:
nodeSelector:
node-role.kubernetes.io/worker: "true"
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: hardware
operator: In
values: ["rpi4","rpi5"]
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 50
preference:
matchExpressions:
- key: hardware
operator: In
values: ["rpi4"]
containers:
- name: monero-p2pool
image: registry.bstein.dev/infra/monero-p2pool:4.9

View File

@ -15,6 +15,14 @@ spec:
priorityClassName: scavenger
nodeSelector:
node-role.kubernetes.io/worker: "true"
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: hardware
operator: In
values: ["rpi4","rpi5"]
volumes:
- name: payout
secret:

View File

@ -1,3 +1,4 @@
# services/gitea/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
@ -22,6 +23,21 @@ spec:
spec:
nodeSelector:
node-role.kubernetes.io/worker: "true"
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: hardware
operator: In
values: ["rpi4","rpi5"]
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 50
preference:
matchExpressions:
- key: hardware
operator: In
values: ["rpi4"]
containers:
- name: gitea
image: gitea/gitea:1.23

View File

@ -1,3 +1,4 @@
# services/gitea/ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:

View File

@ -1,6 +1,6 @@
# services/gitea/kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
# namespace: gitea
resources:
- namespace.yaml
- deployment.yaml

View File

@ -1,3 +1,4 @@
# services/gitea/namespace.yaml
apiVersion: v1
kind: Namespace
metadata:

View File

@ -1,3 +1,4 @@
# services/gitea/pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:

View File

@ -1,3 +1,4 @@
# services/gitea/service.yaml
apiVersion: v1
kind: Service
metadata:

View File

@ -21,7 +21,7 @@ spec:
runtimeClassName: nvidia
containers:
- name: jellyfin
image: docker.io/jellyfin/jellyfin:2025082505
image: docker.io/jellyfin/jellyfin:10.10.7
imagePullPolicy: IfNotPresent
ports:
- name: http

View File

@ -15,6 +15,21 @@ spec:
spec:
nodeSelector:
node-role.kubernetes.io/worker: "true"
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: hardware
operator: In
values: ["rpi4","rpi5"]
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 50
preference:
matchExpressions:
- key: hardware
operator: In
values: ["rpi4"]
containers:
- name: zot
image: ghcr.io/project-zot/zot-linux-arm64:latest