分类
NAS专区 综合技术

教你使用Nextcloud搭建自己的私有云盘

你是否在使用百度云时觉得无法忍受龟速般的下载速度呢?你是否觉得在使用OneDrive时觉得网络时常不稳定呢?你是否觉得自己的数据放在别人那里不放心呢?本文将教你使用Docker一步步地搭建Nextcloud服务,给自己的数据安个家。

你是否在使用百度云时觉得无法忍受龟速般的下载速度呢?你是否觉得在使用OneDrive时觉得网络时常不稳定呢?你是否觉得自己的数据放在别人那里不放心呢?私有云盘你值得拥有!你只要买得起一个树莓派,或者一个VPS (云服务器)实例,就可以搭建一个属于自己的高速云盘,让自己的数据不再流浪~~~Nextcloud是一个基于PHP的开源私有云存储服务程序,本文将教你使用Docker一步步地搭建Nextcloud服务,给自己的数据安个家。

天才第一步,备份数据库

此项主要是针对已经使用了Nextcloud服务的人群,当需要进行服务器迁移的时候,首要的是备份原来服务器上的数据库。之前旧机器上的数据库不要丢,可以导出为.sql文件,传到新机器上,并重新导入到数据库中,裹上鸡蛋液,粘上面包糠,隔壁小孩都馋哭了。

成功第一步,配置环境和目录

为了成功搭建云盘服务,首先需要安装Docker运行环境和相关工具,主要是docker-cedocker-composemysql(SQL Server)。具体详细配置过程请参考AI柠檬博主之前的文章:

在Linux系统上安装Docker

还需要创建一个目录,专门用于存放用于云盘存储的数据文件和应用程序的目录。在该目录下,创建一个文件名为“docker-compose.yml”的文件,并写入以下内容:

version: '2'

services:
  app:
    image: nextcloud
    ports:
      - 7009:80
    volumes:
      - ./www:/var/www/html
      - ./data:/var/www/html/data
    restart: always

然后,就可以在该目录下,通过命令“docker-compose up -d”启动该应用了。由于数据库和应用配置尚未恢复,或者初始化,此时仍需要进一步操作。

成功第二步,配置或恢复数据库

以mysql为例,首先创建名为“nextcloud”的数据库用户,以及database或schema:

CREATE USER 'nextcloud'@'%' IDENTIFIED BY 'password';
CREATE DATABASE nextcloud;
GRANT ALL ON nextcloud.* TO 'nextcloud'@'%';

然后对于需要迁移数据的用户需要先执行以下命令,新安装用户可以忽略,直接打开http://<ip地址>:7009安装配置就好。

# 拷贝数据库备份至容器应用中
docker cp /home/ubuntu/yun.sql nextcloud_db_1:/opt/yun.sql
# 导入数据库
mysql -u root -p
# 输入密码 nextcloud
mysql> use nextcloud;
mysql> source /opt/yun.sql
# 导入需要一段时间,稍加等待一下即可

数据库恢复完成之后,通过拷贝旧配置中的内容即可初始化容器应用,实际内容以自己的配置文件为准,这里仅供演示,主要内容如下所示:

  'passwordsalt' => '一大串文本',
  'secret' => '一大串文本',
  'datadirectory' => '/var/www/html/data',
  'overwrite.cli.url' => 'http://127.0.0.1:7009',
  'dbtype' => 'mysql',
  'version' => '13.0.3.2',
  'dbname' => 'nextcloud',
  'dbhost' => 'db',
  'dbport' => '',
  'dbtableprefix' => 'oc_',
  'dbuser' => 'nextcloud',
  'dbpassword' => 'nextcloud',
  'installed' => true,
  'theme' => '',
  'loglevel' => 0,
  'maintenance' => false,

不过,如果源码部署的应用版本与Docker镜像的应用版本不符时(通常是落后),还需要执行以下命令先升级某些插件之后才能正常访问:

docker exec -u www-data -ti nextcloud_app_1 php occ upgrade

当升级插件完成后,就可以正常使用 Docker部署的 Nextcloud 了。

一些补充说明

在安装nextcloud时,数据库可以选择的有三种,主要推荐mysql(或者mariadb),不太推荐sqlite,因为其性能较差,只有是少量设备使用才问题不大。在docker中,内部的应用如nextcloud通过网络访问宿主机上的sql数据库时,可以使用ifconfig查看本机在docker下的ip地址,一般情况下为172.18.0.1,而docker应用的ip地址往往依次往后排列下去。通过非本机登陆mysql数据库时,需要允许指定数据库用户远程登陆,否则可能会安装失败,并且建议以非root用户登陆。

有朋友说,直接开一个Samba服务或者FTP服务不就可以了?为什么要安装一个Nextcloud呢?博主嘴角露出笑容,有如百度网盘和OneDrive的优质使用体验,又有着高速稳定的带宽,如果追求存储空间,本地机器安装最多只需要加一块较大容量的硬盘,云服务器VPS安装最多只需要加一个云存储盘。朋友大呼真香!

版权声明
本博客的文章除特别说明外均为原创,本人版权所有。欢迎转载,转载请注明作者及来源链接,谢谢。
本文地址: https://blog.ailemon.net/2019/12/30/nextcloud-install-private-cloud-disk/
All articles are under Attribution-NonCommercial-ShareAlike 4.0

关注“AI柠檬博客”微信公众号,及时获取你最需要的干货。


“教你使用Nextcloud搭建自己的私有云盘”上的2条回复

帮柠檬博主完善下。
按照博主的配置教程帮助下,我成功的使用docker运行了nextcloud,但是只能在我服务器ip下进行访问,无法通过外网访问,外网访问显示403forbidden的错误。经过一下午的查阅,在docker-hub上查到了相关资料。如果想要外网访问就必须使用https,而官方非常的暖心直接给出了,nginx+Let’s encrypt+mysql+nextcloud官方docker-compose文件,你要做的只需要按照readme上的要求一步步的配置就好,不过前提是你要买个域名哦,而且你的80端口不能被占用,像我之前用apache服务器占用了80端口,就无法成功运行。附上链接:https://github.com/nextcloud/docker/tree/master/.examples
最后感谢博主的帮助,人人奉献一点点,世界变得更美好。

哈哈哈很高兴能够对您有所帮助,也感谢您的补充,我自己对公网的访问服务最后也确实是通过Nginx的反代 + Let’s encrypt的https证书来做的。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

4 − 2 =

如果您是第一次在本站发布评论,内容将在博主审核后显示,请耐心等待