Seafile 是国内开发者的产品, NextCloud 是国外开发者的产品, 对于个人来说两者除了界面以外没有太大的区别. 界面来说, 个人更喜欢 NextCloud

另外有必要说一下的是, NextCloud 和 OwnCloud 出自于同一个团队, 不过 OwnCloud 被收购了之后, 这个团队跳槽出来另外做了一个, 现在 OwnCloud 仍然是有人维护的

但是个人不建议用 OwnCloud, 因为 Seafile 和 NextCloud 如果只是个人和家庭用户去用的话, 都是完全免费的, 也就是个人和家庭用户都能用到企业版或者专业版的功能, 而 OwnCloud 个人只能用到免费版的功能, 企业版也有, 不过只有 30 天的 trial, 对于个人来说, 没有这个必要去购买

NextCloud 由于是由外国团队打造的, 外国团队一般不会把中国用户放在眼里, 这个大家都知道, 所以安装文档当然不会给出中文, 我结合官网的安装文档和 Google 上别人给出的教程, 结合了下面这一篇文章, 应该说按照教程走, 不会出错

首先我们进入 NextCloud 官方网站 https://nextcloud.com/

有条件的建议大家上 VPN、SS、SSR, 因为是国外的网站, 国内网络访问很慢

右上角有个 Download 按钮, 点击后进去 Get Start 下面有个蓝色的 Download 按钮, 点击后直接获取下载地址 (本条献给各位不识英文的朋友)

https://download.nextcloud.com/server/releases/nextcloud-12.0.0.zip

接下来进入服务器安装步骤, 因为安装过 Seafile 的缘故, 文件名就不能再用 cloud 了, 一时半会儿也没想起什么好的名字, 就用 file 好了. updown 太长, 而且是两个单词的组合, 缩写 ud 别人又看不懂...

cd /www

wget https://download.nextcloud.com/server/releases/nextcloud-12.0.0.zip

解压

unzip nextcloud-12.0.0.zip

重命名

mv nextcloud file

进入目录浏览文件之后, 你会发现 NextCloud 是用 PHP 写的, 而 Seafile 是用 Python 写的, 这就导致 Seafile 的安装比 NextCloud 要复杂的多. NextCloud 的是通过网页安装的

提醒 : 本文基于你的服务器按照本博客的文章进行配置, 如果你不是按照本博客配置的 PHP 和 MySQL, 可能会出现无法访问或者访问一片空白等问题, 请自行搜索解决

接下来需要配置 Nginx

这里直接给出一份 Nginx 的示例配置

upstream php-handler {

    server localhost:9000;#FastCGI 端口

}

server {

    listen 80;

    server_name file.jonny.vip;#替换为你的 NextCloud 绑定的网址

    rewrite ^(.*) https://$host$1 permanent;#强制开启 HTTPS

}

server {

    listen 443 ssl http2;

    root /www/file;#替换成你的 NextCloud 的目录

    server_name file.jonny.vip;#替换成你的 NextCloud 绑定的域名

    ssl on;

    ssl_certificate /home/Jonny/SSL/Nginx/1_www.jonny.vip_bundle.crt;#替换成你的域名 SSL 证书的 crt 文件路径

    ssl_certificate_key /home/Jonny/SSL/Nginx/2_www.jonny.vip.key;#替换成你的域名 SSL 证书的 key 文件路径

    ssl_session_timeout 5m;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;

    ssl_prefer_server_ciphers on;

    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

    add_header X-Content-Type-Options nosniff;

    add_header X-XSS-Protection "1; mode=block";

    add_header X-Robots-Tag none;

    add_header X-Download-Options noopen;

    add_header X-Permitted-Cross-Domain-Policies none;

    location / {

        index index.php index.html index.htm;

        rewrite ^ /index.php$uri;

    }

    location = /robots.txt {

        allow all;

        log_not_found off;

        access_log off;

    }

    location = /.well-known/carddav {

        return 301 $scheme://$host/nextcloud/remote.php/dav;

    }

    location = /.well-known/caldav {

        return 301 $scheme://$host/nextcloud/remote.php/dav;

    }

    location /.well-known/acme-challenge { }

    client_max_body_size 8192M;

    fastcgi_buffers 64 4K;

    gzip on;

    gzip_vary on;

    gzip_comp_level 4;

    gzip_min_length 256;

    gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;

    gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;

    location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {

        deny all;

    }

    location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {

        deny all;

    }

    location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+)\.php(?:$|/) {

        fastcgi_split_path_info ^(.+\.php)(/.*)$;

        include fastcgi_params;

        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

        fastcgi_param PATH_INFO $fastcgi_path_info;

        fastcgi_param HTTPS on;

        fastcgi_param modHeadersAvailable true;

        fastcgi_param front_controller_active true;

        fastcgi_pass php-handler;

        fastcgi_intercept_errors on;

        fastcgi_request_buffering off;

    }

    location ~ ^/(?:updater|ocs-provider)(?:$|/) {

        try_files $uri/ =404;

        index index.php;

    }

    location ~ \.(?:css|js|woff|svg|gif)$ {

        try_files $uri /index.php$uri$is_args$args;

        add_header Cache-Control "public, max-age=15778463";

        add_header X-Content-Type-Options nosniff;

        add_header X-XSS-Protection "1; mode=block";

        add_header X-Robots-Tag none;

        add_header X-Download-Options noopen;

        add_header X-Permitted-Cross-Domain-Policies none;

        access_log off;

    }

    location ~ \.(?:png|html|ttf|ico|jpg|jpeg)$ {

        try_files $uri /nextcloud/index.php$uri$is_args$args;

        access_log off;

    }

    location ~ \.php$ {

        fastcgi_pass 127.0.0.1:9000;#FastCGI 端口

        fastcgi_index index.php;

        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

        include fastcgi_params;

    }

}

保存后注意用 nginx -t 命令检测一下是否有错误, 有时候不小心多出一个空格就会导致网站无法访问

配置完 Nginx 后需要为 NextCloud 目录设置权限

chown nginx:nginx -R /www/file

配置完成之后直接访问你的 NextCloud 网站, 就会出现安装向导

CentOS 7 + PHP 7 + MySQL 5.7 下搭建 NextCloud-Jonny'Blog

第一行和第二行是创建管理员账号与密码

默认是采用 SQLite 安装的, 但是这里我们采用 MySQL

点击一下 Storage & database

出现如下界面

CentOS 7 + PHP 7 + MySQL 5.7 下搭建 NextCloud-Jonny'Blog

Data folder 是数据存储的路径, 新手玩的时候不建议更改这一项, 可能会导致你后期没办法找回文件

第二行是数据库类型, 这里选择 MySQL/MariaDB

CentOS 7 + PHP 7 + MySQL 5.7 下搭建 NextCloud-Jonny'Blog

第一行是数据库用户名

第二行是数据库用户名对应的密码

第三行是数据库名称

第四行是数据库服务器地址 (变更了数据库端口直接在后面加上就可以了)

都确定没有问题之后, 点击 Finish setup

之后会卡一下, 这是因为正在安装, 不要慌, 安装完成之后会自动跳转

安装完成之后

CentOS 7 + PHP 7 + MySQL 5.7 下搭建 NextCloud-Jonny'Blog
CentOS 7 + PHP 7 + MySQL 5.7 下搭建 NextCloud-Jonny'Blog

就可以开始用了

等我把官网的文档吃透之后, 会写一篇 NextCloud 的进阶玩法, 但是太忙了, 最近应该发不了了