项目背景知识

系统需求

  • 由于现有网盘费用较高且安全性得不到保证,需要在本地部署个人网盘存储系统。

  • 为了便于使用,通过容器技术来实现,并部署在线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 - 企业在线办公应用软件 | 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 – Nextcloudhttps://3a7bab1b.r8.cpolar.top 

至此项目完成!!!

出现的问题以及解决方案

出现的问题:

在docker启动中出现

这个错误意味着 Docker 客户端无法连接到 Docker 守护进程

解决方案:

查看docker服务是否启动,若没有启动出现failed,则手动启动一下

如果 Docker 依然不能启动,通过sudo dockerd命令查看 Docker 守护进程的状态和错误信息:我的出现的错误信息是Docker 配置文件 /etc/docker/daemon.json 中包含一个无效的字符(Â),通过把json文件里镜像源删了重新写最后再重新启动docker,就解决了!

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐