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了! 这回差不多了