网盘存储

手动安装NextCloud教程-免费开源的私有云存储网盘可播放图片音乐

NextCloud由原ownCloud联合创始人Frank Karlitschek创建的,继承原ownCloud的核心技术又有不少的创新。在功能上NextCloud和ownCloud差不多,甚至还要丰富一些,在用户使用体验方面,NextCloud安装与使用都非常地顺手,最重要的是NextCloud完全开源免费。

NextCloud不仅是一个私人云网盘平台,也支持多用户同步协作使用。NextCloud支持账号注册,可以为账号开启两步验证,以确保账号安全。同时,NextCloud对于公开分享的文件可以设置有效期,对于上传的视频、音乐、Office文档等直接支持在线预览和播放。

NextCloud还提供了上百种的免费应用和插件,这些NextCloud应用与插件可以将NextCloud打造成为一个在线文档共享与编辑平台、音乐与视频娱乐平台以及文件存储下载平台。当然,如果是自己手动安装的NextCloud的话,那么这些插件也得自己配置好环境才行。

本篇文章就来分享一下手动安装NextCloud教程,更多的站长自建服务与平台,你还可以试试:

  1. Lsyncd搭建同步镜像-用Lsyncd实现本地和远程服务器之间实时同步
  2. VestaCP与WHMCS整合教程-实现自助开通虚拟主机销售主机空间产品
  3. ISPConfig与WHMCS整合方法-自动激活开通虚拟主机和管理空间用户

PS:更新记录.

1、想要自建音乐流媒体服务,可以从这里选择一个适合自己的:自建音乐流媒体服务器和私人音乐电台-开源免费的音乐服务程序推荐。2023.1.13

2、最新的手动安装Nextcloud网盘的详细教程,请参考:NextCloud安装和使用图文教程-同步网盘自动备份和在线播放视频。2022.7.13

一、LAMP安装NextCloud

NextCloud官网:

  1. https://nextcloud.com/

准备好LAMP环境。LAMP即Apache、MysqL或Mariadb、PHP环境,NextCloud官方推荐使用Apache运行NextCloud,自带了.htaccess规则。而Nginx的话还需要自己手动编写NextCloud的URL重写规则。推荐以下方法一键安装LAMP:

  1. Linux VPS建站工具LNMP 1.4安装与使用-SSL自动配置续期和多版本PHP支持
  2. OneinStack一键安装脚本-轻松部署Let’s Encrypt证书配置Https站点

LNMP 1.4和OneinStack都可以一键安装LAMP环境,这里我以OneinStack来作为操作演示,在安装OneinStack时选择组件时选择Apache即可,PHP建议使用7.0以上,数据库的话建议Mariadb。其它的缓存组件也可以安装。

绑定好域名与添加SSL证书。OneinStack在添加网站时直接就可以添加SSL证书了,同时要求绑定的域名必须提前解析到服务器的IP上,这样才可以一键生成Lets免费证书。

下载NextCloud程度包安装。到官网:https://nextcloud.com/install/#instructions-server,下载最新的程序包解压上传到网站的根目录。

为NextCloud建立新的数据库。

PS:2018年9月1日更新,感谢baoang的提醒,安装NC时数据库里直接用root的账号就可以了,不用另设一个pan的账号。因为NC不会使用这个账号,而是把这个账号用于安装而已。安装完成之后,它会以nc_管理员ID为格式生成一个它自己的数据库账号,比如nc_qi这样的。

访问域名就会自动进入到NextCloud的安装页面了,填写你的管理员账号与密码,然后在下方设置好文件存储路径,最好与程序不要在同一个目录下。同时填入SQL数据库信息,完成安装。(点击放大)

完成后,你就可以登录到NextCloud后台,这就是NextCloud的用户管理界面。(点击放大)

二、LNMP安装NextCloud

准备LNMP环境和上面一样,只是在LNMP 1.4和OneinStack安装时选择Nginx环境即可,其它的组件都一样有选择性地安装。如果安装了Zend OPcache,可能在安装时会提示错误:“PHP 被设置为移除内联块, 这将导致多个核心应用无法访问

解决方法:修改php.ini中Opcache的参数进行修改,如果是Oneinstack的话需要在/usr/local/php/etc/php.d/ext-opcache.ini 中修改。找到此代码并改成:opcache.save_comments=1 ,因为默认是0,改完重启php-fpm就行。

编写URL地址重写规则。出现错误:No input file specified.,主要是Nginx还需要自己写重写规则,你可以将以下规则复制粘贴到/usr/local/nginx/conf/vhost/你的网站.conf,由于规则太多,你也可单独建立一个文件,然后在你的网站.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;
    }
    #设置上传文件的最大大小
    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;
    }

fileinfo\Memcached\Redis等都可以通过OneinStack一键安装。

NextCloud安全与性能优化:这种提示一般在NextCloud的服务器管理中可以看到,建议缓存类的直接安装一个即可,安装多了也没有什么用。

为了您服务的安全和性能, 请将所有设置配置正确. 我们将会进行一些自动化检查以帮助您完成这项工作. 详情请查看 “小提示” 部分及相关文档.

PHP 模块 ‘fileinfo’ 缺失. 我们强烈建议启用此模块以便在 MIME 类型检测时获得最准确的结果.

HTTP 请求头 “Strict-Transport-Security” 没有配置为至少 “15552000” 秒. 出于增强安全性考虑, 我们推荐按照安全提示中的说明启用 HSTS.

内存缓存未配置. 如果可用, 请配置 memcache 以增强性能. 更多信息请查看我们的文档.
PHP 的组件 OPcache 没有正确配置. 为了提供更好的性能, 我们建议在php.ini文件中使用下列设置:

opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

NextCloud添加Memcached缓存。修改程序目录下的config目录中的config.php文件,在配置文件中添加如下,这个是多个Memcached实例,单个自己改:

'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\Memcached',
'memcached_servers' => array(
     array('localhost', 11211),
     array('server1.example.com', 11211),
     array('server2.example.com', 11211),
     ),

NextCloud添加Redis缓存。在配置文件中添加如下,这个是通过TCP连接的

'memcache.local' => '\OC\Memcache\Redis',
'redis' => array(
     'host' => 'localhost',
     'port' => 6379,
      ),

还有性能更好的UNIX连接

'memcache.local' => '\OC\Memcache\Redis',
'redis' => array(
     'host' => '/var/run/redis/redis.sock',
     'port' => 0,
     'dbindex' => 0,
     'password' => 'secret',
     'timeout' => 1.5,
      ),

同时,官方还推荐加入如下,来用于存储文件锁

'memcache.locking' => '\OC\Memcache\Redis',

Nginx运行NextCloud一切正常。

三、NextCloud添加应用

NextCloud提供了丰富了内置应用,并且这些应用可以直接在NextCloud的后台下载并安装,有点像我们的Wordpress插件一样直接安装。这些介绍几个有用的NextCloud插件,相信大家一定会用到。

SMTP发信与限制最大上传文件。这个直接在NextCloud的后台设置中就可以设置选项,SMTP可以让我们调用第三方的发信服务来发送NextCloud的邮件,自带的PHP发信也可以,但是基本上会被各大邮箱判定为垃圾邮件。

数据存储加密与外挂存储。首先到NextCloud应用中激活Default encryption module、External storage support这两个插件。

启用数据加密需要谨慎:因为数据一旦加密被启用, 之后上传到服务器的所有文件都将服务器上加密,只有当启用状态的加密模块支持解密并且所有前提都满足时 (例如: 设定恢复密钥) 才能解除加密。请注意, 加密会增加文件大小,单独的加密不能保证系统的安全性,你需要同时设置恢复密钥。

外挂存储主要是可以让NextCloud通过SMB / CIFS 登录 OC 的方式挂载第三方的存储应用,启用这个插件有些麻烦,可能提示:没有安装 “smbclient”. 安装命令:apt-get install smbclient和apt-get install php-smbclient。

四、总结

至于选择Apache还是Nginx来运行NextCloud主要还是取决你对Nginx或者Apache的熟悉程度,LNMP 1.4和OneinStack对Nginx都做了很好了优化,Http 2.0、SSL证书还有缓存组件和PHP函数都可以一键安装与配置,省去了不少的麻烦。

NextCloud的图片预览、音乐视频在线播放等基本功能都是没有问题了,在使用NextCloud应用过程中倒是遇到了不少的问题。首要的问题就是NextCloud的应用配置比较难,例如Office文档插件、RSS在线阅读器插件等,都需要自己手动配置好服务器环境。

文章出自:挖站否 https://wzfou.com/nextcloud-install/,部分内容参考自:zrj96  版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。

文章更新于: %s = human-readable time difference 下午12:42

Qi

关于站长(Qi),2008年开始混迹于免费资源圈中,有幸结识了不少的草根站长。之后自己摸爬滚打潜心学习Web服务器、VPS、域名等,兴趣广泛,杂而不精,但愿将自己经验与心得分享出来与大家共勉。

查看评论

  • 第一次访问,用户名,密码,存储位置,数据库什么的设置完之后。下一个页面就变成“Access denied“
    不知如何排解。OneinStack LAMP 绑定好了证书。

  • 请问一下,用lnmp一键安装包之后,不进行lnmp vhost add,而是直接解压至/home/wwwroot/default内。然后通过IP/nextcloud的方式访问,并安装,MYSQL的配置,无论是配置为单独的数据库,还是用默认的mysql数据库,都会跳转到ip/nextcloud/index.php/apps/files/这个URL,但是,显示404错误。我用的是14.0.4版本的nextcloud。LNMP一键安装后,未进行参数设置,直接使用。

  • 我lnmp搭建好了,文件也解压到正确位置了,mysql用的是5.5.60的,php用的是7.1.18。访问域名没有报错,不过出来的页面一直是
    内部服务器错误
    服务器不能完成你的请求。

    如果再次发生,请在下方将技术详情发送给服务器管理员。

    更多细节可以在服务器日志中找到.

    技术细节
    远程地址: 66.42.97.109
    请求 ID: Kj4BjHaL9daUzFJnfxey

    • 是用FTP上传的吗?上传安装包后记得把属性修改为www,这样就可以安装了。https://wzfou.com/question/9453/

      • 不过我安装后变成了404页面........我用的nginx所以要重写规则吗?不过您那个步骤我没看懂......要写在哪里啊

          • 我知道写的是哪个文件....不过不清楚写在这个文件的哪里.....有两个个server,监听80 和443端口。您文里说的默认有我没找到,其他内容也不知道写在哪。我进到nextcloud里了,不过有提示代码完整性出现异常。
            您的网页服务器没有正确设置允许文件同步,因为 WebDAV 接口看起来无法正常工作。
            一些文件没有通过完整性检查。了解如何解决该问题请查看我们的 文档。(无效文件列表… / 重新扫描…)
            PHP的安装似乎不正确,无法访问系统环境变量。getenv("PATH")函数测试返回了一个空值。 请参照安装说明文档 ↗中的PHP配置说明查阅您服务器的PHP配置信息,特别是在使用php-fpm时。
            PHP 无法访问 /dev/urandom,出于安全原因这是强烈不推荐的。更多信息请参见文档。
            Use of the the built in php mailer is no longer supported. Please update your email server settings ↗.
            PHP内存限制低于建议值512MB.
            Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the security tips ↗.

          • 您的网页服务器没有正确设置允许文件同步,因为 WebDAV 接口看起来无法正常工作。
            这个是什么问题啊.......求助大佬

          • 我用https访问我自己的nextcloud会出现404nginx页面......而且nextcloud后台怎么配置啊?我出现webdav那个报错后nextcloud根本用不了......

          • php选择的是7.2.6,nginx因为用的lnmp.org1.5一键安装 所以不知道版本。而且我分明安装了lnmp自带的ssl证书,但是不能用https访问

          • Nginx修改参考这个演示:

            server
            {
            listen 80;
            server_name bbs.jb51.net;
            index index.html index.htm index.php;
            root /home/www/bbs;

            error_page 404 /404.htm; #配置404错误页面
            location ~ .*.(php|php5)?$
            {
            #fastcgi_pass unix:/tmp/php-cgi.sock;
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            include fcgi.conf;
            }

            #下面就是伪静态了

            location /{
            rewrite ^(.*)/equip(d+).html$ $1/index.php?m=content&c=index&a=lists&catid=$2 last;
            }
            access_log access_log off;
            }

      • 啊,解决了,是权限问题,按照您给的链接里的方法。我因为不会用ftp......只用命令行来操作的。您教程里的步骤可以不用ftp再来回上传那么麻烦的,用wget 后面跟官网下载链接下载安装包,然后unzip解压,再用mv nextcloud/* .将文件移除到域名根目录就行了。

      • 不是,我用wget命令直接下载的官网的连接,然后解压并将文件移出在域名根目录里,然后访问域名就是内部服务器错误了。

        • 我用docker装了一下......报错
          ERROR: for nextcloud_nextcloud_1 UnixHTTPConnectionPool(host='localhost', port=None): Read timed out. (read timeout=60)

          ERROR: for nextcloud UnixHTTPConnectionPool(host='localhost', port=None): Read timed out. (read timeout=60)
          ERROR: An HTTP request took too long to complete. Retry with --verbose to obtain debug information.
          If you encounter this issue regularly because of slow network conditions, consider setting COMPOSE_HTTP_TIMEOUT to a higher value (current value: 60).

          • 我尝试新建了lnmp环境,然后下载解压了nextcloud安装包到网站根目录,然后不是应该可以通过域名访问并安装吗?但是我访问提示403 Forbidden nginx

          • 额,图片显示不出啊?
            Nextcloud
            内部服务器错误
            服务器不能完成你的请求。

            如果再次发生,请在下方将技术详情发送给服务器管理员。

            更多细节可以在服务器日志中找到.

            技术细节
            远程地址: 66.42.97.109
            请求 ID: OgDMg1ByaJA7NbSyj8qC

          • 这样的话可以先升级PHP,LNMP里可以手动升级PHP版本的,不需要重装系统。如果用Docker的话,Wordpress就跑不了。

          • 是路径问题。不过我移出来后提示php版本需要7.0以上...更新的话会失败......决定把系统重置重新装的话,不过这样的话我要是用docker一键安装环境后,是不是没法搭wordpress了啊?就,安装顺序反过来也不行,只能建立两个虚拟环境吗?

  • 另外,给站长添一条说明。安装NC时数据库里直接用root的账号就可以了,不用另设一个pan的账号。因为NC不会使用这个账号,而是把这个账号用于安装而已。安装完成之后,它会以nc_管理员ID为格式生成一个它自己的数据库账号,比如nc_qi这样的。

  • 刚刚发现的,NC居然在它的桌面版同步工具上有这样的一个功能,比浏览器自带的详细多了。

  • 装过,没成功,不是PHP插件少了,就是有什么缓存说是有冲突,最后一气之下,不玩了,等以后闲下来的时候再说吧。Nginx的配置就是不好搞也是一个问题,当时是照搬了它官方的配置文件来的。现在看到说可以在线放歌什么的,觉得还是得想想办法架一台,给老太太个娱乐设备,反正她也用不了多少服务器的流量。准备按官方懒人包的办法,用Snap方式装,也许能少不少麻烦。