群晖下基于Docker安装Nextcloud时常见问题的解决方案
2022-08-15 15:52128 自由的李老师
本文原创为李老师。
前言
以下内容为本人自己安装的时的笔记内容(用了1周多的时间,前前后后在自己的DS920上折腾了得有五六十遍,不断试错),主要为内容的整理和标注,目的是为后期再折腾或安装时,提供参考。
不是教程,不是教程,不是教程
最终效果:
Docker镜像
以下镜像全部都是官方镜像
Maridb(做数据库)
phpmyadmin(管理数据库)
nextcloud(主程序)
redis(做nextcloud缓存)
安装Maridb代码
docker run --name 容器名称 --restart=always -v 文件夹映射路径:/var/lib/mysql -e MARIADB_ROOT_PASSWORD=数据库密码 -d mariadb:latest
举例:
docker run --name mariadb --restart=always -v /volume1/docker/mariadb:/var/lib/mysql -e MARIADB_ROOT_PASSWORD=abc123 -d mariadb:latest
解释:
--name mariadb 创建名为mariadb的容器
--restart=always 设备启动后,容器自动重启
-v /volume1/docker/mariadb 映射的本地文件夹路径
-e MARIADB_ROOT_PASSWORD=abc123 添加一个环境变量,root密码为abc123
-d mariadb:latest 拉取最新的镜像
安装phpmyadmin代码
docker run --name myadmin --restart=always -d --link mariadb:db -p 8050:80 phpmyadmin
安装nextcloud代码
docker run --name nextcloud --restart=always -d --link mariadb:mysql -p 5220:80 -v /volume1/docker/nextcloud:/var/www/html nextcloud
注意:--link mariadb:mysql 已经将数据库连接到名称为mariadb的容器,所以在安装Nextcloud的时候,数据库地址一栏,只需填写mysql即可,无需填写IP地址和端口号。
安装redis代码
docker run --name redis -v /volume1/docker/redis:/data -d redis
安装
安装时,不要安装推荐的应用。因为推荐应用都是从github下载的,所以基本都被ban了,无法下载安装。
https访问不跳转
config.php中添加如下代码:
'overwriteprotocol' => 'https',
您的安装没有设置默认的电话区域
config.php中添加如下代码:
'default_phone_region' => 'CN',
redis做缓存
config.php中添加如下代码:
'memcache.local' => '\OC\Memcache\APCu', #以下为添加的内容 'memcache.distributed' => '\OC\Memcache\Redis', 'memcache.locking' => '\OC\Memcache\Redis', 'redis' => array( 'host' => '172.17.0.5', 'port' => 6379, ),
其中6379为默认的redis端口号,172.17.0.5为redis容器在Docker中的IP。
查询redis容器在Docker中的IP
用以下代码查询:
docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
重定向失败问题
nextcloud/.htaccess中找到如下2行代码:
RewriteRule ^\.well-known/carddav /remote.php/dav/ [R=301,L] RewriteRule ^\.well-known/caldav /remote.php/dav/ [R=301,L]
将以上2行代码替换为如下代码:
RewriteRule ^\.well-known/carddav https://www.abc.com:1234/remote.php/dav/ [R=301,L] RewriteRule ^\.well-known/caldav https://www.abc.com:1234/remote.php/dav/ [R=301,L]
其中https://www.abc.com:1234是你自己的域名和端口号(通常在群晖的反向代理中设置)
安装libmagickcore-6.q16-6-extra
#先运行如下代码: docker exec -it <nextcloud> apt -y update #再运行如下代码: docker exec -it <nextcloud> apt -y install libmagickcore-6.q16-6-extra
其中<nextcloud>为你安装nextcloud容器时的名称,比如我安装nextcloud时,用的容器名称就是nextcloud,则只需要输入以下代码:
docker exec -it nextcloud apt -y update docker exec -it nextcloud apt -y install libmagickcore-6.q16-6-extra
验证redis是否成功
root下:
# redis-cli 127.0.0.1:6379> PING PONG #说明成功 127.0.0.1:6379>KEYS * #返回值若为一堆代码,即成功
输入KEYS *后,若出现如下一堆代码,即NEXTCLOUD已经开始使用redis作为缓存了
设置和验证你的电子邮件服务器配置
处理方法较为简单,只需要到【基本设置】中输入自己邮箱的smtp相关信息即可,无论是网易163邮箱,还是QQ邮箱,还是XXX邮箱,都有基本的smtp设置方法,可单独百度了解。
无法访问:
config.php中,把https://域名+端口,添加进信任的域名:
'trusted_domains' => array ( 0 => '你的内网IP+端口,比如192.168.1.69:1234', 1 => '你的域名+端口,比如www.abcxyz.com:1234',
无法写入:
config.php权限,新增一个系统权限,让其可读可写。
安装onlyoffice代码:
docker run --name onlyoffice --restart=always -t -d -p 5099:80 \ -v /volume1/docker/onlyoffice/logs:/var/log/onlyoffice \ -v /volume1/docker/onlyoffice/data:/var/www/onlyoffice/Data onlyoffice/documentserver
同样安装完,进行反向代理,并在路由器设置端口转发。通过https访问后,如果出现如下页面,即成功。若没出现,稍等片刻再试即可。(曾尝试直接通过443,或者直接添加证书的方法,但是https均失败,最后还是反向代理实现。)
参考资料
https://github.com/nextcloud/docker/issues/654 https://www.virtualconfusion.net/docker-nextcloud-module-php-imagick-in-this-instance-has-no-svg-support/ https://blog.lordvan.com/blog/nextcloud-redis/ https://coble.uk/2020/09/24/speeding-up-nextcloud-with-redis/
还没有评论,来说两句吧...