使用nextcloud搭建个人网盘
更好用的个人网盘
个人经验记录,如有转载请注明来源。
搭建的过程中,如有本文未提到的问题,欢迎指出、评论探讨!
本文相关yml文件见 文章末尾
简介
nextcloud与owncloud其实是差不多的两个东西,开发团队是同一个。
相传owncloud的老大不满owncloud的商业化气息太浓,并觉着owncloud还有很多值得改进的地方。离职后搞出了nextcloud这个东西。
当然都是道听途说,具体情况是怎么回事,作为吃瓜群众的我并不关心,个人觉得nextcloud有很多更强大的地方。见下面对比:
nextcloud | owncloud |
---|---|
版本更新更快目前已到18.1 | 版本更新较慢目前版本10.3.1 |
github上活跃度更高,贡献者更多 | 相比较少 |
ios端app下载数更多,数千人 | ios端app下载数仅为个位数 |
支持拖拽上传文件、文件夹 | 不支持 |
文件上传有实时进度,实时上传大小,上传速率显示 | 没有 |
web端更强大好用,比如类似github上的readme.md设定、主题自定义等等 | 功能单一 |
待补充。。。。。 |
安装
使用docker
推荐,安装简单,升级简单,便于管理。最棒的是不用任何依赖呀!!!!
此处演示使用纯净的Ubuntu18.04环境(新创建的虚拟机)
我推荐使用独立创建的mysql、redis应用,给owncloud创建单独的用户
-
安装docker
-
ubuntu
sudo apt install -y docker
-
CentOS
sudo yum install -y docker
-
-
安装docker-compose
-
Ubuntu
sudo apt install -y docker-compose
-
-
安装redis
使用官方镜像,使用方式见镜像下面官方说明。
# 创建文件夹 mkdir redis cd redis # 创建docker-compose.yml文件 vim docker-compose.yml
这里贴出我的docker-compose.yml文件
version: '3.1' services: redis: image: redis restart: always ports: # 映射到本机6379端口 - 6379:6379 healthcheck: test: ["CMD", "/usr/bin/healthcheck"] interval: 30s timeout: 10s retries: 5 volumes: # 数据卷映射到本机 - /home/joe/data/ext4-2T-disk-1/redis:/data
# 后台启动应用 docker-compose up -d
-
安装mysql
使用官方镜像,使用方式见镜像下面的官方说明。
# 创建文件夹 mkdir mysql cd mysql # 创建编辑yml文件 vim docker-compose.yml
这里贴出我的docker-compose.yml文件
version: '3.1' services: mysql: image: mysql command: --default-authentication-plugin=mysql_native_password restart: always environment: # 设置默认root管理员密码 MYSQL_ROOT_PASSWORD: root ports: # 端口映射到本机 - 3306:3306 healthcheck: test: ["CMD", "/usr/bin/healthcheck"] interval: 30s timeout: 10s retries: 5 volumes: # 存储卷隐射到本机 - /home/joe/data/ext4-2T-disk-1/mysql:/var/lib/mysql
# 后台启动应用 docker-compose up -d
# 查看mysql应用id docker ps # 登录到应用 docker exec -it <ID> /bin/bash # 登录mysql mysql -u root -p # 创建数据库 create database nextcloud charset='utf8mb4'; # 赋予新创建的用户操作新创建的数据库的权限 GRANT ALL privileges ON nextcloud.* TO 'nextcloud'@'%' WITH GRANT OPTION; # 刷新权限 flush privileges;
-
安装nextcloud
建议使用官方镜像,使用方式见镜像下面的说明。
这里贴出我的docker-compose.yml文件
version: '2.1' services: nextcloud: image: nextcloud:latest restart: always network_mode: bridge ports: - 8848:80 environment: # 管理员用户名 - NEXTCLOUD_ADMIN_USER=joe # 管理员密码 - NEXTCLOUD_ADMIN_PASSWORD=xxxxxx # mysql中给nextcloud创建的数据库名 - MYSQL_DATABASE=nextcloud # mysql给nextcloud创建的用户名 - MYSQL_USER=nextcloud # 该mysql用户的密码 - MYSQL_PASSWORD=nextcloud # mysql host ip - MYSQL_HOST=10.0.2.55 # redis host ip - REDIS_HOST=10.0.2.55 healthcheck: test: ["CMD", "/usr/bin/healthcheck"] interval: 30s timeout: 10s retries: 5 volumes: # 数据卷映射到本机位置 - /home/joe/data/ext4-2T-disk-1/nextcloud:/var/www/html
# 后台启动nextcloud docker-compose up -d
此时就耐心等待nextcloud应用启动吧
# 查看启动日志 docker logs <容器ID>
可能出现数据库连接 connect time out 的情况。是因为防火墙导致的docker应用无法访问到宿主机的mysql端口。这里打开一下端口访问即可。
完成后打开浏览器登录
http://<ip>:<端口>
即可
下载zip包手动安装
不推荐(原因如下):
- 依赖php环境,需要安装很多依赖,如果你不是php开发者,没有必要为了这个去搞一通php环境。
- 安装麻烦。搭建php环境 -> 安装数据库 -> 安装redis -> 安装apache服务。
- 升级麻烦。
- 管理起来麻烦。
官方文档传送门