openEuler 云原生实战:Docker Compose 部署 Nextcloud 企业级私有云

openEuler 云原生实战:Docker Compose 部署 Nextcloud 企业级私有云

    • [一、为什么选择 openEuler 部署私有云](#一、为什么选择 openEuler 部署私有云)
      • [1.1 数据安全的需求](#1.1 数据安全的需求)
      • [1.2 openEuler:开源操作系统的标杆](#1.2 openEuler:开源操作系统的标杆)
      • [1.3 技术选型:Nextcloud](#1.3 技术选型:Nextcloud)
    • 二、环境说明
      • [2.1 服务器配置](#2.1 服务器配置)
      • [2.2 Docker 环境](#2.2 Docker 环境)
      • [2.3 Nextcloud 介绍](#2.3 Nextcloud 介绍)
      • [2.4 架构说明](#2.4 架构说明)
    • [三、部署 Nextcloud](#三、部署 Nextcloud)
      • [3.1 创建项目目录](#3.1 创建项目目录)
      • [3.2 编写 docker-compose.yml](#3.2 编写 docker-compose.yml)
      • [3.3 启动服务](#3.3 启动服务)
    • [四、访问和配置 Nextcloud](#四、访问和配置 Nextcloud)
      • [4.1 初次访问](#4.1 初次访问)
      • [4.2 主界面介绍](#4.2 主界面介绍)
      • [4.3 简单功能测试](#4.3 简单功能测试)
    • 五、容器管理
      • [5.1 常用命令](#5.1 常用命令)
      • [5.2 资源占用](#5.2 资源占用)
    • 六、实战总结
      • [6.1 部署体验](#6.1 部署体验)

一、为什么选择 openEuler 部署私有云

1.1 数据安全的需求

最近越来越觉得数据安全的重要性,百度网盘、腾讯微云这些公有云虽然方便,但数据放在别人服务器上总是不太放心。特别是一些个人照片、工作文档、学习资料什么的,还是想放在自己的服务器上。于是就想着搭建一个私有云盘,把数据完全掌握在自己手里。

在选择操作系统的时候,我对比了 CentOS、Ubuntu Server 和 openEuler,最终选择了 openEuler。这是一个非常正确的决定!

1.2 openEuler:开源操作系统的标杆

openEuler 是什么?

openEuler 是由开放原子开源基金会(OpenAtom Foundation)孵化及运营的开源项目,是一个面向数字基础设施的操作系统。它支持服务器、云计算、边缘计算、嵌入式等多种应用场景,是真正意义上的"全场景"操作系统。

为什么我选择 openEuler?

  1. 安全可控
    1. 华为主导,国内上百家企业参与共建(包括中科院、中国移动、中国电信等)
    2. 完全开源,代码透明,不用担心后门问题
  2. 云原生场景的王者
    1. 内核专门针对容器、虚拟化场景优化
    2. Docker、Kubernetes、Podman 等云原生工具支持完美
    3. 我之前部署 WordPress 的时候就感受到了,Docker 容器运行特别稳定
    4. 资源调度高效,16GB 内存能跑十几个容器应用
  3. 生态强大,兼容性
    1. 软件包兼容 RHEL/CentOS,rpm 包可以直接用
    2. 官方软件仓库(https://repo.openEuler.org/)资源丰富
    3. 社区活跃,文档详细,遇到问题容易找到解决方案
    4. openEuler 22.03 LTS 是长期支持版本,稳定可靠
  4. 性能优秀,资源占用低
    1. 针对 ARM 和 x86 架构都有深度优化
    2. 系统资源占用很低,把更多资源留给应用
    3. 我这台 16C16G 的服务器,openEuler 本身只占用 500MB 内存左右
  5. 文档和社区支持完善
    1. 官方文档中心:https://docs.openEuler.openatom.cn/zh/
    2. 社区论坛:https://forum.openEuler.org/
    3. GitHub:https://github.com/openEuler-mirror
    4. Gitee:https://gitee.com/openEuler
    5. 中文资料特别多,对国内开发者友好

实际使用体验

我从今年开始用 openEuler 22.03 LTS-SP1,到现在已经跑了好几个月了,部署了 WordPress、MySQL、Nextcloud 等多个应用,系统一次都没出过问题。稳定性真的很赞!而且对 Docker 的支持特别好,容器启动速度快,资源调度也很合理。

1.3 技术选型:Nextcloud

搜了一圈,发现 Nextcloud 挺火的。这玩意儿是开源的,功能很全,文件同步、在线编辑、日历、联系人啥都有,关键是部署简单,用 Docker Compose 几分钟就能跑起来。而且 Nextcloud 的 Docker 镜像在 openEuler 上运行特别流畅,兼容性完美。

这次实战目标

  • 在 openEuler 服务器上用 Docker Compose 部署 Nextcloud
  • 测试多容器应用管理
  • 验证 openEuler 在云原生场景下的性能表现

二、环境说明

2.1 服务器配置

服务器还是上次那台,配置没变:

  • CPU:16核 Intel Xeon Gold 6138 @ 2.00GHz
  • 内存:16GB
  • 存储:40GB SSD
  • 操作系统:openEuler 22.03 (LTS-SP1)

从上图可以看到服务器的基本信息,系统是 openEuler 22.03 (LTS-SP1),内核版本是 5.10.0。这个环境在第一篇文章里已经搭建好了,这次可以直接用。

2.2 Docker 环境

Docker 环境是现成的,之前部署 WordPress 的时候已经装好了:

  • Docker:26.1.4
  • Docker Compose:v2.40.3

从图中可以看到 Docker 26.1.4 已经安装好了,服务状态是 active (running)。如果你还没装 Docker,可以参考我之前写的那篇文章,里面有详细的安装步骤。这里就不重复了。

2.3 Nextcloud 介绍

Nextcloud 是一个开源的私有云存储解决方案,可以理解为自己搭建的"百度网盘"。主要功能有:

  • 📁 文件存储和同步
  • 👥 多人协作和分享
  • 📝 在线文档编辑
  • 📅 日历和联系人管理
  • 🔐 端到端加密

个人用来搭建私有云盘、家庭云存储都挺合适的。Nextcloud 在 GitHub 上有 27K+ 的 star,社区很活跃,插件生态也很丰富。

2.4 架构说明

这次部署包含两个容器:

  • nextcloud_app:Nextcloud 应用本体,提供 Web 界面和文件管理
  • nextcloud_mariadb:MariaDB 数据库,存储 Nextcloud 的配置和元数据

两个容器通过自定义网络互联,数据通过数据卷持久化。这种架构的好处是:即使容器重启或删除,数据也不会丢失。

三、部署 Nextcloud

3.1 创建项目目录

先创建一个项目目录。我喜欢把所有 Docker Compose 项目都放在统一的目录下,方便管理:

Plain 复制代码
# 创建 Nextcloud 项目目录
mkdir -p acowbo/docker-compose-project/nextcloud
cd acowbo/docker-compose-project/nextcloud

# 确认当前路径
pwd

从截图可以看到,项目目录创建成功。同时也能看到之前的 wordpress 目录,说明我们的项目结构很规范。用 docker ps 查看了一下,之前部署的 WordPress 容器还在跑着,这次部署 Nextcloud 不会影响它。

我们新部署的 Nextcloud 用的是 8090 端口,和 WordPress 的 8080 端口不冲突。这就是容器化的好处,多个应用可以在同一台服务器上和平共处,互不干扰。

3.2 编写 docker-compose.yml

接下来编写 Docker Compose 配置文件。配置很简单,两个服务 + 两个数据卷 + 一个网络:

Plain 复制代码
version: '3.8'

services:
  db:
    image: mariadb:10.11
    container_name: nextcloud_mariadb
    restart: always
    command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
    environment:
      MYSQL_ROOT_PASSWORD: nextcloud_root_pass
      MYSQL_DATABASE: nextcloud
      MYSQL_USER: nextcloud
      MYSQL_PASSWORD: nextcloud_pass
    volumes:
      - db_data:/var/lib/mysql
    networks:
      - nextcloud_net

  nextcloud:
    image: nextcloud:latest
    container_name: nextcloud_app
    restart: always
    depends_on:
      - db
    ports:
      - "8090:80"
    environment:
      MYSQL_HOST: db
      MYSQL_DATABASE: nextcloud
      MYSQL_USER: nextcloud
      MYSQL_PASSWORD: nextcloud_pass
      NEXTCLOUD_ADMIN_USER: admin
      NEXTCLOUD_ADMIN_PASSWORD: admin123
      NEXTCLOUD_TRUSTED_DOMAINS: '*'
    volumes:
      - nextcloud_data:/var/www/html
    networks:
      - nextcloud_net

volumes:
  db_data:
  nextcloud_data:

networks:
  nextcloud_net:
    driver: bridge

配置文件说明几个关键点:

数据库服务(db)

  • 使用 MariaDB 10.11 版本,这是 Nextcloud 官方推荐的
  • 配置了事务隔离级别和二进制日志,提升性能和数据安全
  • 数据库名、用户名、密码都是自定义的

Nextcloud 服务(nextcloud)

  • 使用最新版 Nextcloud
  • 端口映射 8090:80,避免和其他服务冲突
  • 通过环境变量配置数据库连接和管理员账号
  • NEXTCLOUD_TRUSTED_DOMAINS: '*' 允许任意域名访问(生产环境建议改成具体域名)

数据卷(volumes)

  • db_data:存储 MariaDB 数据
  • nextcloud_data:存储 Nextcloud 文件和配置

3.3 启动服务

配置文件写好后,一行命令就能启动所有服务:

Plain 复制代码
# 启动容器(后台运行)
docker-compose up -d

# 查看容器状态
docker ps

第一次启动会拉取镜像,Nextcloud 镜像大概 1GB 左右,MariaDB 大概 400MB,根据网速可能要等几分钟。我这边网速还行,大概3分钟就下载完了。

从截图可以看到,两个容器都成功启动了:

  • nextcloud_app:端口映射 0.0.0.0:8090->80/tcp,已经运行了 21 分钟
  • nextcloud_mariadb:数据库容器,状态也是 Up

容器名称、端口映射、运行状态都很清晰。这就是 Docker Compose 的魅力,复杂的多容器应用管理起来很轻松。

四、访问和配置 Nextcloud

4.1 初次访问

容器启动后,在浏览器里访问:http://<服务器IP>:8090

看到这个页面说明 Nextcloud 已经成功跑起来了。这是 Nextcloud 的登录/初始化页面。因为我们在 docker-compose.yml 里已经配置了管理员账号和数据库连接,Nextcloud 会自动完成初始化,不需要手动填写那些配置了。

登录信息

  • 管理员账号:admin
  • 管理员密码:admin123

直接用这个账号密码登录就行。首次登录可能需要等待1-2分钟,Nextcloud 在后台初始化数据库表结构。

4.2 主界面介绍

登录成功后就能看到 Nextcloud 的主界面了:

界面很清爽,功能也很全。左侧是导航菜单,可以看到:

  • 文件:核心功能,管理你的所有文件
  • 照片:照片自动分类和管理
  • 活动:查看文件操作历史
  • 通话:视频通话功能(需要额外配置)
  • 联系人:通讯录管理
  • 日历:日程管理
  • 设置:系统配置

中间是文件列表区域,可以上传、下载、分享文件,就像操作本地文件夹一样。右上角有用户信息和搜索功能。

整体使用体验和百度网盘差不多,但这是自己的服务器,数据完全掌握在自己手里。

4.3 简单功能测试

我简单测试了几个功能:

上传文件

  • 拖拽文件到浏览器就能上传,很方便
  • 支持批量上传,速度挺快的

创建文件夹

  • 可以创建多层级文件夹,方便分类管理
  • 文件夹可以设置访问权限

分享文件

  • 右键文件可以生成分享链接
  • 可以设置密码和过期时间
  • 也可以分享给其他 Nextcloud 用户

这些基础功能都很流畅,没有什么问题。

五、容器管理

5.1 常用命令

部署完成后,记录几个常用的管理命令:

Plain 复制代码
# 查看容器状态
docker-compose ps

# 查看日志
docker-compose logs nextcloud
docker-compose logs -f nextcloud  # 实时查看

# 停止服务
docker-compose stop

# 启动服务
docker-compose start

# 重启服务
docker-compose restart

# 停止并删除容器(数据不会丢失)
docker-compose down

# 停止并删除容器和数据卷(慎用!)
docker-compose down -v

5.2 资源占用

看了下容器的资源占用情况:

docker stats --no-stream

Nextcloud 和 MariaDB 两个容器加起来,内存占用大概 500MB 左右,CPU 基本可以忽略。这个资源消耗在可接受范围内,16GB 内存的服务器跑十几个这样的应用都没问题。

六、实战总结

6.1 部署体验

从创建目录到能正常使用,整个过程不到 10 分钟。Docker Compose 确实很方便,一个配置文件就能管理多容器应用,比手动安装配置 Nextcloud + MariaDB 省事太多了。

openEuler 的表现真的让我印象深刻

  1. 稳定性一流
    1. 整个部署过程没有任何报错,一次成功
    2. Docker 镜像拉取速度很快,没有因为系统兼容性导致的失败
    3. 容器运行稳定,到现在跑了几个小时,CPU 和内存都很平稳
  2. 云原生支持完美
    1. Docker 26.1.4 在 openEuler 上运行得很流畅
    2. 容器网络、数据卷管理没有任何问题
    3. 多容器应用管理轻松自如,和 Ubuntu 上的体验一模一样
  3. 资源效率高
    1. 系统本身占用内存很少(只有 500MB 左右)
    2. 把更多资源留给了应用容器
    3. 同样配置的服务器,能跑更多的容器应用
  4. 生态兼容性好
    1. Docker 官方镜像直接就能用,无需任何修改
    2. Nextcloud、MariaDB 这些流行应用完全无缝运行
    3. 之前还担心兼容性问题,现在看来完全是多虑了

对比其他发行版

我之前在 CentOS 7 和 Ubuntu 20.04 上也部署过类似的应用,对比下来:

  • CentOS 7:软件包太老,Docker 版本低,需要折腾很久
  • Ubuntu Server:软件包新,但 apt 源在国内比较慢,系统占用内存稍微多一点
  • openEuler:结合了两者的优点,软件包新,兼容性好。

写在最后

这次部署 Nextcloud 的经历让我对容器化部署有了更深的认识。同一台服务器上跑着 WordPress、Nextcloud,两个应用各自独立,互不干扰,资源占用也在合理范围内。这就是云原生的魅力所在。

强烈推荐 openEuler

作为一个用过 CentOS、Ubuntu、Debian 的老用户,openEuler 真的给了我太多惊喜:

  1. 成熟系统,支持起来心里踏实
    1. 不用担心像 CentOS 那样突然停止维护
    2. 有华为和国内这么多企业支持,生态会越来越好
  2. 云原生场景真的很强
    1. Docker、K8s 这些工具运行得比 Ubuntu 还流畅
    2. 容器性能优化做得很到位
    3. 适合搭建私有云、微服务架构
  3. 生态和文档很完善
    1. 软件包丰富,兼容 CentOS 的 rpm 包
    2. 中文文档详细,社区活跃
    3. 遇到问题很容易找到解决方案

建议

如果你也想尝试 openEuler + Docker Compose 部署应用:

openEuler 现在已经是我的首选服务器操作系统了。无论是个人学习、私有云部署,还是生产环境使用,openEuler 都是一个值得信赖的选择。

如果您正在寻找面向未来的开源操作系统,不妨看看DistroWatch 榜单中快速上升的 openEuler:https://distrowatch.com/table-mobile.php?distribution=openeuler,一个由开放原子开源基金会孵化、支持"超节点"场景的Linux 发行版。

openEuler官网:https://www.openeuler.openatom.cn/zh/

相关推荐
一条懒鱼6661 小时前
K8S-daemonset控制器
云原生·容器·kubernetes
一周困⁸天.2 小时前
K8S-Service资源对象
云原生·容器·kubernetes
weixin_46683 小时前
Docker常用命令与操作
运维·docker·容器
The star"'4 小时前
docker swarm和containerd
运维·docker·容器
❀͜͡傀儡师4 小时前
Docker部署OneTerm堡垒机
运维·docker·容器·oneterm
聆风吟º4 小时前
openEuler 开源操作系统测试实战:搭建本地AI问答工具
人工智能·ai·开源·openeuler·ollama