▲ 36 r/dsa

How do you answer pushback from conservatives about socialism?

Some of the more common ones I hear:

- "So you support taking stuff away from people who actually work their butts off to earn it and give it to those who don't want to lift a finger?"

- "How would you feel if you worked your butt off to get an A in your class and the professor took away your grade and gave half of it to the kid in the back who didn't do anything and flunked and gave you both a C?"

- "How do you propose they pay for it without deleting the entire economy?"

- "If everybody has their needs met by the government, nobody's gonna bother to work!"

- "Show me one, just one, example where socialism has worked without turning into a backwards dictatorship."

reddit.com
u/ferriematthew — 2 days ago

How can AI be decentralized and deindustrialized?

The way I understand it, one of the biggest arguments against any use of AI, which honestly has some merit, but ultimately is a little short-sighted, is that it is so hyper-scaled by necessity that it's an ecological nightmare. The ecological nightmare part is totally correct, in my opinion, but does it have to be hyper-scaled? Can it be decentralized and de-industrialized? After all, that's how the internet started out before it was taken over by corporate interests. It was completely decentralized as basically an ad hoc network of enthusiasts running servers in their basements.

What I'm thinking for a possible starting point is, along the lines of how clustering can make a bunch of small, relatively dumb servers behave like a single, more powerful server by acting in concert and pooling their resources.

reddit.com
u/ferriematthew — 4 days ago

I tweaked the way I presented my skills

Firstname Lastname

City, State, United States

email@blah.blah

(cell number)

(LinkedIn)

(GitHub)

PROFESSIONAL SUMMARY

Self-taught SRE practitioner applying reliability principles through an independently operated Kubernetes home lab, ensuring availability, observability, and repeatability with GitOps workflows

SKILLS

  • Containerization and Orchestration (Docker, Kubernetes)
  • GitOps and CI/CD (ArgoCD)
  • Monitoring and Observability (Prometheus, Grafana, Loki, Tempo)
  • Scripting Languages (Bash, Python)
  • Configuration Languages (YAML, TOML, JSON)
  • Linux/UNIX Systems (Debian, Arch)
  • Microservices Architecture, Scalable Infrastructure
  • Network Management (Load Balancing, Reverse Proxying)
  • Databases (MySQL, SQLite, PostgreSQL, Redis)

PROJECTS

Self-Hosted Kubernetes Cluster Home Lab

December 2022 - Ongoing

(Codeberg repo link)

  • Utilized Docker to deploy open-source applications to two Raspberry Pi servers in order to reduce reliance on paid commercial software and gain digital autonomy
  • Learned Bash scripting to automate software updates and optimize uptime
  • Deployed a TailScale VPN to enable secure access to applications from outside the home network
  • Migrated container services to a k3s cluster utilizing Longhorn for distributed storage and data synchronization, interacting directly with backend databases when needed to configure storage rules
  • Deployed an observability stack with Grafana and Prometheus to assist in performance profiling and debugging resource bottlenecks

Digital Workshop Center-Machine Learning and Data Science in Python Final Project

August 2021 - May 2022

(Link to final project repo)

  • Applied data analysis and machine learning concepts to optical character recognition - Evaluated logistic regression, SVM, random forests, and neural networks on MNIST classification
  • Assessed model accuracy using confusion matrices in the matplotlib library - Used k-fold cross-validation to minimize statistical error in results

WORK EXPERIENCE

Device Repair Technician

Company

December 2022 - June 2023

City, state

  • Diagnosed and repaired hardware issues on over 80 student computers per month, restoring mechanical functionality
  • Restored operating system software and BIOS firmware to optimal settings, resolving software-related problems and improving system stability
  • Performed routine maintenance and upgrades on student computers to enhance performance and extend their lifespan
  • Managed parts inventory, ensuring timely availability of necessary repair components
  • Documented repairs and services, maintaining accurate records

Cashier

Company

May 2024 - June 2024

City, state

Cashier

Company

December 2020 - December 2021

City, state

Cashier

Company

December 2015 - April 2017

City, state

EDUCATION

Example Community College, Computer Science AAS (in progress)

Machine Learning and Data Science in Python

Digital Workshop Center, 2021

- Learned and applied data analysis skills to machine learning concepts (see projects)

Example High School Class of 2015

- Focus in engineering electives

CERTIFICATIONS

CompTIA A+

Provider

City, state

2019

REFERENCES

(3 references)

reddit.com
u/ferriematthew — 4 days ago

Uhhh...that's a big number...

The lift value on that particular cell is the biggest number I've ever seen any Android app produce. The sign was also frantically flipping, even though the magnitude was growing without bound.

u/ferriematthew — 4 days ago

Trying to deploy Vaultwarden in k3s with issues

I'm trying to deploy Vaultwarden in my k3s cluster, and it's mostly working...except the service and ingress. The app is running, but it is totally inaccessible. I'm not sure whether I need to use my DeSEC subdomain or whether I can use a .internal fake domain and access it over VPN.

This is the relevant part of my code:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: vaultwarden
  namespace: vaultwarden
  labels:
    app: vaultwarden
spec:
  replicas: 1
  selector:
    matchLabels:
      app: vaultwarden
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: vaultwarden
    spec:
      restartPolicy: Always
      containers:
        - name: vaultwarden
          image: vaultwarden/server:latest
          env:
            - name: DOMAIN
              value: http://vaultwarden.mafmanhomelab.dedyn.io
          ports:
            - containerPort: 80
              protocol: TCP
          volumeMounts:
            - mountPath: /data
              name: vaultwarden-claim0
      volumes:
        - name: vaultwarden-claim0
          persistentVolumeClaim:
            claimName: vaultwarden-claim0


apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: vaultwarden
  namespace: vaultwarden
  labels:
    app: vaultwarden
spec:
  rules:
    - host: "vaultwarden.mafmanhomelab.dedyn.io"
      http:
        paths:
          - path: "/"
            pathType: Prefix
            backend:
              service:
                name: vaultwarden
                port:
                  number: 8000

apiVersion: v1
kind: Service
metadata:
  name: vaultwarden
  namespace: vaultwarden
  labels:
    app: vaultwarden
spec:
  selector:
    app: vaultwarden
  ports:
  - name: "http"
    port: 8000
    targetPort: 8000
reddit.com
u/ferriematthew — 6 days ago

Looking for resume feedback

Firstname Lastname

City, state, United States

email@domain.com

(Phone)

(LinkedIn)

(GitHub)

PROFESSIONAL SUMMARY

Aspiring DevOps developer with 4+ years of experience self-hosting free and open-source solutions on consumer hardware with Docker for containerization. Currently renovating my setup to improve security by integrating VPN access with reverse proxying and migrating hosting to a clustered setup for increased uptime. Passionate about open-source software, digital sovereignty, and highly available services through distributed fault-tolerance.

SKILLS

Containerization and Orchestration (Docker, Kubernetes)

GitOps and CI/CD (ArgoCD)

Monitoring and Observability (Prometheus, Grafana, Loki, Tempo)

Scripting Languages (Bash, Python)

Configuration Languages (YAML, TOML, JSON)

Linux/UNIX Systems (Debian, Arch)

Microservices Architecture, Scalable Infrastructure

Network Management (Load Balancing, Reverse Proxying)

Databases (MySQL, SQLite, PostGreSQL, Redis)

WORK EXPERIENCE

Device Repair Technician

Company

December 2022 - June 2023

City, state

Diagnosed and repaired hardware issues on over 80 student computers per month, restoring mechanical functionality

Restored operating system software and BIOS firmware to optimal settings, resolving software-related problems and improving system stability

Performed routine maintenance and upgrades on student computers to enhance performance and extend their lifespan

Managed parts inventory, ensuring timely availability of necessary repair components Documented repairs and services, maintaining accurate records

PROJECTS

Networking Home Lab

December 2022 - Ongoing

(Repo link)

Utilized Docker to deploy open-source applications to two Raspberry Pi servers in order to reduce reliance on paid commercial software and gain digital autonomy

Learned Bash scripting to automate software updates and optimize uptime

Deployed a TailScale VPN to enable secure access to applications from outside the home network

Migrated container services to a k3s cluster utilizing Longhorn for distributed storage and data synchronization, interacting directly with backend databases when needed to configure storage rules

Deployed an observability stack with Grafana and Prometheus to assist in performance profiling and debugging resource bottlenecks

Digital Workshop Center- Machine Learning and Data Science in Python Final Project

August 2021 - May 2022

(Repo)

Applied data analysis and machine learning concepts to optical character recognition - Evaluated logistic regression, SVM, random forests, and neural networks on MNIST classification

Assessed model accuracy using confusion matrices in the matplotlib library - Used k-fold cross-validation to minimize statistical error in results

EDUCATION

College, Computer Science AAS (in progress)

Machine Learning and Data Science in Python

Digital Workshop Center, 2021

\- Learned and applied data analysis skills to machine learning concepts (see projects)

Example High School Class of 2015

\- Focus in engineering electives

CERTIFICATIONS

CompTIA A+

Provider

City, state

2019

OTHER EXPERIENCE

Cashier

Office Depot

May 2024 - June 2024

City, state

Cashier

The Home Depot

December 2020 - December 2021

City, state

Cashier

Target

December 2015 - April 2017

City, state

REFERENCES

Reference 1

Reference 2

Reference 3

reddit.com
u/ferriematthew — 6 days ago

Morphe Reddit doesn't work with LineageOS

Unfortunately I have no idea how to collect logs, but I can describe the problem. When I patch the Reddit app using Morphe on Lineage OS version 23, the app opens just fine but none of the sign in methods are functional. The sign in using Google button is completely unresponsive, the sign in using phone number option fails to authenticate, and the sign in using email looks like it works at first but the link that they email you redirects you to the failed login. I'm also not sure whether this question is better asked here or in the Morphe subreddit.

In that subreddit's wiki, they do have a pinned post about this exact problem, but in my particular case the solution isn't helping.

reddit.com
u/ferriematthew — 13 days ago
▲ 11 r/Adblock

Does this aggressive advertising feel like extortion to anyone else or am I overreacting?

Did they really have to word it like this? It's like they are fully aware of how annoying they are and they are smugly telling you that you can get them to shut up if you pay up.

u/ferriematthew — 13 days ago
▲ 1 r/MorpheApp+1 crossposts

I accidentally found a workaround for the login bug

Using LineageOS, the patched app was refusing to let me log in, but I could still log in with Firefox. I accidentally discovered that you can actually install Reddit as a standalone web app in Android, which if you use an ad blocker still works somehow. I haven't gotten the officially recommended bypass working but this little workaround seems to work for now.

reddit.com
u/ferriematthew — 13 days ago

NextCloud via Helm with ArgoCD messed up and I'm not sure how I broke it

I keep getting a crash loop when syncing ArgoCD, and the error is that the health check instantly fails because the trusted domain is set to localhost instead of the actual internal IP.

This is the ArgoCD app manifest:

apiVersion: v1
kind: Pod
metadata:
  annotations:
    hooks-hash: 44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a
    nextcloud-config-hash: 2c620d6eac4314c9a69fdfb299af32077aa552fd06db46dbb6c56d93803f75f6
    php-config-hash: 44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a
  creationTimestamp: '2026-08-06T17:41:06Z'
  generateName: nextcloud-78d677b46f-
  generation: 1
  labels:
    app.kubernetes.io/component: app
    app.kubernetes.io/instance: nextcloud
    app.kubernetes.io/name: nextcloud
    pod-template-hash: 78d677b46f
  name: nextcloud-78d677b46f-42kcp
  namespace: nextcloud
  ownerReferences:
    - apiVersion: apps/v1
      blockOwnerDeletion: true
      controller: true
      kind: ReplicaSet
      name: nextcloud-78d677b46f
      uid: d58d3f17-3f15-4ede-bebf-ba406e6eab1a
  resourceVersion: '19251901'
  uid: d6e260a9-2d14-4ee4-9d4a-9c3058e726d4
spec:
  containers:
    - env:
        - name: SQLITE_DATABASE
          value: nextcloud
        - name: REDIS_URL
          value: redis://:$(REDIS_HOST_PASSWORD)@$(REDIS_HOST):$(REDIS_HOST_PORT)
        - name: NEXTCLOUD_ADMIN_USER
          valueFrom:
            secretKeyRef:
              key: nextcloud-username
              name: nextcloud
        - name: NEXTCLOUD_ADMIN_PASSWORD
          valueFrom:
            secretKeyRef:
              key: nextcloud-password
              name: nextcloud
        - name: NEXTCLOUD_TRUSTED_DOMAINS
          value: 10.42.*.*
        - name: OPENMETRICS_ALLOWED_CLIENTS
          value: 127.0.0.1,10.42.0.0/16,10.43.0.0/16
        - name: NEXTCLOUD_DATA_DIR
          value: /var/www/html/data
      image: docker.io/library/nextcloud:34.0.2-apache
      imagePullPolicy: IfNotPresent
      livenessProbe:
        failureThreshold: 3
        httpGet:
          httpHeaders:
            - name: Host
              value: cloud.internal
          path: /status.php
          port: 80
          scheme: HTTP
        initialDelaySeconds: 10
        periodSeconds: 10
        successThreshold: 1
        timeoutSeconds: 5
      name: nextcloud
      ports:
        - containerPort: 80
          name: http
          protocol: TCP
      readinessProbe:
        failureThreshold: 3
        httpGet:
          httpHeaders:
            - name: Host
              value: cloud.internal
          path: /status.php
          port: 80
          scheme: HTTP
        initialDelaySeconds: 10
        periodSeconds: 10
        successThreshold: 1
        timeoutSeconds: 5
      resources: {}
      terminationMessagePath: /dev/termination-log
      terminationMessagePolicy: File
      volumeMounts:
        - mountPath: /var/www/
          name: nextcloud-main
          subPath: root
        - mountPath: /var/www/html
          name: nextcloud-main
          subPath: html
        - mountPath: /var/www/html/data
          name: nextcloud-main
          subPath: data
        - mountPath: /var/www/html/config
          name: nextcloud-main
          subPath: config
        - mountPath: /var/www/html/custom_apps
          name: nextcloud-main
          subPath: custom_apps
        - mountPath: /var/www/tmp
          name: nextcloud-main
          subPath: tmp
        - mountPath: /var/www/html/themes
          name: nextcloud-main
          subPath: themes
        - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
          name: kube-api-access-r7llt
          readOnly: true
  dnsConfig: {}
  dnsPolicy: ClusterFirst
  enableServiceLinks: true
  nodeName: pi-4
  preemptionPolicy: PreemptLowerPriority
  priority: 0
  restartPolicy: Always
  schedulerName: default-scheduler
  securityContext:
    fsGroup: 33
  serviceAccount: default
  serviceAccountName: default
  terminationGracePeriodSeconds: 30
  tolerations:
    - effect: NoExecute
      key: node.kubernetes.io/not-ready
      operator: Exists
      tolerationSeconds: 300
    - effect: NoExecute
      key: node.kubernetes.io/unreachable
      operator: Exists
      tolerationSeconds: 300
  volumes:
    - emptyDir: {}
      name: nextcloud-main
    - name: kube-api-access-r7llt
      projected:
        defaultMode: 420
        sources:
          - serviceAccountToken:
              expirationSeconds: 3607
              path: token
          - configMap:
              items:
                - key: ca.crt
                  path: ca.crt
              name: kube-root-ca.crt
          - downwardAPI:
              items:
                - fieldRef:
                    apiVersion: v1
                    fieldPath: metadata.namespace
                  path: namespace
status:
  conditions:
    - lastProbeTime: null
      lastTransitionTime: '2026-08-06T17:41:08Z'
      observedGeneration: 1
      status: 'True'
      type: PodReadyToStartContainers
    - lastProbeTime: null
      lastTransitionTime: '2026-08-06T17:41:07Z'
      observedGeneration: 1
      status: 'True'
      type: Initialized
    - lastProbeTime: null
      lastTransitionTime: '2026-08-06T17:41:07Z'
      message: 'containers with unready status: [nextcloud]'
      observedGeneration: 1
      reason: ContainersNotReady
      status: 'False'
      type: Ready
    - lastProbeTime: null
      lastTransitionTime: '2026-08-06T17:41:07Z'
      message: 'containers with unready status: [nextcloud]'
      observedGeneration: 1
      reason: ContainersNotReady
      status: 'False'
      type: ContainersReady
    - lastProbeTime: null
      lastTransitionTime: '2026-08-06T17:41:06Z'
      observedGeneration: 1
      status: 'True'
      type: PodScheduled
  containerStatuses:
    - containerID: >-
        containerd://beb30a2bf40db5df7682bd257b4c853957f4e84f0e645889a51672d4c8ea2a5c
      image: docker.io/library/nextcloud:34.0.2-apache
      imageID: >-
        docker.io/library/nextcloud@sha256:d7666d54d87c58d52869ddda36d1acbd4a7f53faf8ab6b91293daf204f3434e8
      lastState:
        terminated:
          containerID: >-
            containerd://beb30a2bf40db5df7682bd257b4c853957f4e84f0e645889a51672d4c8ea2a5c
          exitCode: 0
          finishedAt: '2026-08-06T17:46:59Z'
          reason: Completed
          startedAt: '2026-08-06T17:46:19Z'
      name: nextcloud
      ready: false
      resources: {}
      restartCount: 6
      started: false
      state:
        waiting:
          message: >-
            back-off 2m40s restarting failed container=nextcloud
            pod=nextcloud-78d677b46f-42kcp_nextcloud(d6e260a9-2d14-4ee4-9d4a-9c3058e726d4)
          reason: CrashLoopBackOff
      user:
        linux:
          gid: 0
          supplementalGroups:
            - 0
            - 33
          uid: 0
      volumeMounts:
        - mountPath: /var/www/
          name: nextcloud-main
        - mountPath: /var/www/html
          name: nextcloud-main
        - mountPath: /var/www/html/data
          name: nextcloud-main
        - mountPath: /var/www/html/config
          name: nextcloud-main
        - mountPath: /var/www/html/custom_apps
          name: nextcloud-main
        - mountPath: /var/www/tmp
          name: nextcloud-main
        - mountPath: /var/www/html/themes
          name: nextcloud-main
        - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
          name: kube-api-access-r7llt
          readOnly: true
          recursiveReadOnly: Disabled
  hostIP: 192.168.0.12
  hostIPs:
    - ip: 192.168.0.12
  observedGeneration: 1
  phase: Running
  podIP: 10.42.2.10
  podIPs:
    - ip: 10.42.2.10
  qosClass: BestEffort
  startTime: '2026-08-06T17:41:07Z'

This is my Helm values file:

ingress:
  enabled: true
  className: traefik
  annotations: {}
  labels: {}
  path: /
  pathType: Prefix

nextcloud:
  host: cloud.internal
  username: admin
  password: changeme
  ## Use an existing secret
  existingSecret:
    enabled: false
    # secretName: nameofsecret
    usernameKey: nextcloud-username
    passwordKey: nextcloud-password
    tokenKey: ""
    smtpUsernameKey: smtp-username
    smtpPasswordKey: smtp-password
    smtpHostKey: smtp-host
  update: 0
  # If web server is not binding default port, you can define it
  containerPort: 80
  datadir: /var/www/html/data
  persistence:
    subPath:
  # if set, we'll template this list to the NEXTCLOUD_TRUSTED_DOMAINS env var
  trustedDomains:
    - "10.42.*.*"
  ## SMTP configuration
  mail:
    enabled: false
    # the user we send email as
    fromAddress: user
    # the domain we send email from
    domain: cloud.internal
    smtp:
      host: cloud.internal
      secure: ssl
      port: 465
      authtype: LOGIN
      name: user
      password: pass
  ## Primary ObjectStore options
  # see: https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/primary_storage.html#configuring-object-storage-as-primary-storage
  objectStore:
    # https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/primary_storage.html#simple-storage-service-s3
    s3:
      enabled: false
      # ignored if nextcloud.objectstore.s3.existingSecret is not empty string
      accessKey: ""
      # ignored if nextcloud.objectstore.s3.existingSecret is not empty string
      secretKey: ""
      # use legacy auth method
      legacyAuth: false
      # s3 endpoint to use; only required if you're not using AWS
      host: ""
      # use TLS/SSL for S3 connections
      ssl: true
      # default port that can be changed based on your object store, e.g. for minio, you can use 9000
      port: "443"
      # this is the default in the nextcloud docs
      region: "eu-west-1"
      # required if using s3, the name of the bucket you'd like to use
      bucket: ""
      # object prefix in bucket
      prefix: ""
      # set to true if you are not using DNS for your buckets.
      usePathStyle: false
      # autocreate the bucket
      autoCreate: false
      # optonal parameter: you probably want to keep this as default
      storageClass: "STANDARD"
      # server side encryption key. learn more: https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/primary_storage.html#s3-sse-c-encryption-support
      sse_c_key: ""
      # use an existingSecret for S3 credentials. If set, we ignore the following under nextcloud.objectStore.s3
      # endpoint, accessKey, secretKey
      existingSecret: ""
      secretKeys:
        # key in nextcloud.objectStore.s3.existingSecret to use for s3 endpoint
        host: ""
        # key in nextcloud.objectStore.s3.existingSecret to use for s3 accessKeyID
        accessKey: ""
        # key in nextcloud.objectStore.s3.existingSecret to use for s3 secretAccessKey
        secretKey: ""
        # key in nextcloud.objectStore.s3.existingSecret to use for the s3 bucket
        bucket: ""
        # key in nextcloud.objectStore.s3.existingSecret to use for the s3 sse_c_key
        sse_c_key: ""
    ## options related to using Swift as a primary object storage
    # https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/primary_storage.html#openstack-swift
    swift:
      enabled: false
      # swift user info
      user:
        domain: "Default"
        name: ""
        password: ""
      # swift project info
      project:
        name: ""
        domain: "Default"
      # The Identity / Keystone endpoint
      url: ""
      region: ""
      # optional on some swift implementations
      service: "swift"
      # the container to store the data in
      container: ""
      # autocreate container
      autoCreate: false
  openmetrics:
    allowedClients:
      - "127.0.0.1"
      - "10.42.0.0/16"
      - "10.43.0.0/16"

  ## PHP Configuration files
  # Will be injected in /usr/local/etc/php/conf.d for apache image and in /usr/local/etc/php-fpm.d when nginx.enabled: true
  phpConfigs: {}
  ## Default config files that utilize environment variables:
  # see: https://github.com/nextcloud/docker/tree/master#auto-configuration-via-environment-variables
  # IMPORTANT: Will be used only if you put extra configs, otherwise default will come from nextcloud itself
  # Default confgurations can be found here: https://github.com/nextcloud/docker/tree/master/.config
  defaultConfigs:
    # To protect /var/www/html/config
    .htaccess: true
    # Apache configuration for rewrite urls
    apache-pretty-urls.config.php: true
    # Define APCu as local cache
    apcu.config.php: true
    # Apps directory configs
    apps.config.php: true
    # Used for auto configure database
    autoconfig.php: true
    # Redis default configuration
    redis.config.php: true
    # Reverse proxy default configuration
    reverse-proxy.config.php: true
    # S3 Object Storage as primary storage
    s3.config.php: true
    # SMTP default configuration via environment variables
    smtp.config.php: true
    # Swift Object Storage as primary storage
    swift.config.php: true
    # disables the web based updater as the default nextcloud docker image does not support it
    upgrade-disable-web.config.php: true
    # -- adjust openmetrics
    helm-metrics.config.php: true
    # -- imaginary support config
    imaginary.config.php: false

  # Extra config files created in /var/www/html/config/
  # ref: https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/config_sample_php_parameters.html#multiple-config-php-file
  configs: {}
  # For example, to enable image and text file previews:
  #  previews.config.php: |-
  #    <?php
  #    $CONFIG = array (
  #      'enable_previews' => true,
  #      'enabledPreviewProviders' => array (
  #        'OC\Preview\Movie',
  #        'OC\Preview\PNG',
  #        'OC\Preview\JPEG',
  #        'OC\Preview\GIF',
  #        'OC\Preview\BMP',
  #        'OC\Preview\XBitmap',
  #        'OC\Preview\MP3',
  #        'OC\Preview\MP4',
  #        'OC\Preview\TXT',
  #        'OC\Preview\MarkDown',
  #        'OC\Preview\PDF'
  #      ),
  #    );

  # Hooks for auto configuration
  # Here you could write small scripts which are placed in `/docker-entrypoint-hooks.d/<hook-name>/helm.sh`
  # ref: https://github.com/nextcloud/docker?tab=readme-ov-file#auto-configuration-via-hook-folders
  hooks:
    pre-installation:
    post-installation:
    pre-upgrade:
    post-upgrade:
    before-starting:

  ## Strategy used to replace old pods
  ## IMPORTANT: use with care, it is suggested to leave as that for upgrade purposes
  ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy
  strategy:
    type: Recreate
    # type: RollingUpdate
    # rollingUpdate:
    #   maxSurge: 1
    #   maxUnavailable: 0

  ##
  ## Extra environment variables
  extraEnv:
  #  - name: SOME_SECRET_ENV
  #    valueFrom:
  #      secretKeyRef:
  #        name: nextcloud
  #        key: secret_key

  # Extra init containers that runs before pods start.
  extraInitContainers: []
  #  - name: do-something
  #    image: busybox
  #    command: ['do', 'something']

  # Extra sidecar containers.
  extraSidecarContainers: []
  #  - name: nextcloud-logger
  #    image: busybox
  #    command: [/bin/sh, -c, 'while ! test -f "/run/nextcloud/data/nextcloud.log"; do sleep 1; done; tail -n+1 -f /run/nextcloud/data/nextcloud.log']
  #    volumeMounts:
  #    - name: nextcloud-data
  #      mountPath: /run/nextcloud/data

  # Extra mounts for the pods. Example shown is for connecting a legacy NFS volume
  # to NextCloud pods in Kubernetes. This can then be configured in External Storage
  extraVolumes:
  #  - name: nfs
  #    nfs:
  #      server: "10.0.0.1"
  #      path: "/nextcloud_data"
  #      readOnly: false
  extraVolumeMounts:
  #  - name: nfs
  #    mountPath: "/legacy_data"

  # Set securityContext parameters for the nextcloud CONTAINER only (will not affect nginx container).
  # For example, you may need to define runAsNonRoot directive
  securityContext: {}
  #   runAsUser: 33
  #   runAsGroup: 33
  #   runAsNonRoot: true
  #   readOnlyRootFilesystem: false

  # Set securityContext parameters for the entire pod. For example, you may need to define runAsNonRoot directive
  podSecurityContext: {}
  #   runAsUser: 33
  #   runAsGroup: 33
  #   runAsNonRoot: true
  #   readOnlyRootFilesystem: false

  # Settings for the MariaDB init container
  mariaDbInitContainer:
    resources: {}
    # Set mariadb initContainer securityContext parameters. For example, you may need to define runAsNonRoot directive
    securityContext: {}

  # Settings for the PostgreSQL init container
  postgreSqlInitContainer:
    resources: {}
    # Set postgresql initContainer securityContext parameters. For example, you may need to define runAsNonRoot directive
    securityContext: {}

  # -- priority class for nextcloud.
  # Overrides .Values.priorityClassName
  priorityClassName: ""

nginx:
  ## You need to set an fpm version of the image for nextcloud if you want to use nginx!
  enabled: false

  image:
    registry: docker.io
    repository: library/nginx
    tag: alpine
    pullPolicy: IfNotPresent

  containerPort: 80
  # This configures nginx to listen on either IPv4, IPv6 or both
  ipFamilies:
    - IPv4
    # - IPv6
  config:
    # This generates the default nginx config as per the nextcloud documentation
    default: true
    headers:
      # -- HSTS settings
      # WARNING: Only add the preload option once you read about
      # the consequences in https://hstspreload.org/. This option
      # will add the domain to a hardcoded list that is shipped
      # in all major browsers and getting removed from this list
      # could take several months.
      # Example:
      # "Strict-Transport-Security": "max-age=15768000; includeSubDomains; preload;"
      "Strict-Transport-Security": ""
      "Referrer-Policy": "no-referrer"
      "X-Content-Type-Options": "nosniff"
      "X-Frame-Options": "SAMEORIGIN"
      "X-Permitted-Cross-Domain-Policies": "none"
      "X-Robots-Tag": "noindex, nofollow"
      "X-XSS-Protection": "1; mode=block"

    # Added in server block of default config.
    serverBlockCustom: |
      # set max upload size
      client_max_body_size 512M;
      client_body_timeout 300s;
      fastcgi_buffers 64 4K;
      fastcgi_read_timeout 3600s;

    custom:
    # custom: |-
    #     worker_processes  1;..

  resources: {}

  # Set nginx container securityContext parameters. For example, you may need to define runAsNonRoot directive
  securityContext: {}
  # the nginx alpine container default user is 82
  #   runAsUser: 82
  #   runAsGroup: 33
  #   runAsNonRoot: true
  #   readOnlyRootFilesystem: true

  ## Extra environment variables
  extraEnv: []
  #  - name: SOME_ENV
  #    value: ENV_VALUE

internalDatabase:
  enabled: true
  name: nextcloud

##
## External database configuration
##
externalDatabase:
  enabled: false

  ## Supported database engines: mysql or postgresql
  type: mysql

  ## Database host. You can optionally include a colon delimited port like "myhost:1234"
  host: ""

  ## Database user
  user: nextcloud

  ## Database password
  password: ""

  ## Database name
  database: nextcloud

  ## Use a existing secret
  existingSecret:
    enabled: false
    # -- e.g. nameofsecret
    secretName:
    usernameKey: db-username
    passwordKey: db-password
    # -- e.g. db-hostname-or-ip
    hostKey:
    # -- e.g. db-name
    databaseKey:

##
## MariaDB chart configuration
## ref: https://github.com/bitnami/charts/tree/main/bitnami/mariadb
##
mariadb:
  ## Whether to deploy a mariadb server from the bitnami mariab db helm chart
  # to satisfy the applications database requirements. if you want to deploy this bitnami mariadb, set this and externalDatabase to true
  # To use an ALREADY DEPLOYED mariadb database, set this to false and configure the externalDatabase parameters
  enabled: false

  image:
    registry: docker.io
    repository: bitnamilegacy/mariadb

  # see: https://github.com/bitnami/charts/tree/main/bitnami/mariadb#global-parameters
  global:
    # overwrites the primary.persistence.storageClass value
    defaultStorageClass: "longhorn-ssd"

  auth:
    database: nextcloud
    username: nextcloud
    password: superSecure
    # Use existing secret (auth.rootPassword, auth.password, and auth.replicationPassword will be ignored).
    # secret must contain the keys mariadb-root-password, mariadb-replication-password and mariadb-password
    existingSecret: ""

  architecture: standalone

  ## Enable persistence using Persistent Volume Claims
  ## ref: https://kubernetes.io/docs/concepts/storage/persistent-volumes/
  ##
  primary:
    persistence:
      enabled: true
      # Use an existing Persistent Volume Claim (must be created ahead of time)
      existingClaim: ""
      storageClass: "longhorn-ssd"
      accessMode: ReadWriteOnce
      size: 50Gi

##
## PostgreSQL chart configuration
## for more options see https://github.com/bitnami/charts/tree/main/bitnami/postgresql
##
postgresql:
  enabled: false
  image:
    registry: docker.io
    repository: bitnamilegacy/postgresql
  global:
    postgresql:
      # global.postgresql.auth overrides postgresql.auth
      auth:
        username: nextcloud
        password: changeme
        database: nextcloud
        # Name of existing secret to use for PostgreSQL credentials.
        # auth.postgresPassword, auth.password, and auth.replicationPassword will be ignored and picked up from this secret.
        # secret might also contains the key ldap-password if LDAP is enabled.
        # ldap.bind_password will be ignored and picked from this secret in this case.
        existingSecret: ""
        # Names of keys in existing secret to use for PostgreSQL credentials
        secretKeys:
          adminPasswordKey: ""
          userPasswordKey: ""
          replicationPasswordKey: ""
  primary:
    persistence:
      enabled: false
      # Use an existing Persistent Volume Claim (must be created ahead of time)
      # existingClaim: ""
      # storageClass: ""

##
## External Redis configuration
##
externalRedis:
  enabled: false

  ## Redis host
  host: ""

  ## Redis port
  port: "6379"

  ## Redis password
  password: ""

  ## Use a existing secret
  existingSecret:
    enabled: false
    # secretName: nameofsecret
    passwordKey: redis-password

##
## Redis chart configuration
## for more options see https://github.com/bitnami/charts/tree/main/bitnami/redis
##

redis:
  enabled: false
  image:
    registry: docker.io
    repository: bitnamilegacy/redis
  auth:
    enabled: true
    password: "changeme"
    # name of an existing secret with Redis® credentials (instead of auth.password), must be created ahead of time
    existingSecret: ""
    # Password key to be retrieved from existing secret
    existingSecretPasswordKey: ""
  # Since Redis is used for caching only, you might want to use a storageClass with different reclaim policy and backup settings
  global:
    storageClass: ""
  master:
    persistence:
      enabled: true
  replica:
    persistence:
      enabled: true

##
## Collabora chart configuration
## for more options see https://github.com/CollaboraOnline/online/tree/master/kubernetes/helm/collabora-online
##
collabora:
  enabled: false

  autoscaling:
    # enable autocaling, please check collabora README.md first
    enabled: false

  collabora:
    ## HTTPS nextcloud domain, if needed
    aliasgroups: []
    #   - host: "https://nextcloud.domain:443"

    # set extra parameters for collabora
    # you may need to add --o:ssl.termination=true
    extra_params: --o:ssl.enable=false

    ## Specify server_name when the hostname is not reachable directly for
    # example behind reverse-proxy. example: collabora.domain
    server_name: null

    existingSecret:
      # set to true to to get collabora admin credentials from an existin secret
      # if set, ignores collabora.collabora.username and password
      enabled: false
      # name of existing Kubernetes Secret with collboara admin credentials
      secretName: ""
      usernameKey: "username"
      passwordKey: "password"

    # setup admin login credentials, these are ignored if
    # collabora.collabora.existingSecret.enabled=true
    password: examplepass
    username: admin

  # setup ingress
  ingress:
    # enable ingress for collabora online
    enabled: false
    className: ""
    # please check collabora values.yaml for nginx/haproxy annotations examples
    annotations: {}
    hosts:
      - host: chart-example.local
        paths:
          - path: /
            pathType: ImplementationSpecific
    tls: []
    #  - secretName: collabora-ingress-tls
    #    hosts:
    #      - collabora.domain

  # see collabora helm README.md for recommended values
  resources: {}

## Cronjob to execute Nextcloud background tasks
## ref: https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/background_jobs_configuration.html#cron
##
cronjob:
  enabled: false

  # Either 'sidecar' or 'cronjob'
  type: sidecar

  # Runs crond as a sidecar container in the Nextcloud pod
  # Note: crond requires root
  sidecar:
    ## Cronjob sidecar resource requests and limits
    ## ref: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
    ##
    resources: {}

    # Allow configuration of lifecycle hooks
    # ref: https://kubernetes.io/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/
    lifecycle: {}
    # lifecycle:
    #   postStartCommand: []
    #   preStopCommand: []
    # Set securityContext parameters. For example, you may need to define runAsNonRoot directive
    securityContext: {}
    #   runAsUser: 33
    #   runAsGroup: 33
    #   runAsNonRoot: true
    #   readOnlyRootFilesystem: true

    # The command the cronjob container executes.
    command:
      - /cron.sh

  # Uses a Kubernetes CronJob to execute the Nextcloud cron tasks
  # Note: can run as non-root user. Should run as same user as the Nextcloud pod.
  cronjob:
    # Use a CronJob instead of crond sidecar container
    # crond does not work when not running as root user
    # Note: requires `persistence.enabled=true`
    schedule: "*/5 * * * *"
    successfulJobsHistoryLimit: 3
    failedJobsHistoryLimit: 5
    activeDeadlineSeconds:
    # -- Additional labels for cronjob
    labels: {}
    # -- Additional labels for cronjob pod
    podLabels: {}
    annotations: {}
    backoffLimit: 1
    affinity: {}
    # Often RWO volumes are used. But the cronjob pod needs access to the same volume as the nextcloud pod.
    # Depending on your provider two pods on the same node can still access the same volume.
    # Following config ensures that the cronjob pod is scheduled on the same node as the nextcloud pod.
    # affinity:
    #   podAffinity:
    #     requiredDuringSchedulingIgnoredDuringExecution:
    #       - labelSelector:
    #           matchExpressions:
    #             - key: app.kubernetes.io/name
    #               operator: In
    #               values:
    #                 - nextcloud
    #             - key: app.kubernetes.io/component
    #               operator: In
    #               values:
    #                 - app
    #         topologyKey: kubernetes.io/hostname

    ## Resource requests and limits
    ## ref: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
    ##
    resources: {}

    # -- priority class for the cron job.
    # Overrides .Values.priorityClassName
    priorityClassName: ""

    # Allow configuration of lifecycle hooks
    # ref: https://kubernetes.io/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/
    # Set securityContext parameters. For example, you may need to define runAsNonRoot directive
    securityContext: {}
    #   runAsUser: 33
    #   runAsGroup: 33
    #   runAsNonRoot: true
    #   readOnlyRootFilesystem: true

    # The command to run in the cronjob container
    # Example to incerase memory limit: php -d memory_limit=2G ...
    command:
      - php
      - -f
      - /var/www/html/cron.php
      - --
      - --verbose

service:
  type: ClusterIP
  port: 8080
  loadBalancerIP: ""
  nodePort:
  # -- use additional annotation on service for nextcloud
  annotations: {}
  # -- Set this to "ClientIP" to make sure that connections from the same client
  # are passed to the same Nextcloud pod each time.
  sessionAffinity: ""
  sessionAffinityConfig: {}

## Enable persistence using Persistent Volume Claims
## ref: https://kubernetes.io/docs/concepts/storage/persistent-volumes/
##
persistence:
  # Nextcloud Data (/var/www/html)
  enabled: false
  annotations: {}
  labels: {}
  ## nextcloud data Persistent Volume Storage Class
  ## If defined, storageClassName: <storageClass>
  ## If set to "-", storageClassName: "", which disables dynamic provisioning
  ## If undefined (the default) or set to null, no storageClassName spec is
  ##   set, choosing the default provisioner.  (gp2 on AWS, standard on
  ##   GKE, AWS & OpenStack)
  ##
  # storageClass: "-"

  ## A manually managed Persistent Volume and Claim
  ## Requires persistence.enabled: true
  ## If defined, PVC must be created manually before volume will be bound
  # existingClaim:

  accessMode: ReadWriteOnce
  size: 8Gi

  # -- If defined, use a hostPath volume for nextcloud data rather than a dynamically defined PVC.
  hostPath:

  ## Use an additional pvc for the data directory rather than a subpath of the default PVC
  ## Useful to store data on a different storageClass (e.g. on slower disks)
  nextcloudData:
    enabled: false
    # -- If defined, use a hostPath volume for nextcloud data rather than a dynamically defined PVC.
    hostPath:
    subPath:
    labels: {}
    annotations: {}
    # storageClass: "-"
    # existingClaim:
    accessMode: ReadWriteOnce
    size: 8Gi

resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# resources:
#   limits:
#    cpu: 100m
#    memory: 128Mi
#   requests:
#    cpu: 100m
#    memory: 128Mi

# -- Priority class for pods. This is the _default_
# priority class for pods created by this deployment - it may be
# overridden by more specific instances of priorityClassName -
# e.g. cronjob.cronjob.priorityClassName
priorityClassName: ""

## Liveness and readiness probe values
## Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
##
livenessProbe:
  enabled: true
  initialDelaySeconds: 10
  periodSeconds: 10
  timeoutSeconds: 5
  failureThreshold: 3
  successThreshold: 1
readinessProbe:
  enabled: true
  initialDelaySeconds: 10
  periodSeconds: 10
  timeoutSeconds: 5
  failureThreshold: 3
  successThreshold: 1
startupProbe:
  enabled: false
  initialDelaySeconds: 30
  periodSeconds: 10
  timeoutSeconds: 5
  failureThreshold: 30
  successThreshold: 1

## Enable pod autoscaling using HorizontalPodAutoscaler
## ref: https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/
##
hpa:
  enabled: false
  cputhreshold: 60
  minPods: 1
  maxPods: 10

nodeSelector: {}

tolerations: []

# -- Nextcloud pod topologySpreadConstraints
topologySpreadConstraints: []

affinity: {}

dnsConfig:
  # -- Custom dns config for Nextcloud containers.
  # You can for example configure ndots. This may be needed in some clusters with alpine images.
  # options:
  #   - name: ndots
  #     value: "1"
  options: []

imaginary:
  # -- Start Imgaginary
  enabled: false
  # -- Number of imaginary pod replicas to deploy
  replicaCount: 1

  image:
    # -- Imaginary image registry
    registry: docker.io
    # -- Imaginary image name
    repository: h2non/imaginary
    # -- Imaginary image tag
    tag: 1.2.4
    # -- Imaginary image pull policy
    pullPolicy: IfNotPresent
    # -- Imaginary image pull secrets
    pullSecrets: []

  # -- Additional annotations for imaginary
  podAnnotations: {}
  # -- Additional labels for imaginary
  podLabels: {}
  # -- Imaginary pod nodeSelector
  nodeSelector: {}
  # -- Imaginary pod tolerations
  tolerations: []
  # -- Imaginary pod topologySpreadConstraints
  topologySpreadConstraints: []

  # -- imaginary resources
  resources: {}

  # -- priority class for imaginary.
  # Overrides .Values.priorityClassName
  priorityClassName: ""

  # -- Optional security context for the Imaginary container
  securityContext:
    runAsUser: 1000
    runAsNonRoot: true
    # allowPrivilegeEscalation: false
    # capabilities:
    #   drop:
    #     - ALL

  # -- Optional security context for the Imaginary pod (applies to all containers in the pod)
  podSecurityContext: {}
  # runAsNonRoot: true
  # seccompProfile:
  #   type: RuntimeDefault

  readinessProbe:
    enabled: true
    failureThreshold: 3
    successThreshold: 1
    periodSeconds: 10
    timeoutSeconds: 1
  livenessProbe:
    enabled: true
    failureThreshold: 3
    successThreshold: 1
    periodSeconds: 10
    timeoutSeconds: 1

  service:
    # -- Imaginary: Kubernetes Service type
    type: ClusterIP
    # -- Imaginary: LoadBalancerIp for service type LoadBalancer
    loadBalancerIP:
    # -- Imaginary: NodePort for service type NodePort
    nodePort:
    # -- Additional annotations for service imaginary
    annotations: {}
    # -- Additional labels for service imaginary
    labels: {}

## Prometheus Exporter / Metrics
##
metrics:
  enabled: false

  replicaCount: 1
  # Optional: becomes NEXTCLOUD_SERVER env var in the nextcloud-exporter container.
  # Without it, we will use the full name of the nextcloud service
  server: ""
  # The metrics exporter needs to know how you serve Nextcloud either http or https
  https: false
  # Use API token if set, otherwise fall back to password authentication
  # https://github.com/xperimental/nextcloud-exporter#token-authentication
  # Currently you still need to set the token manually in your nextcloud install
  token: ""
  timeout: 5s
  # if set to true, exporter skips certificate verification of Nextcloud server.
  tlsSkipVerify: false
  info:
    # Optional: becomes NEXTCLOUD_INFO_APPS env var in the nextcloud-exporter container.
    # Enables gathering of apps-related metrics. Defaults to false
    apps: false
    update: false

  image:
    registry: docker.io
    repository: xperimental/nextcloud-exporter
    tag: 0.9.1
    pullPolicy: IfNotPresent
    # pullSecrets:
    #   - myRegistrKeySecretName

  ## Metrics exporter resource requests and limits
  ## ref: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
  ##
  resources: {}

  # -- Metrics exporter pod Annotation
  podAnnotations: {}

  # -- Metrics exporter pod Labels
  podLabels: {}

  # -- Metrics exporter pod nodeSelector
  nodeSelector: {}

  # -- Metrics exporter pod tolerations
  tolerations: []

  # -- Metrics exporter pod affinity
  affinity: {}

  service:
    type: ClusterIP
    # Use serviceLoadBalancerIP to request a specific static IP,
    # otherwise leave blank
    loadBalancerIP:
    annotations:
      prometheus.io/scrape: "true"
      prometheus.io/port: "9205"
    labels: {}

  # -- security context for the metrics CONTAINER in the pod
  securityContext:
    runAsUser: 1000
    runAsNonRoot: true
    # allowPrivilegeEscalation: false
    # capabilities:
    #   drop:
    #     - ALL

  # -- security context for the metrics POD
  podSecurityContext: {}
  # runAsNonRoot: true
  # seccompProfile:
  #   type: RuntimeDefault

prometheus:
  ## Prometheus Operator ServiceMonitor configuration
  ## collects data from nextcloud openmetrics and nextcloud-exporter if enabled
  serviceMonitor:
    ## @param metrics.serviceMonitor.enabled Create ServiceMonitor Resource for scraping metrics using PrometheusOperator
    ##
    enabled: false

    ## @param metrics.serviceMonitor.namespace Namespace in which Prometheus is running
    ##
    namespace: ""

    ## @param metrics.serviceMonitor.namespaceSelector The selector of the namespace where the target service is located (defaults to the release namespace)
    namespaceSelector:

    ## @param metrics.serviceMonitor.jobLabel The name of the label on the target service to use as the job name in prometheus.
    ##
    jobLabel: ""

    ## @param metrics.serviceMonitor.interval Interval at which metrics should be scraped
    #  ref: https://prometheus-operator.dev/docs/api-reference/api/#monitoring.coreos.com/v1.Endpoint
    ##
    interval: 30s

    ## @param metrics.serviceMonitor.scrapeTimeout Specify the timeout after which the scrape is ended
    #  ref: https://prometheus-operator.dev/docs/api-reference/api/#monitoring.coreos.com/v1.Endpoint
    ##
    scrapeTimeout: ""

    ## @param metrics.serviceMonitor.labels Extra labels for the ServiceMonitor
    ##
    labels: {}

  rules:
    # -- Deploy Prometheus Rules (Alerts) for the exporter
    # @section -- Metrics
    enabled: false
    # -- Label on Prometheus Rules CRD Manifest
    # @section -- Metrics
    labels: {}
    defaults:
      # -- Add Default Rules
      # @section -- Metrics
      enabled: true
      # -- Label on the rules (the severity is already set)
      # @section -- Metrics
      labels: {}
      # -- Filter on metrics on alerts (default just for this helm-chart)
      # @section -- Metrics
      filter: ""
    # -- Add own Rules to Prometheus Rules
    # @section -- Metrics
    additionalRules: []

rbac:
  enabled: false
  serviceaccount:
    create: true
    name: nextcloud-serviceaccount
    annotations: {}

## @param securityContext for nextcloud pod @deprecated Use `nextcloud.podSecurityContext` instead
securityContext: {}

# -- Allows users to inject additional Kubernetes manifests (YAML) to be rendered with the release.
# Could either be a list or a map
# If a map, each key is the name of the manifest.
# If an array, each item is a manifest, which can be a string (YAML block) or a YAML object.
# Each item should be a string containing valid YAML. Example:
# extraManifests:
#   - |
#     apiVersion: traefik.containo.us/v1alpha1
#     kind: Middleware
#     metadata:
#       name: my-middleware
#     spec:
#       ...
#   - |
#     apiVersion: traefik.containo.us/v1alpha1
#     kind: IngressRoute
#     metadata:
#       name: my-ingressroute
#     spec:
#       ...
# Or as a map:
# extraManifests:
#   my-middleware:
#     apiVersion: traefik.containo.us/v1alpha1
#     kind: Middleware
#     metadata:
#       name: my-middleware
#     spec:
#       ...
#   my-ingressroute:
#     apiVersion: traefik.containo.us/v1alpha1
#     kind: IngressRoute
#     metadata:
#       name: my-ingressroute
#     spec:
#       ...
extraManifests: []
reddit.com
u/ferriematthew — 14 days ago

How the hell do I stop sleeping? Caffeine doesn't do jack, and not even modafinil works that well anymore

If I consume enough caffeine to have a measurable effect on my alertness, it just makes my gut very very upset with me and I spend the entire day in the bathroom. I'm on prescription modafinil to help with this but I don't really feel much of an effect anymore.

I'm so damn resistant to caffeine in fact that it doesn't even raise my heart rate anymore.

reddit.com
u/ferriematthew — 17 days ago
▲ 0 r/pihole

How do I set up PiHole with redundancy in k3s?

Currently I run PiHole with Unbound as a single instance deployment in k3s, but that means that whenever I have to reboot any of the three nodes, I lose DNS and have to switch back to my ISP. How do I run PiHole plus Unbound as a stateful set so that I can afford to reboot one or more devices?

reddit.com
u/ferriematthew — 23 days ago

Is it possible in terms of patent law to have even the cellular modem design open sourced?

I'm not quite sure if this belongs here, but is it technically legally possible in terms of patents to have everything right down to the cell modem open source designed so that literally nothing depends on proprietary corporate anything?

reddit.com
u/ferriematthew — 25 days ago
▲ 2 r/ArgoCD

ArgoCD seems to be getting confused by only one of the helm charts in my setup

This is the error log that I'm getting:

ComparisonError: Failed to load target state: failed to generate manifest for source 1 of 1: rpc error: code = Unknown desc = Manifest generation error (cached): rpc error: code = FailedPrecondition desc = Failed to unmarshal "values.yaml": failed to unmarshal manifest: error unmarshaling JSON: while decoding JSON: Object 'Kind' is missing in '{"affinity":{},"collabora":{"autoscaling":{"enabled":false},"collabora":{"aliasgroups":\[\],"existingSecret":{"enabled":false,"passwordKey":"password","secretName":"","usernameKey":"username"},"extra\_params":"--o:ssl.enable=false","password":"examplepass","server\_name":null,"username":"admin"},"enabled":false,"ingress":{"annotations":{},"className":"","enabled":false,"hosts":\[{"host":"chart-example.local","paths":\[{"path":"/","pathType":"ImplementationSpecific"}\]}\],"tls":\[\]},"resources":{}},"cronjob":{"cronjob":{"activeDeadlineSeconds":null,"affinity":{},"annotations":{},"backoffLimit":1,"command":\["php","-f","/var/www/html/cron.php","--","--verbose"\],"failedJobsHistoryLimit":5,"labels":{},"podLabels":{},"priorityClassName":"","resources":{},"schedule":"\*/5 \* \* \* \*","securityContext":{},"successfulJobsHistoryLimit":3},"enabled":false,"sidecar":{"command":\["/cron.sh"\],"lifecycle":{},"resources":{},"securityContext":{}},"type":"sidecar"},"dnsConfig":{"options":\[\]},"externalDatabase":{"database":"nextcloud","enabled":false,"existingSecret":{"databaseKey":null,"enabled":false,"hostKey":null,"passwordKey":"db-password","secretName":null,"usernameKey":"db-username"},"host":"","password":"","type":"mysql","user":"nextcloud"},"externalRedis":{"enabled":false,"existingSecret":{"enabled":false,"passwordKey":"redis-password"},"host":"","password":"","port":"6379"},"extraManifests":\[\],"hpa":{"cputhreshold":60,"enabled":false,"maxPods":10,"minPods":1},"imaginary":{"enabled":false,"image":{"pullPolicy":"IfNotPresent","pullSecrets":\[\],"registry":"docker.io","repository":"h2non/imaginary","tag":"1.2.4"},"livenessProbe":{"enabled":true,"failureThreshold":3,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1},"nodeSelector":{},"podAnnotations":{},"podLabels":{},"podSecurityContext":{},"priorityClassName":"","readinessProbe":{"enabled":true,"failureThreshold":3,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1},"replicaCount":1,"resources":{},"securityContext":{"runAsNonRoot":true,"runAsUser":1000},"service":{"annotations":{},"labels":{},"loadBalancerIP":null,"nodePort":null,"type":"ClusterIP"},"tolerations":\[\],"topologySpreadConstraints":\[\]},"ingress":{"annotations":{},"className":"traefik","enabled":true,"labels":{},"path":"/","pathType":"Prefix"},"internalDatabase":{"enabled":true,"name":"nextcloud"},"livenessProbe":{"enabled":true,"failureThreshold":3,"initialDelaySeconds":10,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":5},"mariadb":{"architecture":"standalone","auth":{"database":"nextcloud","existingSecret":"","password":"superSecure","username":"nextcloud"},"enabled":false,"global":{"defaultStorageClass":"longhorn-ssd"},"image":{"registry":"docker.io","repository":"bitnamilegacy/mariadb"},"primary":{"persistence":{"accessMode":"ReadWriteOnce","enabled":true,"existingClaim":"","size":"50Gi","storageClass":"longhorn-ssd"}}},"metrics":{"affinity":{},"enabled":false,"https":false,"image":{"pullPolicy":"IfNotPresent","registry":"docker.io","repository":"xperimental/nextcloud-exporter","tag":"0.9.1"},"info":{"apps":false,"update":false},"nodeSelector":{},"podAnnotations":{},"podLabels":{},"podSecurityContext":{},"replicaCount":1,"resources":{},"securityContext":{"runAsNonRoot":true,"runAsUser":1000},"server":"","service":{"annotations":{"prometheus.io/port":"9205","prometheus.io/scrape":"true"},"labels":{},"loadBalancerIP":null,"type":"ClusterIP"},"timeout":"5s","tlsSkipVerify":false,"token":"","tolerations":\[\]},"nextcloud":{"configs":{},"containerPort":80,"datadir":"/var/www/html/data","defaultConfigs":{".htaccess":true,"apache-pretty-urls.config.php":true,"apcu.config.php":true,"apps.config.php":true,"autoconfig.php":true,"helm-metrics.config.php":true,"imaginary.config.php":false,"redis.config.php":true,"reverse-proxy.config.php":true,"s3.config.php":true,"smtp.config.php":true,"swift.config.php":true,"upgrade-disable-web.config.php":true},"existingSecret":{"enabled":false,"passwordKey":"nextcloud-password","smtpHostKey":"smtp-host","smtpPasswordKey":"smtp-password","smtpUsernameKey":"smtp-username","tokenKey":"","usernameKey":"nextcloud-username"},"extraEnv":null,"extraInitContainers":\[\],"extraSidecarContainers":\[\],"extraVolumeMounts":null,"extraVolumes":null,"hooks":{"before-starting":null,"post-installation":null,"post-upgrade":null,"pre-installation":null,"pre-upgrade":null},"host":"cloud.internal","mail":{"domain":"domain.com","enabled":false,"fromAddress":"user","smtp":{"authtype":"LOGIN","host":"domain.com","name":"user","password":"pass","port":465,"secure":"ssl"}},"mariaDbInitContainer":{"resources":{},"securityContext":{}},"objectStore":{"s3":{"accessKey":"","autoCreate":false,"bucket":"","enabled":false,"existingSecret":"","host":"","legacyAuth":false,"port":"443","prefix":"","region":"eu-west-1","secretKey":"","secretKeys":{"accessKey":"","bucket":"","host":"","secretKey":"","sse\_c\_key":""},"sse\_c\_key":"","ssl":true,"storageClass":"STANDARD","usePathStyle":false},"swift":{"autoCreate":false,"container":"","enabled":false,"project":{"domain":"Default","name":""},"region":"","service":"swift","url":"","user":{"domain":"Default","name":"","password":""}}},"openmetrics":{"allowedClients":\["127.0.0.1","10.42.0.0/16","10.43.0.0/16"\]},"password":"changeme","persistence":{"subPath":null},"phpConfigs":{},"podSecurityContext":{},"postgreSqlInitContainer":{"resources":{},"securityContext":{}},"priorityClassName":"","securityContext":{},"strategy":{"type":"Recreate"},"trustedDomains":\[\],"update":0,"username":"admin"},"nginx":{"config":{"custom":null,"default":true,"headers":{"Referrer-Policy":"no-referrer","Strict-Transport-Security":"","X-Content-Type-Options":"nosniff","X-Frame-Options":"SAMEORIGIN","X-Permitted-Cross-Domain-Policies":"none","X-Robots-Tag":"noindex, nofollow","X-XSS-Protection":"1; mode=block"},"serverBlockCustom":"# set max upload size\\nclient\_max\_body\_size 512M;\\nclient\_body\_timeout 300s;\\nfastcgi\_buffers 64 4K;\\nfastcgi\_read\_timeout 3600s;\\n"},"containerPort":80,"enabled":false,"extraEnv":\[\],"image":{"pullPolicy":"IfNotPresent","registry":"docker.io","repository":"library/nginx","tag":"alpine"},"ipFamilies":\["IPv4"\],"resources":{},"securityContext":{}},"nodeSelector":{},"persistence":{"accessMode":"ReadWriteOnce","annotations":{},"enabled":false,"hostPath":null,"labels":{},"nextcloudData":{"accessMode":"ReadWriteOnce","annotations":{},"enabled":false,"hostPath":null,"labels":{},"size":"8Gi","subPath":null},"size":"8Gi"},"postgresql":{"enabled":false,"global":{"postgresql":{"auth":{"database":"nextcloud","existingSecret":"","password":"changeme","secretKeys":{"adminPasswordKey":"","replicationPasswordKey":"","userPasswordKey":""},"username":"nextcloud"}}},"image":{"registry":"docker.io","repository":"bitnamilegacy/postgresql"},"primary":{"persistence":{"enabled":false}}},"priorityClassName":"","prometheus":{"rules":{"additionalRules":\[\],"defaults":{"enabled":true,"filter":"","labels":{}},"enabled":false,"labels":{}},"serviceMonitor":{"enabled":false,"interval":"30s","jobLabel":"","labels":{},"namespace":"","namespaceSelector":null,"scrapeTimeout":""}},"rbac":{"enabled":false,"serviceaccount":{"annotations":{},"create":true,"name":"nextcloud-serviceaccount"}},"readinessProbe":{"enabled":true,"failureThreshold":3,"initialDelaySeconds":10,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":5},"redis":{"auth":{"enabled":true,"existingSecret":"","existingSecretPasswordKey":"","password":"changeme"},"enabled":false,"global":{"storageClass":""},"image":{"registry":"docker.io","repository":"bitnamilegacy/redis"},"master":{"persistence":{"enabled":true}},"replica":{"persistence":{"enabled":true}}},"resources":{},"securityContext":{},"service":{"annotations":{},"loadBalancerIP":"","nodePort":null,"port":8080,"sessionAffinity":"","sessionAffinityConfig":{},"type":"ClusterIP"},"startupProbe":{"enabled":false,"failureThreshold":30,"initialDelaySeconds":30,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":5},"tolerations":\[\],"topologySpreadConstraints":\[\]}'

This is the relevant app manifest:

project: default
source:
  repoURL: https://codeberg.org/kaizenOramara\_97/Home-Lab.git
  path: k3s/nextcloud
  targetRevision: HEAD

destination:
  server: https://kubernetes.default.svc
  namespace: nextcloud

syncPolicy:
  automated:
    prune: true
    selfHeal: false
    enabled: false
reddit.com
u/ferriematthew — 27 days ago

I realized something really cool in some of the conversations from my previous post. (VERY NERDY)

It seems as though for the most part, people on both the libertarian left and libertarian right have a surprising amount of overlap in their opinions on a few things, even if they loudly disagree on basically everything else. It's almost like if you consider yourself a libertarian, left or right, both sides mostly agree on what the problem is, but they disagree on who or what caused the problem and how to solve it. In general it looks as though people who lean libertarian left see the problem as stemming from human nature being inherently greedy, and look for regulatory means to fix it, but people on the libertarian right see it as people making rational decisions under restrictions imposed by authority so they look for ways to remove those restrictions.

Both of those opinions are equally valid and have their strengths and shortcomings, which is probably why one side has not dominated the other yet. It's almost like if you think of politics as a two-dimensional surface, with the horizontal axis being economic policy and the vertical axis being the social policy, left wing and right wing economics share a lot of overlap so it's like they kind of approximate each other in weird ways, so you could fold that 2D surface into something like a cylinder. The vertical ends of the scale have basically nothing in common so it would not be a torus, just a cylinder. What's funny is the left and right ends of that scale rhyme but they don't have a lot of strict commonalities, so it would be less like a clean cut and paste and more like a slip space drive from Halo had a stroke LOL

reddit.com
u/ferriematthew — 29 days ago

Is switching the operating system of my Motorola Moto G 5G 2024 to lineageOS a good temporary stopgap solution to how Google is determined to close off the Android ecosystem?

I'm planning on saving up for the oldest Google Pixel model that I can find that supports 5G, because that has better support for non Android operating systems, but until then, would a good stopgap solution be to try to build and flash Lineage to this device?

reddit.com
u/ferriematthew — 29 days ago

I have a genuine question about people like Nic, or who have similar worldviews to Nic... please be civil and take this question in good faith.

Why is it that a lot of military meme youtubers, especially those who are veterans, tend to oversimplify and assume that anything left of hyper capitalism is literally stalinism? Is nuance dead, where it cannot be simultaneously true that unchecked greed is bad and centralized forced redistribution is unsustainable?

I would be one of the first people to agree with Nic that what the USSR did was incredibly badly planned and was even worse in its execution given that they tried it in a backwards agrarian society in the largest country on the planet, but there are more than two options between extractive exploitative capitalism and hypercentralized command economies.

reddit.com
u/ferriematthew — 30 days ago