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/

相关推荐
穷人小水滴16 小时前
用容器编译 VirtualBox 虚拟机软件 (ArchLinux, podman)
linux·容器·virtualbox
EatFans16 小时前
Docker 实战部署:从本地镜像到云服务器,一篇走通 FastAPI + Celery + MySQL + Redis + Nginx
docker·fastapi
judezh17 小时前
api 容器一直 unhealthy?我把一个 Agent 运行时的健康检查逐条拆了,查出四个问题
运维·docker
AKAMAI17 小时前
随着瓦尔·基尔默的AI分身诞生,生成式AI是否正在将好莱坞推向边缘?
人工智能·云原生·云计算
暗不需求17 小时前
Docker 入门:从「光盘与 DVD」到全栈项目容器化实战
docker·容器·面试
探索云原生17 小时前
一个 Deployment 就能跑 vLLM,为什么还需要 KServe?
docker·ai·云原生·kubernetes·go
虎头金猫6 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
分布式存储与RustFS6 天前
MinIO 官方 Docker 镜像被移除:依赖它的项目该怎么办
docker·云原生·devops·对象存储·minio·分布式存储
codeejun6 天前
每日一Go·MySQL-5、锁机制全解析
云原生·golang
玉&心6 天前
通过Arthas在线诊断K8S中的内存及JVM等使用情况
docker·k8s·arthas