创建无状态nextcloud:24.0.2-apache
2Core4GB,80端口
环境变量点击:从镜像元数据中获取
容器路径/var/www/html映射到nas
创建nc的svc,服务端口8080对应容器端口80,虚拟集群ip
-------------------------------
创建mysql secret
apiVersion: v1
data:
MYSQL_PASSWORD:
MYSQL_ROOT_PASSWORD:
MYSQL_USER:
kind: Secret
metadata:
name: secrets-db
namespace: nextc
type: Opaque
创建有状态mysql:8.0.4
1Core2GB,开端口3306
环境变量添加三个secrets
容器路径/var/lib/mysql映射到nas
创建mysql的svc,3306对3306,虚拟集群ip
创建alb ingress路由,TLS
进入mysql终端,
mysql -uroot -p
create database nextcloud;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123321';
flush privileges;
登录域名,输入mysql数据,地址为mysql的svc ip:3306
成功
因为我们的 SSL 相关配置是配置到容器之外的, 并且 https 链接在容器外就已卸载, 所以需要额外的配置来告知容器我们使用了 https 链接.
进入我们映射的目录中我们可以看到不少容器生成的文件.
首先我们打开 config.php 文件, 找到并调整如下字段:
# 将 http 修改为 https
'overwrite.cli.url' => 'https://***',
# 新增这一行, 强制使用 https 协议
'overwriteprotocol' => 'https',
同时我们需要告知容器外部的反向代理是可以信任的, 在 config.php 新增如下信息:
'trusted_proxies' =>
array (
# 这是 Kubernetes 的 IP 段, 可能可以更精确的配置……
0 => '10.0.0.0/8',
),
在 Nextcloud 的安全检查时汇报了关于 HSTS 的问题, 编辑 .htaccess 文件, 在 <IfModule mod_env.c>
里, 添加以下两行:
Header onsuccess unset Strict-Transport-Security
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
修复提示未正确解析 carddav 和 caldav 的错误, 编辑 .htaccess 文件, 将原有的
RewriteRule ^\.well-known/carddav /remote.php/dav/ [R=301,L]
RewriteRule ^\.well-known/caldav /remote.php/dav/ [R=301,L]
调整为:
RewriteRule ^\.well-known/carddav https://%{SERVER_NAME}/remote.php/dav/ [R=301,L]
RewriteRule ^\.well-known/caldav https://%{SERVER_NAME}/remote.php/dav/ [R=301,L]
接着重启一下容器, Nextcloud 就完成了所有的部署了.
执行 OCC 文件的方法
偶尔会发现需要使用执行 OCC 命令, 但是镜像中并没有 sudo 命令, 所以
sudo -u www-data php occ ...
这样的命令是无法执行的, 这里只能先用 su 命令切换用户后执行
su -s /bin/bash www-data
然后再使用 occ 命令处理.