NextCloud使用笔记
2021-6-26
| 2023-2-19
0  |  0 分钟
password
Created
Feb 19, 2023 04:05 PM
type
Post
status
Published
date
Jun 26, 2021
slug
summary
NextCloud使用笔记
tags
NextCloud
Nas
category
其他
icon
前段时间被同事安利了NextCloud(以下简称NC)之后, 觉得这个工具特别棒, 解决了我的数据存储问题. 同时, NC的插件机制能够让我们集成一些思维工具, 如: 脑图, 流程图软件, 也能够集成一些效能工具如: TodoList, 日程看板等等功能. 这些工具有些往往需要在特定网站上使用, 且需要开通会员才能使用完整功能, 自己搭建之后就能够将这些资源全部存储到自己的云服务器, 只要云服务器内存充足搞多少都行, 四舍五入等于省去一个亿了有木有 ! 同时, NC支持多终端设备运行, 在手机上可以直接安装NC的软件来实现对文件的移动设备访问.

NC是什么?

NC本质上是衍生于OwnCloud的可被部署于自己私人服务器, 可扩展的个人云存储软件. 通过部署NC到个人服务器上, 可以实现对自己文件的远程管理和控制.

NC的数据安全性?

可能很多人会想到这一点, 如何保证数据安全呢?
首先, NC使用了一套登陆鉴权机制, 只有我们自己创建的账号才具有登陆的权限. 登陆账号都是存储在自己设定的存储中(如: MySQL), 同时会有一些add salt的机制来保证数据难以被破解. 数据访问是需要鉴权的, 但是我们可以通过分享链接的方式让其他人可以访问我们在NC上的内容.
其次, 如果我的云服务器要迁移等, 怎么办呢?
NC可以通过配置config.php来定义文件存储位置, 我们只需要将对应位置的文件进行迁移即可保证数据迁移的完整性. 同时, NC官方提供了Docker镜像, 我们可以使用Docker来保证宿主环境的纯粹性.
笔者使用的是Docker化部署, 同时挂载Volume的方式来进行部署.

部署

笔者使用的环境是CentOS8.2版本
Docker化部署需要我们提前准备好Docker环境
 # 更新yum  sudo yum update  # 如果之前有安装docker, 需要卸载掉  yum remove docker  # 设置阿里云repo  curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo  # 安装docker-ce(安装docker会报错Error: missing command ‘podman COMMAND’, 需要安装ce版本)  yum install docker-ce -y  # 一般建议同时安装一下docker-compose, 可选, 本文中目前用不到  curl -L "https://get.daocloud.io/docker/compose/releases/download/1.20.1/docker-compose-$(uname -s)-$(uname -m)" > /usr/local/bin/docker-compose  # 运行docker, 看是否正常  docker -v
docker环境准备好之后, 就可以安装需要的镜像了
 docker run -d --restart=always --name mysql \  -v /root/mysql/data:/var/lib/mysql \  -v /root/mysql/conf:/etc/mysql \  -v /root/mysql/log:/var/log/mysql \  -p 3306:3306 \  -e TZ=Asia/Shanghai \  -e MYSQL_ROOT_PASSWORD=PASSWORD \  -e MYSQL_DATABASE=nextclud \  -e MYSQL_USER=USER \  -e MYSQL_PASSWORD=USER_PASSWORD \  mysql:5.7 \  --character-set-server=utf8mb4 \  --collation-server=utf8mb4_general_ci
使用上面的命令, 我们实现了mysql5.7版本镜像的安装, 同时将mysql的存储指定到了/root/mysql中, 之后我们可以随时将此目录拷贝到其他地方启动, mysql的数据是不会改变的. 同时我们定义了一个nextcloud的database, 设定了根password, 并设定了一个mysql user和其password.
接下来, 我们通过docker安装NC
 docker run -d --name nextcloud \     -v /root/nextcloud:/var/www/html \     --link mysql:mysql \     -p 8080:80 nextcloud
我们将NC挂载到了8080端口, 并将数据挂载到了/root/nextcloud中, 方便数据随时备份迁移
这样就大功告成了 !, 我们可以使用ip + 端口的方式来对NC进行访问和使用
 http://IP:8080
这样NC就完成搭建了, 但是这里有一个点需要特别注意的是, NC的第一次启动需要设定数据库, 数据库地址需要填入mysql, 因为我们使用的是docker运行, docker内, 不同container的地址为对应的名称.
在可视化界面中完成之前定义的mysql账号密码, 同时自己创建一个管理员账户, 设定密码. NC就可以用啦.

域名访问

只使用IP怎么能够体现我们程序猿精益求精的思想呢, 得用个域名访问呀, 不然IP怎么记得住.
如果没有域名则需要到对应的域名服务商如阿里云, 腾讯云处购买, 购买完成之后直接解析A记录到你的服务器地址即可, 在这里就不再赘述了
同时, 需要设置nginx的反向代理到对应的8080端口
如果没有安装nginx的, 可以通过以下命令快速进行nginx安装
 yum install -y nginx
编辑nginx参数, 设置反向代理
 vim /etc/nginx/nginx.conf
主要的修改是增加一个server的配置, 设置server_nameproxy_pass
    server {         listen       80;         listen       [::]:80;         server_name nas.changerhe.cn;         root         /usr/share/nginx/html;             location / {             proxy_pass http://127.0.0.1:8080/;         }           error_page 404 /404.html;             location = /40x.html {         }           error_page 500 502 503 504 /50x.html;             location = /50x.html {         }     }
这样就可以完成域名配置了, 我们不需要使用IP + 端口, 而是可以通过域名访问
 http://nas.changerhe.cn

Https支持

http存在被劫持风险, 最好的办法是升级到主流的https请求方式.
Https证书我使用的阿里云的免费证书, 在阿里云购买域名之后, 我们需要进行域名解析到我们的服务器
阿里云支持最多创建20个免费证书, 可以通过 数字证书管理服务 > SSL 证书 > 创建证书, 然后点击下面新创建的证书来申请免费证书即可.
证书申请好之后就可以下载nginx支持的格式证书, 并上传到服务器上, 例如, 我将证书命名为nas.pemnas.cert, 存放在了/etc/nginx/cert目录下, 方便统一管理. 接下来就可以进行nginx的https配置了, 以下是配置示例.
server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name nas.changerhe.cn; root /usr/share/nginx/html; ssl_certificate "/etc/nginx/cert/nas.pem"; ssl_certificate_key "/etc/nginx/cert/nas.key"; ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m; ssl_ciphers PROFILE=SYSTEM; ssl_prefer_server_ciphers on; location / { proxy_pass http://127.0.0.1:8080/; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
配置完成之后, 运行nginx -s reload, 如果无报错则启动成功, 这时我们就可以进行httos访问NC服务了
https://nas.changerhe.cn

额外的安装问题

  1. 移动设备访问问题
在Android上, 是强制要求https访问的, 因此如果没有配置https证书的, 需要配置好https证书.
默认情况下, NC的设置 > 手机与电脑 > 服务器地址是`localhost:8080`, 这显然是不能够支持远程移动设备访问的, 我们需要修改NC的配置, 以支持移动设备进行访问
# 进入到配置文件 cd /root/nextcloud/config/config.php # 增加两条json配置 'overwritehost' => 'nas.changerhe.cn', 'overwriteprotocol' => 'https', # 重启NC docker container restart nextcloud
完成后, 可以看到对应的配置就修改完成, 这样我们在移动设备上输入此https地址即可完成访问
  1. 上传文件尺寸超过1M报错问题
上传文件超过1M报错其实是因为nginx的限制导致的, nginx默认只支持1M以内的上传, 我们调整nginx的上传配置即可
// ... http { client_max_body_size 10240M; // ... }

插件安装

  1. 直接下载
插件可以通过右上角头像 > 应用直接选择和下载
  1. 手动安装
但是似乎因为国内网络原因, 有些大尺寸插件下载会超时, 这个时候我们可以通过手动下载压缩文件, 直接部署的方式来进行插件安装
例如: 我们要下载note插件, 则在商店下载好`note.tar.gz文件后. 手动上传到`/root/nextcloud/custom_apps`, 然后解压
tar -zxvf note.tar.gz
即可在NC商店 > 已禁用的插件中找到note插件了

插件推荐

  1. note: 可以很方便的管理和书写笔记
  1. File sharing(已经内置): 随时分享文件给你的朋友
  1. Draw.io: 可以在NC中使用Draw.io来画图
  1. Mind Map: 思维导图, 可以作为xmind的替代, 但是完全自主可控
  1. Tasks: 简易的TodoList软件, 方便实用
  1. Ebook reader: 可以在线看电子书, 支持epub等格式

结束

其他
  • NextCloud
  • Nas
  • 直播背后使用的技术关于Webpack的一切
    目录