Docker秒级启动NextCloud个人网盘存储办公系统(详细版)
项目背景知识
系统需求
-
由于现有网盘费用较高且安全性得不到保证,需要在本地部署个人网盘存储系统。
-
为了便于使用,通过容器技术来实现,并部署在线office编辑工具,以实现个人云存储和移动办公。
docker

Docker类似于集装箱,各式各样的货物,经过集装箱的标准化进行托管,而集装箱和集装箱之间没有影响。也就是说,Docker平台就是一个软件集装箱化平台,这就意味着我们自己可以构建应用程序,将其依赖关系一起打包到一个容器中,然后这容器就很容易运送到其他的机器上进行运行,而且非常易于装载、复制、移除,非常适合软件弹性架构。
docker理念
-
Docker是基于Go语言实现的云开源项目。
-
Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到“一次镜像,处处运行”。
-
Linux容器技术的出现就解决了这样一个问题,而 Docker 就是在它的基础上发展过来的。将应用打成镜像,通过镜像成为运行在Docker容器上面的实例,而 Docker容器在任何操作系统上都是一致的,这就实现了跨平台、跨服务器。只需要一次配置好环境,换到别的机子上就可以一键部署好,大大简化了操作。
-
一句话定义docker:解决了运行环和配置问题的软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。
docker三要素
-
容器:可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
-
Docker 镜像(Image):就是一个只读的模板,镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。它也相当于是一个root文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。
-
仓库:==集中存放镜像文件的地方==,镜像构建完成后,可以很容易的在当前宿主上运行,但是, 如果需要在其他服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry 就是这样的服务。
Nextcloud

-
众所周知,国内很多网盘都关停了,现有的百度云还限速,甚至网盘里的文件还会被删除,网盘使用体验差、安全性堪忧。
-
团队内部分享文件,用微信传输有大小限制,且只能通过公网上传下载;用 QQ 传输虽然可以通过内网传输,但是有的文件是公司的机密,直接传输有泄露的风险,打包加密传输又太麻烦;并且不同部门对文档的操作权限也应该是不同的。
-
Nextcloud就是这么一套系统,既能够部署在局域网环境,又可以设置不同用户组对文档的访问权限,还可以实现内网 + 公网访问
-
Nextcloud是一套用于创建网络硬盘的客户端-服务器软件。其功能与Dropbox相近,但Nextcloud是自由及开放原始码软件,每个人都可以在私人服务器上安装并执行它。在安全性,多客户端支持与多应用支持上也非常具有优势。
onlyoffice
-
OnlyOffice是一款开源的办公套件,提供了文档编辑、电子表格和演示文稿等功能,支持在线协作和文件共享。它通过网页浏览器即可访问和编辑各种文档,适合企业和个人用户在不同地点高效工作

cpolar
-
一款免费的内网穿透软件
-
只需一行命令,就可以将内网站点发布至公网,方便给客户演示。高效调试微信公众号、小程序、对接支付宝网关等云端服务,提高您的编程效率
软硬件环境清单
-
使用单台虚拟机实现

任务清单
项目环境搭建
-
新建OpenEuler22.03 SP4 虚拟机
-
按照规划,最小化部署系统,关闭防火墙,禁用SELinux,确保能够联网。
docker设置
-
安装docker源及docker服务
-
配置docker镜像加速器
-
docker拉取镜像
-
配置并启动容器
配置数据库
-
新建nextcloud数据库及所需表
-
创建账户和密码设置权限
配置nextcloud
-
安装nextcloud
-
设置其选项
-
测试访问
配置onlyoffice
-
启动容器
-
下载onlyoffice连接器插件
-
配置
-
测试
配置内网穿透
项目实施
环境搭建
安装虚拟机及OpenEuler22.03 SP4系统 ,已安装

禁用SELinux,并且关闭防火墙
[root@localhost ~]# sed -i '7s/enforcing/disabled/' /etc/selinux/config
[root@localhost ~]# cat /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld

修改主机名并重启
[root@localhost ~]# hostnamectl set-hostname nextcloud
[root@localhost ~]# reboot

下载所需软件
[root@nextcloud ~]# yum install vim tar tree net-tools -y

安装docker
安装docker源
[root@nextcloud ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更换为阿里开源镜像站源
更换版本号(由于阿里开源中没有Euler系统版本,但其源自Centos则改为7即可)
[root@nextcloud ~]# sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
[root@nextcloud ~]# sed -i 's/$releasever/7/g' /etc/yum.repos.d/docker-ce.repo

最后安装docker引擎
[root@nextcloud ~]# yum install docker-ce -y

配置docker源
注意:docker镜像加速器随时失效
进入华为云点击镜像加速器


这就是我们自己的镜像源
[root@nextcloud ~]# vim /etc/docker/daemon.json # 添加如下
{
"registry-mirrors": ["https://09e875b18c194781aed5c5b7b32c7255.mirror.swr.myhuaweicloud.com"]
}

也可以加入以下的镜像源
"https://docker.1ms.run",
"https://docker.1panel.live/"
设置docker开机启动、查看版本,以及看是否封装
[root@nextcloud ~]# systemctl enable --now docker
[root@nextcloud ~]# docker version
[root@nextcloud ~]# docker info


拉取镜像
[root@nextcloud ~]# docker pull nextcloud
[root@nextcloud ~]# docker pull mysql:8.0.37
[root@nextcloud ~]# docker pull onlyoffice/documentserver
[root@server ~]# docker images

数据库配置
端口号的映射,数据目录的映射以及密码的设置
[root@nextcloud ~]# docker run -p 3306:3306 --name mysql --restart="always" -v /usr/local/mysql/conf:/etc/mysql/conf.d -v /usr/local/mysql/logs:/logs -v /usr/local/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0.37
[root@nextcloud ~]# docker ps | grep mysql
[root@nextcloud ~]# docker exec -it 2810a8c96cdd /bin/bash
root@4b97fc214522:/# mysql -uroot -p

看进程

进入容器(注意ID号要看自己的,在进程下mysql前面的ID)


进入mysql后进行账户的设置 ,修改当前的账户以及密码,密码验证插件,刷新权限,创建数据库最后exit在exit容器
mysql> grant all PRIVILEGES on *.* to root@'%' WITH GRANT OPTION;
mysql> ALTER USER 'root'@'%' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
mysql> FLUSH PRIVILEGES;
mysql> create database nextcloud;
mysql> exit
bash-5.1# exit
exit

nextclou配置
[root@nextcloud ~]# docker run -d -v /root/nextcloud/html:/var/www/html -v /root/nextcloud/apps:/var/www/html/custom_apps -v /root/nextcloud/config:/var/www/html/config -v /root/nextcloud/nextcloud/data:/var/www/html/data -v /root/nextcloud/themes:/var/www/html/themes -p 80:80 --name nextcloud --restart="always" nextcloud
[root@server ~]# docker ps -a

浏览器输入本机ip进行配置:192.168.194.131


安装成功界面:

onlyoffice
启动
[root@nextcloud ~]# docker run -i -t -d -p 9010:80 --restart=always \
-v /usr/docker/onlyoffice/log:/var/log/onlyoffice \
-v /usr/docker/onlyoffice/data:/var/www/onlyoffice/Data \
-v /usr/docker/onlyoffice/lib:/var/lib/onlyoffice \
-v /usr/docker/onlyoffice/db:/var/lib/postgresql onlyoffice/documentserver
[root@nextcloud ~]# docker ps

安装onlyoffice连接器
离线下载onyoffice插件:https://apps.nextcloud.com/apps/onlyoffice/releases?platform=30#30
查看当前nextcloud版本
[root@nextcloud ~]# docker inspect nextcloud:latest | grep -i version
"DockerVersion": "",
"PHP_VERSION=8.3.20",
"NEXTCLOUD_VERSION=31.0.2"
当前docker的nextcloud镜像是31版本,所以下载对应31版本插件

下载后,通过ftp复制插件到宿主机并解压插件
[root@nextcloud ~]# cd /root/nextcloud/apps
# 使用xftp将下载插件压缩包上传
[root@nextcloud apps]# tar xf onlyoffice.tar.gz # 解压缩


启用插件(点击最右上角,点击应用,点击已禁用的应用)

点击启用

配置onlyoffice
在onlyoffice7.2版本之后,需要使用秘钥才能连接上,浏览器输入:http://ip:9010 , 查看获取密钥方法


复制上图方框中代码,进入onlyoffice容器,获取密钥
[root@nextcloud apps]# sudo docker exec 70ecb333d2e2 /var/www/onlyoffice/documentserver/npm/json -f /etc/onlyoffice/documentserver/local.json 'services.CoAuthoring.secret.session.string'
3GfwhcHdQ5hK8jrTmABatompzmMZoJgH
注意:每次重启后密钥会发生变化
nextcloud中点击右上角用户图标 -> 点击管理设置-> 点击左侧侧边栏的onlyoffice,进行服务器配置,如图:

测试
nextcloud->文件->新建word文件或excel文件


内网穿透
网址:cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站

下载后通过xftp上传cpolar,查看并解压
[root@nextcloud ~]# ls
anaconda-ks.cfg cpolar cpolar-stable-linux-amd64.zip nextcloud
[root@nextcloud ~]# unzip cpolar-stable-linux-amd64.zip


添加自己的令牌,并启动内网穿透

[root@nextcloud ~]# ./cpolar authtoken YThjNjZiODktZDE3MC00YTk3LWJiYjgtODQ5ZGE2NTY2MGY2
[root@nextcloud ~]# ./cpolar http 80

重新开一个虚拟机
[root@nextcloud ~]# vim /root/nextcloud/config/config.php
array (
0 => '192.168.194.131',
1 => '3a7bab1b.r8.cpolar.top' # 添加域名信任
),
添加自己的域名


通过浏览器访问:
Login – Nextcloud
https://3a7bab1b.r8.cpolar.top


至此项目完成!!!
出现的问题以及解决方案
出现的问题:
在docker启动中出现

这个错误意味着 Docker 客户端无法连接到 Docker 守护进程
解决方案:
查看docker服务是否启动,若没有启动出现failed,则手动启动一下
如果 Docker 依然不能启动,通过sudo dockerd命令查看 Docker 守护进程的状态和错误信息:我的出现的错误信息是Docker 配置文件 /etc/docker/daemon.json 中包含一个无效的字符(Â),通过把json文件里镜像源删了重新写最后再重新启动docker,就解决了!
更多推荐
所有评论(0)