看到安装FileBrowser教程,我也试了试总感觉少了些什么,fileBrowser手机上没有app,如果其他人在手机上上传文件就很不方便,搜了一下发现nextcloud好像还行。文件存储在自己的硬盘里,支持自动同步、手动上传下载和分享,有网页,客户端也是全平台的,Windows上体验就和OneDrive一样,而且NextCloud还支持Webdev。
首先需要安装docker和docker-compose,安装docker教程很多,可以自己搜索安装一下,下面直接介绍安装Docker Compose 。
安装Docker Compose 当前稳定版本命令:
sudo curl -L "https://github.com/docker/compose/releases/download/v2.3.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
查看docker-compose版本:
docker-compose --version
有输出显示docker-compose版本则安装成功。
二、安装NextCloud
NextCloud docker网页:
这里我们使用 docker-compose 来运行此镜像。
在任意路径创建一个名为docker-compose.yml的文件:
sudo apt update #更新软件源
sudo apt install vim #安装vim
vi docker-compose.yml #创建docker-compose.yml文件
(vi里开始是不能修改的,按 i键是开启编辑,保存并退出是先按ESC键,然后输入:wq
,就保存了;不保存退出是先按ESC键,然后输入:q!
。)
或
sudo apt update #更新软件源
sudo apt install nano #安装nano
nano docker-compose.yml #创建docker-compose.yml文件
(nano中,按ctrl+o键,再按一下回车键,是保存;按ctrl+z键是退出)
这里docker-compose.yml文件里的“MYSQL_ROOT_PASSWORD”、“MYSQL_PASSWORD”需要自己填写好密码,还有映射出来的路径和端口号。
注意:在mariadb容器的command上添加上 --innodb-read-only-compressed=OFF
,不然后面网页install会出现错误。
在docker-compose.yml文件中粘贴以下内容:
version: '2'
volumes:
nextcloud:
db:
services:
db:
image: mariadb
restart: always
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW --innodb-read-only-compressed=OFF
volumes:
- /路径/db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=设置密码
- MYSQL_PASSWORD=设置密码
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
app:
image: nextcloud
restart: always
ports:
- 8080:80
links:
- db
volumes:
- /路径/nextcloud:/var/www/html
environment:
- MYSQL_PASSWORD=设置密码
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_HOST=db
保存并退出docker-compose.yml,再使用命令docker-compose up
就可以拉取镜像并生成容器,自动运行。
等待一段时间,我们就可以打开浏览器访问http://IP:8080/来进行接下来的操作。
输入自己想要设置的用户名和密码,点击 “ install ” ,有些人到这里就结束了,可以直接正常使用。
因为我挂载的是NTFS格式的硬盘,所以这里会出现错误提示:
错误
您的数据目录可被其他用户读取
请更改权限为 0770 以避免其他用户查看目录。
这里我们只需要修改一下nextcloud容器里的config/config.php文件就可以解决,因为config文件夹已经被我们映射出来了,所以我们不用进入nextcloud容器里修改。
进入刚刚映射出来的 /路径/nextcloud/config/
,将'check_data_directory_permissions' => false,
添加到config.php文件里。
修改完成,重新打开nextcloud网页,就会自动进入nextcloud仪表盘。
各种客户端官方下载:官方下载
外部访问
没有固定IP,我使用的Frp内网穿透,将内网IP映射到服务器IP端口,外网打开网页直接使用,以及使用的NextCloud 安卓客户端,填入映射的服务器IP和端口也没有问题;但如果填入的是域名,app会提示隧道未加密,不能连接,我们就需要给域名申请SSL证书。
遇到的其他错误
1、不能写入
开始我没添加--innodb-read-only-compressed=OFF
就输入用户名和密码,点击Install,会看到一个错误:
Error while trying to initialise the database: An exception occurred while executing a query: SQLSTATE[HY000]: General error: 4047 InnoDB refuses to write tables with ROW_FORMAT=COMPRESSED or KEY_BLOCK_SIZE.
我们要进入mariadb控制台,键入以下命令并回车:
sudo docker exec -it mariadb bash #进入mariadb容器,其中mariadb为这里我的容器名
cd /etc/mysql #进入路径/etc/mysql
apt update #更新软件源
apt install vim #安装vim
vi my.cnf #打开my.cnf
在my.cnf最后一行添加 innodb_read_only_compressed=0
,保存并退出。
(vi里开始是不能修改的,按 i键是开启编辑,保存并退出是先按ESC键,然后输入:wq
,就保存了;不保存退出是先按ESC键,然后输入:q!
。)
修改成功,我们重启一下NextCloud和mariadb容器,再到浏览器刷新一下,就可以install了。
2、域名不可访问
错误提示:
修改映射出来的 /路径/nextcloud/config/config.php
文件,
添加域名或ip地址1 => 'IP地址:端口',
或者 1 => '域名',
,例如0 => '192.168.3.3:8080',
保存并退出,刷新一下网页就可以正常访问了。
谢谢,分享学习了
瞅瞅瞅瞅,mark一手
又学习到了,写的非常好