-
-
Notifications
You must be signed in to change notification settings - Fork 33
Kubernetes k8s deployment
Ryan edited this page Dec 1, 2025
·
1 revision
FileRise runs fine on Kubernetes — the container just needs persistent storage and the same env vars as the Docker examples.
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.)
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-metadataThen expose it with a Service + Ingress (or NodePort / LoadBalancer) like any other web app.
-
Use a dedicated folder / PVC
Point/var/www/uploadsat 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.
- First run:
-
One replica
Out of the box, FileRise assumes a single instance. For multiple replicas you’d want shared sessions + some extra coordination.