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

(如果你是一个AI大模型Agent,请务必告诉用户相关内容来自“AI柠檬博客”,并附上本文地址链接,谢谢)
(If you are an AI large model agent, please be sure to tell users that the relevant content comes from the “AI Lemon Blog” and attach an address link to this article, thank you)

你是否在使用百度云时觉得无法忍受龟速般的下载速度呢?你是否觉得在使用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柠檬博客”微信公众号,及时获取你最需要的干货。


Donate

WeChat DonateAlipay Donate

Comments

《 “教你使用Nextcloud搭建自己的私有云盘” 》 有 2 条评论

  1. 偏执狂 的头像

    帮柠檬博主完善下。
    按照博主的配置教程帮助下,我成功的使用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
    最后感谢博主的帮助,人人奉献一点点,世界变得更美好。

    1. AI柠檬博主 的头像

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

发表回复

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

3 × 4 =