MENU

群晖NAS:搭建NextCloud15私有云盘(基于WebStation)

2019 年 03 月 17 日 • 阅读: 220 • 群晖教程

nextcloud.jpg

因为工作需要的关系,前不久让父亲大人把我房间内积灰已久的群晖D216+寄回了杭州,折腾的心又一次在燃烧,于是才有今天的这篇教程。

nextcloud2.jpg

本篇文章部分内容出于篇幅考虑,暂时略过。但有人需要,后期会考虑尽可能补充。

一些准备

1、套件安装

首先,确保群晖安装了 webstation 套件,还有php7.0套件,phpmyadmin套件,Apache2.4套件(这里我选择Apache2.4),数据库Mariadb5Mariadb10套件。不多赘述请自行去套件中心安装。

2、安装 ipkg

打开套件中心,进入设置页面,常规设置中将信任层级调整为任何开发者

1.jpeg

添加ipkg的软件源。位置填写为http://www.cphub.net 名称随意。

2.jpeg

套件中心搜索ipkg安装。

5.jpeg

NextCloud安装

1、使用ssh终端工具登陆群晖系统后切换为root用户),进入web目录
提示:输入sudo -i切换为root用户。参考文章《群晖Nas获取root权限教程》

#这里以web目录所在的实际路径为准
cd /volume1/web/

2、下载nextcloud安装包

#安装解压工具
ipkg install unzip
#下载
wget --no-check-certificate https://download.nextcloud.com/server/releases/nextcloud-15.0.5.zip 
#解压
unzip nextcloud-15.0.5.zip

3、权限设置

将nextcloud目录所属用户和组为更改为 http 并设置0755 权限

chown -R http:http nextcloud      
chmod -R 0755  nextcloud

4、配置虚拟主机

接下来就是进入webstation设置网站信息了,端口可以自己指定,没有安装证书的,可以先用http端口。如下图:

nextcloud99.jpeg

5、创建数据库

打开phpmyadmin创建nextcloud需要的数据库,如果安装了MariaDB5MariaDB10,建议选Mariadb10

7.jpeg

打开浏览器输入http://ip:端口进入安装页面,填写管理员账号密码、数据库相关信息,完成安装。需要注意:Mariadb10 端口为3307。数据库地址可以填写为 localhost:3307

8.jpeg

安装完毕。

一些优化

1、建议在PHP7 核心配置文件php.ini中开启opcacheopcache file cache,对于网站性能有一定的帮助。

opcache.enable=1                          # 1→1
opcache.enable_cli=1                      # 0→1
opcache.interned_strings_buffer=8         # 4→8
opcache.max_accelerated_files=10000       # 2000→10000
opcache.memory_consumption=128            # 64→128
opcache.save_comments=1                   # 1→1
opcache.revalidate_freq=1                 # 2→1
; 指定目录生成缓存
opcache.file_cache=/tmp/cache

2、启用会话保持。修改/volume1/web/nextcloud/config/config.php在末尾);前增加下面两行。

  'session_lifetime' => 60 * 60 * 24,        #Session 保留时间
  'session_keepalive' => true,        #保持 Session 活跃

3、增加Memcached&APCu&Redis缓存

群晖套件中心PHP7.2套件默认已经安装了memcached扩展、apc扩展、redis扩展),只需要修改 /volume1/web/nextcloud/config/config.php 文件,在文件最后一行);前添加配置:

  'memcache.local' => '\\OC\\Memcache\\APCu',
  'memcache.distributed' => '\\OC\\Memcache\\APCu',
  'memcached_servers' => array(
        array('localhost', 11211),
    ),
  'redis' => [        
      'host' => 'localhost', 
      'port' => 6379,    #redis默认端口
      'password' => 'Pho5ix-cr7elness-Gr87gory-P70ie-po8box-w9imp',    #redis密码    
  ],

重启即可。

4、Nextcloud 文件扫描

  • 手动扫描:可以在命令行使用 php occ files:scan --all 命令执行文件扫描。
  • 自动扫描(推荐):只需要修改 /volume1/web/nextcloud/config/config.php 文件,在文件最后一行);前添加配置: 'filesystem_check_changes' => 1, 选项实现文件夹的自动扫描,实测效果很理想。

5、清理已删除的文件

# 群晖这里使用http的用户身份运行下面命令
sudo -u http:http php /nextcloud路径/occ trashbin:cleanup <username>

用于移除特定用户<username>已删除的文件,多个用户名使用空格隔开。如果要删除所有用户的已删除文件需加上 --all-users,建议配合cron计划自动定时执行。

更新OCC使用说明,请运行 sudo -u http:http php occ 命令进行查看。

端口转发/端口映射

1、外网访问首先要在控制面板 - 外网访问中做端口转发。
2、如果没有公网IP,请阅读文章《LanProxy 使用教程》以及《Frp内网穿透加速方案》。将本地端口映射到可以正常进行外网访问的VPS服务器,以达到内网穿透的目的。

反向代理

完成端口映射、内网穿透相关操作后,接下来就是反向代理绑定域名。将xx.com(用于绑定Nextcloud的域名)解析到lanproxy服务器的IP地址上。

这里以Nginx为例,假设我们拥有一台闲置的美国VPS服务器。首先要在这台闲置的服务器中安装nginx,觉得麻烦可以直接安装使用军哥的LNMP一键安装脚本。

wget http://soft.vpser.net/lnmp/lnmp1.5.tar.gz -cO lnmp1.5.tar.gz && tar zxf lnmp1.5.tar.gz && cd lnmp1.5 && ./install.sh lnmp

具体安装步骤不赘述,请参考->安装步骤

添加一个Vhots的配置文件 xx.com.conf

server {
        listen      80;
        #填写用于绑定Nextcloud的域名
        server_name xx.com ; 
        #301跳转到https,如果不使用https协议可删除这行。
        return 301 https://xx.com$request_uri; 
        location / {
        proxy_pass http://127.0.0.1:7088; #lanproxy服务端转发nas,http所对应的端口
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
# 如果不使用https协议的下面部分可以略过。
server {
    listen 443 ssl http2;
    #填写用于绑定Nextcloud的域名
    server_name xx.com ; 
        ssl_certificate /usr/local/nginx/fullchain.cer; #SSL证书路径
        ssl_certificate_key  /usr/local/nginx/domain.key;#证书密钥路径
        ssl_stapling on;
        ssl_stapling_verify on;
        resolver 1.1.1.1 1.0.0.1 valid=300s;
        resolver_timeout 5s;
        ssl_session_cache shared:SSL:10m;
        ssl_session_timeout 10m;
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers 'TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:SSLCipherSuiteECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256;';
        ssl_prefer_server_ciphers on;
        add_header X-Frame-Options "SAMEORIGIN";
        add_header X-XSS-Protection "1; mode=block";
        add_header X-Content-Type-Options "nosniff";
        location / {
        proxy_pass https://127.0.0.1:7443; #lanproxy服务端转发nas,https所对应的端口。
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Remote-Port $remote_port;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_redirect off;
    }
}

重启nginx

/etc/init.d/nginx restart

任务计划

有时候我们发现从本地上传数据到nextclouddata目录后,网盘页面中却不显示,那可能是因为没有刷新。默认的AJAX方式加载反而让页面更加缓慢。当然其实还有另外两种任务执行方式。这里我推荐使用 webcron

登陆NextCloud,进入设置->基本设置,将后台任务设置为webcron

9.jpeg

方法一

打开群晖控制面板,依次点击任务计划 - 新增,选择计划的任务 - 用户定义的脚本

10.jpeg
任务名称随意,用户账号选择 root,计划时间设置为每15分钟,任务设置中输入运行命令

curl -s http://你的nextcloud地址/cron.php

方法二

也可以随便找一个闲置的VPS服务器,输入命令:

crontab -e

添加一条任务计划

*/15 * * * * curl -s http://你的nextcloud地址/cron.php

说明:表示每隔15分钟,自动执行一次任务。

一点尾巴

DSM系统里安装私有云盘可能会被人认为是一件多此一举的事情,我们本不该对任何一个人的个人喜好做评价,喜欢本来就是一件主观的事情。

返回文章列表 文章二维码 打赏
本页链接的二维码
打赏二维码
添加新评论

已有 4 条评论
  1. 策策 策策

    评论被过滤了?

  2. momosed momosed

    感谢教程,按你的操作后218+配hhd 6G内存挂了几个docker后再打开next也是顺畅无比

  3. mycool mycool

    博主,你可以写一篇搭建kodexplorer网盘的教程,群晖里面也有

    1. @mycool《群晖NAS安装kodexplorer绑定域名外网访问》,文章地址 https://www.moewah.com/archives/1334.html