Skip to content

Kubernetes k8s deployment

Ryan edited this page Dec 1, 2025 · 1 revision

Kubernetes / k8s deployment

FileRise runs fine on Kubernetes — the container just needs persistent storage and the same env vars as the Docker examples.

1. Volumes / PVCs

FileRise expects three writable paths:

  • /var/www/uploads – your actual files
  • /var/www/users – users + Pro license JSON
  • /var/www/metadata – tags, search index, share links, etc.

In k8s, you usually back these with PVCs:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: filerise-uploads
spec:
  accessModes: ["ReadWriteOnce"]
  resources:
    requests:
      storage: 200Gi
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: filerise-users
spec:
  accessModes: ["ReadWriteOnce"]
  resources:
    requests:
      storage: 1Gi
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: filerise-metadata
spec:
  accessModes: ["ReadWriteOnce"]
  resources:
    requests:
      storage: 5Gi

(Adjust sizes / StorageClass as needed.)

2. Deployment example

apiVersion: apps/v1
kind: Deployment
metadata:
  name: filerise
spec:
  replicas: 1
  selector:
    matchLabels:
      app: filerise
  template:
    metadata:
      labels:
        app: filerise
    spec:
      containers:
        - name: filerise
          image: error311/filerise-docker:latest
          ports:
            - containerPort: 80
          env:
            - name: TIMEZONE
              value: "America/New_York"
            - name: TOTAL_UPLOAD_SIZE
              value: "10G"
            - name: SECURE
              value: "false"
            - name: PERSISTENT_TOKENS_KEY
              value: "change_me"
            - name: SCAN_ON_START
              value: "true"      # index existing files on first run
            - name: CHOWN_ON_START
              value: "true"      # fix ownership on first run
          volumeMounts:
            - name: uploads
              mountPath: /var/www/uploads
            - name: users
              mountPath: /var/www/users
            - name: metadata
              mountPath: /var/www/metadata
      volumes:
        - name: uploads
          persistentVolumeClaim:
            claimName: filerise-uploads
        - name: users
          persistentVolumeClaim:
            claimName: filerise-users
        - name: metadata
          persistentVolumeClaim:
            claimName: filerise-metadata

Then expose it with a Service + Ingress (or NodePort / LoadBalancer) like any other web app.

3. Tips

  • Use a dedicated folder / PVC
    Point /var/www/uploads at a dedicated directory (or subfolder) for FileRise, not the root of a huge media share, so scans and permission fixes stay scoped.

  • First run vs restarts

    • First run: SCAN_ON_START="true" to index any existing files.
    • After that: usually set SCAN_ON_START="false" so it doesn’t rescan on every pod restart.
    • CHOWN_ON_START="true" is convenient on first run; flip it to "false" once ownership looks good.
  • One replica
    Out of the box, FileRise assumes a single instance. For multiple replicas you’d want shared sessions + some extra coordination.

Clone this wiki locally