K3终极折腾<四>填坑:解决nextcloud运行缓慢、挂载nfs、用openwrt的Nginx代理https访问等

八、优化Nextcloud

前面折腾https访问,难免重启docker甚至重启系统。搞定后,发现挂载的nfs上的文件看不到了。一翻查找后解决并优化,记下备用:

1、设置Nextcloud

关掉弹出窗口(Dashboard)、Talk、Contacts、设置–基本设置–后台任务选Cron

2、redis和APCu

笔者系统docker中已安装redis,APCu也是nextcloud容器自带,配置一下即可:

# 在nextcloud配置redis,编辑config.php
 'memcache.local' => '\\OC\\Memcache\\APCu',
 'memcache.locking' => '\OC\Memcache\Redis',
 'redis' =>
 array (
   'host' => '192.168.2.9',
   'port' => 6379,
 ),

3、计划任务

容器没有Crontab,只好在宿主机执行了,ext文件系统须指定用户。

# 定时每五分钟执行cron.php
*/5 * * * * docker exec --user www-data nextcloud php cron.php
# 文件找不到,手动运行一次后,配置个自动任务,每天自动执行一次
59 23 * * * docker exec --user www-data nextcloud php occ files:scan --all

4、开启视频缩略图

直接命令行解决:

docker exec -it --user root nextcloud  sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
docker exec -it --user root nextcloud  apt-get update
docker exec -it --user root nextcloud  apt-get -y  install ffmpeg
docker exec --user www-data nextcloud  php occ config:system:set enable_previews --value="true" --type=boolean
docker exec --user www-data nextcloud  php occ config:system:set enabledPreviewProviders 0 --value="OC\\Preview\\Movie"
docker exec --user www-data nextcloud  php occ config:system:set enabledPreviewProviders 1 --value="OC\\Preview\\HEIC"
docker exec --user www-data nextcloud  php occ config:system:set enabledPreviewProviders 2 --value="OC\\Preview\\MarkDown"

5、用openwrt的nginx做https代理

上一回都已经整好了ssl证书,这肯定要用给nextcloud服务配上,加强安全性,并且nextcloud很多app要求https连接。
上一回已经分析了nginx的启动过程,所以这回直接写个server在conf.d下就可以了,新开一个端口号,其实也可以写成域名代理,但是ipv4也没有443给我用,域名代理也没多大用处了。

# 新建一个server
vi /etc/nginx/conf.d/nextcloud

# 内容
server {
        listen 4443 ssl;
        listen [::]:4443 ssl;
        server_name example.com;
        include conf.d/nextcloud.locations;
        ssl_certificate /etc/nginx/conf.d/fullchain.crt;
        ssl_certificate_key /etc/nginx/conf.d/example.com.key;
        ssl_session_cache shared:SSL:32k;
        ssl_session_timeout 64m;
        access_log off; # logd openwrt;
        # location / { ... } # root location for this server.
}

就这样算了,反正也没80口给我跳转 ~
再写个locations:

vi /etc/nginx/conf.d/nextcloud.locations

# 内容

location / {
         # proxy_http_version 1.1;
         proxy_buffering off;
         proxy_set_header Host $http_host;                    
         proxy_set_header Upgrade $http_upgrade;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_set_header X-Nginx-Proxy true;                        
         proxy_set_header X-Forwarded-Proto $scheme;
         proxy_pass http://192.168.2.9:8086;        
}       

nextcloud容器中有apache2服务器的,所以openwrt这里的nginx直接传过去参数就得了,不用再折腾什么,反正直升机(apache)和汤姆猫(tomcat)笔者都看不懂。
还得去nextcloud的config.php添加一下信任和协议转换!不然nextcloud以为nginx是半路劫道的(如下图)!
劫道的样子

笔者这里是映射到宿主机的,直接开su帐号怼上去就算了!

# 注意路径
vi /path/to/config.php
# 添加这行写在自己的地址下面好了
'overwriteprotocol' => 'https',
# 再在这个数组中添加1,2,3等信任主机
'trusted_domains' =>
  array (
    0 => '192.168.2.9:8086',
    1 => 'localhost:8086',
    2 => 'example.com:4443',
    3 => 'ipv6.example.com:4443',  # 这行可有可无啦,作个示例而已
    ...
),

重启一下docker就ok了! 这回差不多了吧,这篇超长博文应该要完了!

原创文章 未经许可 严禁转载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无证的攻城狮

如本文对您有用,大爷给打个赏!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值