在群晖中,如果通过web station 搭建nextcloud,教程参见这里,其中会遇到很多坑,这里记录一下

  1. 第一条,非常非常重要,请确定你的群晖已经$翻$墙$,请确定你的群晖已经$翻$墙$,请确定你的群晖已经$翻$墙$,如果没有,那即使你布置好了Nextcloud,你只能使用基本功能,无法查看和安装Nextcloud内部插件

这一条,真是让我吃尽苦头,安装教程中没人提过这个!

  1. 在将nextcloud安装文件上传到DSM上的一个文件夹后,需要对文件夹的权限进行配置。假设文件夹路径为/volume1/web/nextcloud。执行如下命令,需要通过SSH,以ROOT权限登陆DSM。详细教程见之前的文章
chmod -R 0775 /volume1/web/nextcloud
chown -R http:http /volume1/web/nextcloud
  1. 如果需要将文件数据存在其他指定的文件夹,需要在设置前,创建好文件夹,并且对这个文件夹执行面相同的命令。
  2. 开始的安装页面下,MariaDB 的地址需要填写127.0.0.1:3307,因为群晖的MariaDB端口是3307

  1. 在web station 中,HTTPP后端程序一定不能选Nginx,如果选了,在设置完nextcloud后,你会得到一个404页面...

  1. 如果Nextcloud安装完后,提示如下信息


这可以再SSH 中执行如下命令

sudo -u http /usr/local/bin/php72 occ db:convert-filecache-bigint
  1. 添加受信任的域名。如果安装时,使用的是本地的ip地址打开的网页,后面需要绑定到自己的域名上,那就需要在config文件中添加域名。

  1. 如果使用内网其他机器用nginx做反向代理来指定外网域名,用域名访问的时候,无法上传文件,提示没有空间。目前不知道具体原因,但应该和nginx的反向代理有关。


解决办法是使用DSM自己的域名方式指定域名,然后使用域名+后端来访问,就可以正常使用了。在控制面板->安全->配置下,将指定的https证书指定给nextcloud的端口。

然后,在路由器中设置好端口转发,将8080转发给DSM,然后就可以通过https://域名:8080 来正常访问nextcloud。或者干脆使用DSM作为反向代理服务器

  1. 使用cron 后台更新任务。nextcloud后台更新任务需要定时执行cron.php文件。群晖后台cron和普通linux不同。命令有点区别
vi /etc/crontab
#在打开的文件中,输入。这里假设你使用的php7.2版本。cron.php地址也需要换成你自己的路径。
*/15  *  *  *  * http /usr/local/bin/php72 /volume3/web/nextcloud/cron.php
# 按esc,输入:wq保存更改后,重启cron服务
synoservice --restart crond
  1. 群晖PHP配置文件路径。
/usr/local/etc/php72/cli/php.ini
  1. Nextcloud中的警告的消除

    1. 启用缓存。即使在PHP设置中已经勾选了缓存,但是仍然要在nextcloud的config.php文件中进行设置才能启动缓存。

      vi /volume1/web/nextcloud/config/config.php
      #在打开文件的末尾 “);”上一行,输入以下两句。
      'files_external_allow_create_new_local' => 'true',
      'memcache.local' => '\OC\Memcache\APCu',
    2. 去除HSTS警告。

      HTTP的请求头 "Strict-Transport-Security" 未设置为至少 "15552000" 秒. 为了提高安全性,建议参照security tips ↗中的说明启用HSTS.
这个需要修改apache的配置文件。如果是apache2.4路径为`/volume3/@appstore/Apache2.4/usr/local/etc/apache24/conf/httpd24.conf`,其中volume3需要改成你自己apache24安装在的硬盘盘符。
```
vi /volume3/@appstore/Apache2.4/usr/local/etc/apache24/conf/httpd24.conf
#在下图位置添加一段代码
<IfModule mod_headers.c>
   Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains; preload"

#然后重启apache24服务
synoservice --restart pkgctl-Apache2.4
#小知识点,可以使用这个命令获得所有注册的服务
synoservice --list
```
![](https://hexoblog-photos-1253582753.file.myqcloud.com/2019/01/27/1548585500.png)
这里有另外一个坑,这里修改的是apache24的总的config.所以会影响所有使用apache24的网站。那为什么不去修改nextcloud网站对应的config文件呢?因为,**重启apache服务后,单独网站的配置文件会自动重写!**
网站单独的config文件路径为`/usr/local/etc/apache24/sites-enabled/httpd-vhost.conf`,这个文件会在重启apache后自动被系统改写,**所以你手动改这个文件没用!**
猜想可能有一个模版文件,系统重启后会自动调用,生成每个网站的config文件,找了一圈可能是这个``.但没有验证,等以后有机会再说吧。
Last modification:August 20, 2019
如果觉得文章对你有用,请随意赞赏