摘要訊息 : 在伺服器上配置 Nextcloud 實現私有雲.
0. 前言
Seafile 是国内开发者的产品, NextCloud 是国外开发者的产品, 对于个人来说两者除了界面以外没有太大的区别. 界面来说, 个人更喜欢 NextCloud. 另外有必要说一下的是, NextCloud 和 OwnCloud 出自于同一个团队, 不过 OwnCloud 被收购了之后, 这个团队跳槽出来另外做了一个, 现在 OwnCloud 仍然是有人维护的. 但是个人不建议用 OwnCloud, 因为 Seafile 和 NextCloud 如果只是个人和家庭用户去用的话, 都是完全免费的, 也就是个人和家庭用户都能用到企业版或者专业版的功能, 而 OwnCloud 个人只能用到免费版的功能, 企业版也有, 不过只有 30 天的免费试用 (我在 2022 年发现 OwnCloud 也有免费版本了), 对于个人来说, 没有这个必要去购买.
本文建立在阁下已经为伺服器配置 PHP 7+ 和 MySQL 的情况下进行教学.
本文在 2022 年 3 月 17 日进行一次更新和修正. 修正之后本文已经归档, 不再享受更新.
1. 下载
首先我们进入 NextCloud 官方网站 https://nextcloud.com/, 右上角有个 Get Nextcloud, 选择 Nextcloud server, 然后再选择 Archive File 就可以看到下载地址. 我们复制下载地址之后便可以开始安装.
2. 安装
我们准备把 Nextcloud 放到 /www/drive
档案夹中 : cd /www
. 然后通过 wget 下载地址
这个指令下载. 然后解压 : unzip nextcloud*.zip
并且重新命名 mv nextcloud* drive
. 如果 unzip
指令出现问题, 那么可以通过 yum install -y unzip
来安装这个套件. 进入目录浏览文件之后, 你会发现 NextCloud 是用 PHP 写的, 而 Seafile 是用 Python 写的, 这就导致 Seafile 的安装比 NextCloud 要复杂的多. NextCloud 的是通过网页安装的.
接下来需要配置 Nginx, 这里给出一份 Nginx 配置示例, 使用中文的地方都需要修改 :
upstream php-handler {
server 127.0.0.1:9000; # FastCGI 端口, 如果你采用 socket 方式进行连结, 那么可以改为 socket 档案位置. 如果使用连接埠, 那么一般为 127.0.0.1:9000
}
server {
listen 80;
server_name 你的网域名称;
rewrite ^(.*) https://$host$1 permanent;
}
server {
listen 443 ssl http2;
root 改为 Nextcloud 档案夹位置;
server_name 你的网域名称;
ssl on;
ssl_certificate 网域名称的 SSL crt 证书;
ssl_certificate_key 网域名称的 SLL key 档案;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDE-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 网站, 就会出现安装向导 :
第一行和第二行是创建管理员账号与密码, 默认是采用 SQLite 安装的, 但是这里我们采用 MySQL. 点击一下 Storage & database, 然后选择 MySQL/MariaDB. 第一行是数据库用户名, 第二行是数据库用户名对应的密码, 第三行是数据库名称, 第四行是数据库服务器地址 (变更了数据库端口直接在后面加上就可以了).
都确定没有问题之后, 点击 Finish setup. 之后会卡一下, 这是因为正在安装, 不要慌, 安装完成之后会自动跳转 :
这是 2017 年的图像, 现在的 Nextcloud 可能有所更改, 大家看到的画面不太一样.
自創文章, 原著 : Jonny. 如若閣下需要轉發, 在已經授權的情況下請註明本文出處 :