最近一直在用的同步网盘坚果云发现流量不够用了。自从习惯了使用同步网盘将文件在办公场所和家里之间传来传去后,每天在坚果云消耗的流量逐渐增多,免费版本的坚果云已经不能满足自己的需要了。本来想更换到OneDrive的,但是OneDrive上传下载不稳定。
尤其是遇到特殊情况,还可能无法使用OneDrive,所以决定还是彻底摆脱这些免费网盘的束缚,自己同步网盘以满足自己的日常需要 。目前,最适合搭建同步网盘的程序非NextCloud莫属了:免费开源,且插件众多,安全性不用担心,隐私保护做得够好。
这篇文章就来分享一下NextCloud安装的图文教程,NextCloud不仅可以当成同步网盘使用,你还可以把它当成一个私有云存储来使用,NextCloud提供了众多的免费插件,可以帮你实现在线浏览图片、观看视频、编辑Office和PDF文件等等,还可以听歌、打电话等。
更多的自建服务和免费网盘这里有:
PS:更新记录.
1、NextCloud与Seafile是两个非常优秀的网盘自建系统,有关的对比你可以查看:NextCloud与Seafile对比使用-NextCloud各项全能 Seafile优势突出。2021.4.21
2、NextCloud存储空间不够用,我们可以借用第三方存储来扩容,如果你有腾讯云的COS,你可以试试:NextCloud挂载腾讯云COS作为外部存储-扩容存储空间方便管理。2020.12.27
3、想系统了解NextCloud安装以及使用方法,你可以参考NextCloud专题汇总:NextCloud从入门到精通-自建网盘搭建个人云存储系统。2020.12.9
PS:最新教程:Nextcloud自建文件同步共享服务教程-Nextcloud安装,迁移,更换域名。2023.5.17
官网:
注:本部分分享的是使用Nginx来搭建和运行NextCloud,属于手动安装系列,如果你觉得麻烦你也可以使用NextCloud官方的一键安装包。参考:Nextcloud个人云存储绝佳选择:一键自动安装方法和云盘使用体验。
一台VPS主机。NextCloud是一个非常个性化需求的产品,如果使用虚拟主机搭建将会非常地麻烦,如果你想长期使用的话还是用VPS主机省事,毕竟现在的VPS主机也已经是白菜价了,参考:VPS主机排行榜单。
当然也有朋友想在自己的树莓派上安装Nextcloud,参考:
一个域名。NextCloud可以使用IP访问,但是为了安全我们需要使用Https,所以你需要一个域名,不建议你使用免费域名,花个几十块钱就可以安心使用付费的域名了,毕竟免费的域名说不定哪天就删除了。参考:域名服务。
为了简单方便,你可以使用VPS主机控制面板,一键安装,一键部署,参考:服务器控制面板榜单。对于有能力的朋友建议使用LNMP和Oneinstack安装包,安全又可以节省资源。参考:Oneinstack从入门到精通。
这里以Oneinstack作为演示,首先在VPS主机一键安装好OneinStack,教程:OneinStack一键安装脚本-轻松部署Let’s Encrypt证书配置Https站点。NextCloud对于系统的要求如下:
操作系统Operating System
Ubuntu 18.04 LTS (recommended)
Red Hat Enterprise Linux 8 (recommended)
Debian 10 (Buster)
SUSE Linux Enterprise Server 15
openSUSE Leap 42.1+
CentOS 8
数据库Database
MySQL 5.7+ or MariaDB 10.2+ (recommended)
Oracle Database 11g (only as part of an enterprise subscription)
PostgreSQL 9.5/9.6/10/11
SQLite (only recommended for testing and minimal-instances)
Webserver
Apache 2.4 with
mod_php
orphp-fpm
(recommended)nginx with
php-fpm
PHP Runtime
7.2
7.3 (recommended)
7.4 (recommended)
内存Memory
Memory requirements for running a Nextcloud server are greatly variable, depending on the numbers of users, apps, files and volume of server activity.Nextcloud needs a minimum of 128MB RAM, and we recommend a minimum of 512MB.
对于数据库的额外要求Database requirements for MySQL / MariaDB
The following is currently required if you’re running Nextcloud together with a MySQL / MariaDB database:
InnoDB storage engine (MyISAM is not supported)
“READ COMMITED” transaction isolation level
Disabled or BINLOG_FORMAT = ROW configured Binary Logging)
For Emoji (UTF8 4-byte) support
对于使用Oneinstack安装NextCloud的话,你可以直接在创建网站时选择重写规则时选择NextCloud,Oneinstack会自动创建好NextCloud的Nginx重写规则。
对于没有创建Nextcloud重写规则的朋友也不用担心你可以直接下载重写规则,然后在你的原有的Nginx配置文件中加一句即可:include /usr/local/nginx/conf/rewrite/nextcloud.conf;
下载:https://do.wzfou.net/wzfou/nextcloud.conf
以下为代码备份,以便不时之需。
#(可选)添加如下header主要为了安全 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; #(可选)为了支持user_webfinger app rewrite ^/.well-known/host-meta /public.php?service=host-meta last; rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last; #这儿是为了支持日历和联系人,建议加上 location = /.well-known/carddav { return 301 $scheme://$host/remote.php/dav; } location = /.well-known/caldav { return 301 $scheme://$host/remote.php/dav; } #设置上传文件的最大大小(还和php里的那个设置有关) client_max_body_size 512M; fastcgi_buffers 64 4K; #最主要的,将所有请求转发到index.php上 location / { rewrite ^ /index.php$uri; } #安全设置,禁止访问部分敏感内容 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)(/.*)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param modHeadersAvailable true; fastcgi_param front_controller_active true; fastcgi_pass unix:/dev/shm/php-cgi.sock; fastcgi_intercept_errors on; fastcgi_request_buffering off; include fastcgi.conf; } #安全设置,禁止访问部分敏感内容 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 /index.php$uri$is_args$args; access_log off; } location = /robots.txt { allow all; log_not_found off; access_log off; } 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;
下载官方一键安装脚本:
#进入网站根目录 cd /data/wwwroot/xx.wzfou.com #下载 wget https://download.nextcloud.com/server/installer/setup-nextcloud.php #赋予权限 chown -R www:www setup-nextcloud.php
接着访问网站 https://xx.wzfou.com/setup-nextcloud.php
,点击 Next
。
安装在当前目录下,填 .
表示安装在根目录下。
一直点击下一步,直到安装完成,接着就是设置一个管理员账号和密码了。
建议在数据库连接处选择使用Mysql数据库,对于加快NextCloud访问是非常有效果的。
使用账号和密码登录NextCloud就可以看到以下成功的界面了。(点击放大)
为了可以更加顺畅地使用NextCloud,我们还需要对于NextCloud进行一定的设置,这些设置一些是必要的,例如安全方面;另一方面不是必须,例如性能提升这一块,看个人选择。
打开NextCloud设置页面,可以看到NextCloud自动给出的提醒。
PHP内存限制过小。提示:PHP 内存限制低于建议值 512MB。打开你的PHP.ini配置文件,
将memory_limit改为512M,重启PHP生效。
为了提供NextCloud性能,官方建议使用缓存,NextCloud添加Memcached缓存。修改程序目录下的config目录中的config.php
文件,在配置文件中添加如下:
'memcache.local' => '\OC\Memcache\Redis', 'redis' => array( 'host' => 'localhost', 'port' => 6379, ), 'memcache.locking' => '\OC\Memcache\Redis',
对于Zend OPcache、xcache、apcu、eAccelerator、ionCube、ZendGuardLoader 、Memcached、Redis、imap、fileinfo
等,直接使用Oneinstack就可以安装和配置好了:
安装gmp模块。由于Oneinstack没有gmp模块,我们需要自己手动安装。执行以下命令安装:
sudo apt-get install m4 #sudo apt-get install gmp-devel sudo apt-get install libgmp-dev #yum -y install gmp-devel cd ~/oneinstack/src tar xzf php-7.4.9.tar.gz #tar xzf php-7.2.10.tar.gz cd php-7.2.10/ext/gmp #cd php-7.4.9/ext/gmp /usr/local/php/bin/phpize ./configure --with-php-config=/usr/local/php/bin/php-config make && make install #看到以下表示成功了 #Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/ #Installing header files: /usr/local/php/include/php/ #最后生成配置文件 echo 'extension=gmp.so' > /usr/local/php/etc/php.d/gmp.ini
重启PHP生效。
如果出现以下错误:
HTTP的请求头 “Strict-Transport-Security” 未设置为至少 “15552000” 秒. 为了提高安全性,建议参照security tips ↗中的说明启用HSTS.
HTTP 头 “Referrer-Policy” 未设置成 “no-referrer”,”no-referrer-when-downgrade”,”strict-origin”,”strict-origin-when-cross-origin” 或 “same-origin”。这会泄露更多的信息。请查阅 W3C 建议↗。
打开你的Nginx配置文件,添加以下规则:
add_header Strict-Transport-Security max-age=15768000; add_header X-Frame-Options 'SAMEORIGIN'; add_header Referrer-Policy "no-referrer";
重启PHP和Nginx,刷新一下,你就可以看到NextCloud配置完成了。
配置好NextCloud的SMTP发信,可以在找回密码有用,因为一旦忘记了密码你可以使用邮箱找回。这里以Gmail的SMTP配置为例,其它的SMTP邮箱你可以参考:国内外企业(域名)邮箱汇总。
配置好测试一下SMTP发信,看看是不是成功了。
对于有大量存储需求的朋友来说,可以启用NextCloud外部存储功能,你可以先启用NextCloud外部存储插件。
然后点击外部存储开始设置。此时你可能会遇到:“smbclient” 未安装。无法挂载 “SMB / CIFS”, “SMB / CIFS 使用 OC 登录信息”。请联系管理员安装。错误。
使用以下方法来安装并配置PHP SMB。
apt install libsmbclient libsmbclient-dev apt install smbclient apt install php-pear pecl install smbclient Build process completed successfully Installing '/usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/smbclient.so' install ok: channel://pecl.php.net/smbclient-1.0.0 configuration option "php_ini" is not set to php.ini location You should add "extension=smbclient.so" to php.ini #对于oneinstack,输出配置文件 echo 'extension=smbclient.so' > /usr/local/php/etc/php.d/smb.ini
lnmp默认不开启外部 添加插件,需要修改php.ini
,定位到proc_open
位置,然后将默认的disable改成enable。然后按照上面的方法安装好smbclient.so
,最后在你的php.ini配置文件中添加好smbclient.so
路径即可。
进入LNMP的src目录 cd /root/lnmp1.6/src 找到你的PHP压缩包并解压 tar -xjf php-7.2.22.tar.bz2 编译安装 进入gmp扩展所在的目录 cd /root/lnmp1.6/src/php-7.2.22/ext/gmp 执行phpize,得到configure程序 /usr/local/php/bin/phpize 运行configure ./configure -with-php-config=/usr/local/php/bin/php-config 编译安装,安装完成会在最后一行输出安装位置 make && make install 重启LNMP,进入上一步得到的位置目录,看见gmp.so表示安装成功 lnmp restart cd /usr/local/php/lib/php/extensions/no-debug-non-zts-20170718 编辑php.ini文件 vi /usr/local/php/etc/php.ini 在文件最后加上下面这行代码,然后重启LNMP即可 extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/gmp.so lnmp restart
NextCloud外部存储支持Amazon S3、FTP、WebDAV、SFTP、SMB / CIFS等方式,对于FTP和WebDAV你可以试试坚果云和又拍云:
NextCloud挂载的外部存储有利于扩容。
NextCloud提供了不少的Office插件,可以帮助你在线查看和编辑Word、Excel、PPT等文档,不过此类的插件还需要额外一个自建Office服务,有能力的朋友可以折腾一下。
NextCloud的相册管理功能还是非常地强大。
NextCloud还提供非常多的相册插件,如果你是个相册控,一定会喜欢上。
NextCloud自带了视频播放器,上传的是视频的话可以直接在线观看。挖站否测试时发现NextCloud的视频可以倍速播放,又多一个不充会员的理由了!
NextCloud可以直接查看PDF文档,其它的文本、MD等都是可以的。
NextCloud同步功能是我最喜欢的了,有了NextCloud的同步网盘,可以弃用免费版本的坚果云、360企业网盘等了。下载NextCloud电脑PC端或者手机APP。
添加你的网盘地址,然后会弹出是否授权访问。
同意之后,你就可以选择同步的内容了,以及设置本地同步文件夹了。
每次文件增加、删除、修改等操作都会实时反映到NextCloud网盘中。
你可以查看NextCloud网盘传输进度。
NextCloud作为网盘来使用足以让你放弃那些广告又长又臭、速度限制在10KB以下同时又容易泄露隐私的X盘了,NextCloud的同步功能和在线视频、图片、文档浏览功能超过了大多数的免费网盘。
PS:关于在VPS主机上打包备份的教程,你可以参考:一个命令让Linux定时打包备份指定目录文件夹并同步备份到各大网盘。
NextCloud作为私有云存储完成是没有问题,唯一需要担心的就是备份和安全性,解决的办法就是做好服务器日常备份功能,安全这一块要求高的话可以开启服务器加密和端对端加密。参考:
文章出自:挖站否 https://wzfou.com/nextcloud-pan/,版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。
文章更新于: 2023年5月17日 上午8:54
查看评论
不限域名空间,靠谱省心,国际大牌,黑色星期五特价$2.65/月
https://www.bluehost.com/track/zhuanxiang/?page=/special/black-friday-sale
赞!话说怎么同步?是在家里上传然后在公司下载吗
自动同步,自动下载。
感谢这么好的教程,终于成功开启了挂载外部存储,我是在Oneinstack搞定 的。
Nextcloud好是好,就是太吃性能了,不太能带的动[衰],改用Cloudreve了
https://github.com/cloudreve/Cloudreve
Cloudreve确实不错,我也在用。
学习了!!
同步网盘用Nextcloud还是不错的。
已经在用nextcloud了,相册和在线编辑功能出一期教程吗?
相册部分不能显示外部存储的内容
文档在线编辑折腾过onlyoffice也没成功……
在线编辑需要自建服务器,过程倒是不难,就考虑到成本的问题,如果不是公司或者团队网盘,对于个人来说这个有些浪费了。相册外部存储不显示是什么情况?
相册中默认会显示data目录中的照片。如果挂载的外部存储中有照片的话,则不会显示。
希望能做到能显示外部存储中指定目录的照片到相册中,想了解下有插件或者其他设置能做到吗?
这个好像是挂载的网盘有关系,我之前用COS挂载就是这样的情况,换成其它的网盘又可以。
非常详细。[赞]