Nextcloud 部署及定期清理插件配置指南
一、环境准备
Kubernetes 集群:已部署并配置好 kubectl 可访问。
存储:已部署 NFS Provisioner,并创建好 StorageClass(例如 nfs-client)。
私有镜像仓库(可选):如果从私有仓库拉取镜像,需要提前登录或配置好 ImagePullSecret。
二、部署 Nextcloud + MySQL(K8s YAML)
创建 Namespace
yaml apiVersion: v1 kind: Namespace metadata: name: nextcloud
MySQL 持久卷声明 (PVC)
yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mysql-pvc
namespace: nextcloud
spec:
storageClassName: nfs-client
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
MySQL 部署
yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql
namespace: nextcloud
spec:
selector:
matchLabels:
app: mysql
strategy:
type: Recreate
template:
metadata:
labels:
app: mysql
spec:
containers:
- name: mysql
image: mysql:8.0 # 替换为你的镜像地址
env:
- name: MYSQL_ROOT_PASSWORD
value: "Nextcloud2026" # 修改为强密码
- name: MYSQL_DATABASE
value: "nextcloud"
- name: MYSQL_USER
value: "nextcloud"
- name: MYSQL_PASSWORD
value: "Nextcloud2026" # 与上面一致
ports:
- containerPort: 3306
volumeMounts:
- name: mysql-data
mountPath: /var/lib/mysql
volumes:
- name: mysql-data
persistentVolumeClaim:
claimName: mysql-pvc
MySQL 服务(内部通信,如需外部访问可改 NodePort)
yaml
apiVersion: v1
kind: Service
metadata:
name: mysql
namespace: nextcloud
spec:
selector:
app: mysql
ports:
- port: 3306
Nextcloud 持久卷声明 (PVC)
yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nextcloud-pvc
namespace: nextcloud
spec:
storageClassName: nfs-client
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 50Gi # 根据需求调整
Nextcloud 部署
yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nextcloud
namespace: nextcloud
spec:
selector:
matchLabels:
app: nextcloud
replicas: 1
template:
metadata:
labels:
app: nextcloud
spec:
containers:
- name: nextcloud
image: nextcloud:32 # 或 nextcloud:stable (32系列)
ports:
- containerPort: 80
env:
- name: MYSQL_HOST
value: "mysql"
- name: MYSQL_DATABASE
value: "nextcloud"
- name: MYSQL_USER
value: "nextcloud"
- name: MYSQL_PASSWORD
value: "Nextcloud2026"
- name: NEXTCLOUD_ADMIN_USER
value: "admin"
- name: NEXTCLOUD_ADMIN_PASSWORD
value: "Admin2026"
- name: NEXTCLOUD_LOCALE
value: "zh_CN"
- name: NEXTCLOUD_DEFAULT_LOCALE
value: "zh_CN"
volumeMounts:
- name: nextcloud-data
mountPath: /var/www/html
resources:
requests:
memory: "512Mi"
cpu: "500m"
limits:
memory: "2Gi"
cpu: "2000m"
volumes:
- name: nextcloud-data
persistentVolumeClaim:
claimName: nextcloud-pvc
Nextcloud 服务(暴露 NodePort 供访问)
yaml
apiVersion: v1
kind: Service
metadata:
name: nextcloud
namespace: nextcloud
spec:
type: NodePort
ports:
- port: 80
targetPort: 80
nodePort: 30085 # 可自定义
selector:
app: nextcloud
应用所有 YAML
bash kubectl apply -f nextcloud-all.yaml 等待 Pod 启动 bash kubectl get pods -n nextcloud -w 添加信任域名(如果通过 IP 访问出现“不被信任的域名”提示) bash kubectl exec -n nextcloud <pod-name> -u www-data -- php occ config:system:set trusted_domains 1 --value="你的节点IP" 访问 Nextcloud 浏览器打开 http://<节点IP>:30085,用 admin/Admin2026 登录,界面应为中文。
三、安装定期清理插件(File Retention)
确认 Nextcloud 版本(确保主版本与插件兼容)
bash kubectl exec -n nextcloud <pod-name> -u www-data -- php occ status
下载对应版本的 Retention 应用
访问 https://github.com/nextcloud-releases/files_retention/releases
选择与你的 Nextcloud 主版本匹配的版本(例如 Nextcloud 32 对应 v3.x.x ,Nextcloud 33对应 v4.x.x,需查看 info.xml 中的依赖)。
下载 files_retention.tar.gz。
将应用包复制到 Pod
bash kubectl exec -n nextcloud -it <pod-name> -u www-data -- bash cd /var/www/html/apps tar -xzf /tmp/files_retention.tar.gz # 注意:解压后的目录名可能是 files_retention,但应用ID是 file_retention,需要重命名 mv files_retention file_retention chown -R www-data:www-data file_retention cd /var/www/html php occ app:enable file_retention 验证启用成功 bash php occ app:list | grep retention 输出应显示 file_retention: 3.0.0 等。
(可选)处理 PHP 内存警告
若出现内存限制警告,可在 Deployment 中添加环境变量:
yaml env: - name: PHP_MEMORY_LIMIT value: "512M" # 并适当提高 Pod 的 resources.limits.memory,然后重启 Pod。
四、配置自动清理规则
以管理员登录 Nextcloud,进入 设置 → 管理 → 工作流。
点击顶部的 “保留” 选项卡。
点击 “添加规则”,设置:
文件夹:选择需要自动清理的文件夹(例如共享文件夹 /临时文件)。
文件年龄:例如 7 天。
操作:选择 “删除”。
保存规则。系统会定期扫描并删除过期文件。
五、注意事项
用户骨架文件:如需新用户登录时不复制默认文件,可执行:
bash
php occ config:system:set skeletondirectory --value=""
备份:定期备份数据库和 nextcloud-pvc 中的数据。
升级:后续升级 Nextcloud 时,需检查插件兼容性,并重新下载对应版本。

浙公网安备 33010602011771号