Skip to content
This repository was archived by the owner on Jan 4, 2026. It is now read-only.

add juicefs and jellyfin config#292

Merged
jessebot merged 25 commits intomainfrom
juicefs
Sep 27, 2025
Merged

add juicefs and jellyfin config#292
jessebot merged 25 commits intomainfrom
juicefs

Conversation

@cloudymax
Copy link
Copy Markdown
Collaborator

@cloudymax cloudymax commented Jul 20, 2024

Adds configuration for both juicefs and jellyfin.

Jellyfin

Jellyfin is a home media server.
We highly recommend downloading some of the wonderful Blender Studio Open Source Films that are all Creative Commons licensed 🧡

jellyfin config example
apps:
  jellyfin:
    enabled: true
    description: |
      [link=https://jellyfin.com/opensource]jellyfin[/link] is an open source self media hosting platform that replaces something like emby or plex.
      Once you've got everything up and running, consider downloading some of Blender Studio's fantastic Creative Commons licensed open source films:
      [link=https://download.blender.org/demo/movies/]download.blender.org/demo/movies/[/link]
    init:
      # Switch to false if you don't want to create intial secrets or use the
      # API via a service acocunt to create the above described resources
      enabled: true
      restore:
        enabled: false
        restic_snapshot_ids:
          media: latest
          config: latest
    backups:
      # cronjob syntax schedule to run jellyfin seaweedfs pvc backups
      pvc_schedule: 10 0 * * *
      s3:
        # these are for pushing remote backups of your local s3 storage, for speed and cost optimization
        endpoint: example
        bucket: example
        region: auto
        # secret_access_key:
        #   value_from:
        #     env: JELLYFIN_S3_BACKUP_SECRET_KEY
        # access_key_id:
        #   value_from:
        #     env: JELLYFIN_S3_BACKUP_ACCESS_ID
      # restic_repo_password:
      #   value_from:
      #     env: JELLYFIN_RESTIC_REPO_PASSWORD
    argo:
      # secrets keys to make available to Argo CD ApplicationSets
      secret_keys:
        # FQDN to use for jellyfin
        hostname: jelly.example.com
        # tolerations and affinity (important if you're not using networked storage)
        toleration_key: dedicated
        toleration_operator: Equal
        toleration_value: example
        toleration_effect: NoSchedule
        affinity_key: dedicated
        affinity_value: example
        # enable persistent volume claim for jellyfin media storage
        media_pvc_enabled: 'true'
        # size of media pvc storage
        media_storage: 250Gi
        media_storage_class: local-path
        media_access_mode: ReadWriteOnce
        # enable persistent volume claim for jellyfin config storage
        config_pvc_enabled: 'true'
        # size of config pvc storage
        config_storage: 2Gi
        config_access_mode: ReadWriteOnce
        config_storage_class: local-path
      # repo to install the Argo CD app from
      # git repo to install the Argo CD app from
      repo: https://github.com/small-hack/argocd-apps
      # path in the argo repo to point to. Trailing slash very important!
      path: jellyfin/app_of_apps/
      # either the branch or tag to point at in the argo repo above
      revision: main
      # kubernetes cluster to install the k8s app into, defaults to Argo CD default
      cluster: https://kubernetes.default.svc
      # namespace to install the k8s app in
      namespace: jellyfin
      # recurse directories in the provided git repo
      directory_recursion: false
      # source repos for Argo CD App Project (in addition to argo.repo)
      project:
        source_repos:
          - https://jellyfin.github.io/jellyfin-helm
          - https://small-hack.github.io/cloudnative-pg-cluster-chart
          - https://operator.min.io/
          - https://seaweedfs.github.io/seaweedfs/helm
        destination:
          # automatically includes the app's namespace and argocd's namespace
          namespaces: []
        name: jellyfin

JuiceFS

JuiceFS is a high-performance network-backed filesystem based on using a Key-Value Store as a caching layer in-front of S3. This allows it to provide low-latency file access AND high throughput at the cost of extra memory and cpu usage. Only needed in situations where low-latency disk reads are required for application stability/performance (virtual-machines, games). Otherwise SeaweedFS-CSI is preferred.

juicefs config example
apps:
  juicefs:
    enabled: true
    description: |
      [link=https://github.com/juicedata/juicefs]juicefs[/link] JuiceFS is a distributed POSIX file system built on top of Redis and S3 (but we use Valkey and SeaweedFS).
    init:
      enabled: true
      values:
        s3_access_key_id:
          value_from:
            env: JUICEFS_S3_ACCESS_KEY_ID
        s3_secret_access_key:
          value_from:
            env: JUICEFS_S3_SECRET_ACCESS_KEY
        bucket_name: juicefs
      restore:
        # set to true to run a restic restore via a k8up job for:
        # seaweedfs pvcs and nextcloud files pvc
        enabled: false
        # for Cloudnative Postgres operator "cluster" CRD type resources
        cnpg_restore: true
        # restic snapshot ID for each PVC
        restic_snapshot_ids:
          # juicefs-valkey-primary volume pvc snapshot id
          juicefs_primary: latest
          # juicefs-valkey-replica volume pvc snapshot id
          juicefs_replica: latest
    backups:
      # cronjob syntax schedule to run nextcloud pvc backups
      pvc_schedule: 10 0 * * *
      # cronjob syntax (with SECONDS field) for nextcloud postgres backups
      # must happen at least 10 minutes before pvc backups, to avoid corruption
      # due to missing files. This is because the cnpg backup shows as completed
      # before it actually is, due to the wal archive it lists as it's end not
      # being in the backup yet
      postgres_schedule: 0 0 0 * * *
      s3:
        # these are for pushing remote backups of your local s3 storage, for speed and cost optimization
        endpoint: https://s3.eu-central-003.my-s3-provider.com
        bucket: juicefs-backups
        region: eu-central-003
        secret_access_key:
          value_from:
            env: JUICEFS_S3_BACKUP_SECRET_ACCESS_KEY
        access_key_id:
          value_from:
            env: JUICEFS_S3_BACKUP_ACCESS_KEY_ID
      restic_repo_password:
        value_from:
          env: JUICEFS_RESTIC_REPO_PASSWORD
    argo:
      # secrets keys to make available to Argo CD ApplicationSets
      secret_keys:
        hostname: juicefs.example.com
        valkey_pvc_size: 32G
        valkey_pvc_storage_class: fast-raid
      # git repo to install the Argo CD app from
      repo: https://github.com/small-hack/argocd-apps
      # path in the argo repo to point to. Trailing slash very important!
      path: demo/juicefs/app_of_apps/
      # either the branch or tag to point at in the argo repo above
      revision: main
      # kubernetes cluster to install the k8s app into, defaults to Argo CD default
      cluster: https://kubernetes.default.svc
      # namespace to install the k8s app in
      namespace: juicefs
      # recurse directories in the provided git repo
      # if set to false, we will not deploy the CSI driver
      directory_recursion: true
      # source repos for Argo CD App Project (in addition to argo.repo)
      project:
        name: juicefs
        source_repos:
          - https://juicedata.github.io/charts/
          - registry-1.docker.io
        destination:
          # automatically includes the app's namespace and argocd's namespace
          namespaces: []
  k8tz:

@cloudymax cloudymax requested a review from jessebot as a code owner July 20, 2024 17:47
@jessebot
Copy link
Copy Markdown
Collaborator

Please add docs and then I'm happy to merge this :)

@jessebot jessebot assigned jessebot and cloudymax and unassigned jessebot Aug 24, 2025
@jessebot jessebot added the ✨ enhancement New feature request label Aug 24, 2025
@jessebot jessebot changed the title add juicefs config add juicefs and jellyfin config Sep 27, 2025
@jessebot jessebot self-assigned this Sep 27, 2025
@jessebot jessebot merged commit a898fe3 into main Sep 27, 2025
3 of 4 checks passed
@jessebot jessebot deleted the juicefs branch September 27, 2025 10:02
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

✨ enhancement New feature request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants