Docker 搭建 Nextcloud 搭配 Redis 和 MariaDB

准备工作 确保系统已安装 Docker 和 Docker Compose。

一、创建如下目录

~/nas/
├── docker-compose.yml
├── env
│   ├── mariadb.env
│   └── nextcloud.env
├── logs
│   ├── mariadb
│   ├── nextcloud
│   └── redis
├── mariadb
│   └── data
├── nextcloud
│   ├── app
│   ├── config
│   └── data
└── redis
    └── data

14 directories, 3 files

 docker-compose.yml 文件:

x-logging: &default-logging
  logging:
    driver: json-file
    options:
      max-size: "10m"
      max-file: "3"

services:
  mariadb:
    image: mariadb:10.6.24
    container_name: nas-mariadb
    restart: always
    <<: *default-logging
    command:
      - --transaction-isolation=READ-COMMITTED
      - --binlog-format=ROW
    env_file:
      - ./env/mariadb.env
    volumes:
      - ./mariadb/data:/var/lib/mysql
    networks:
      - nas-net

  redis:
    image: redis:8.0
    container_name: nas-redis
    restart: always
    <<: *default-logging
    networks:
      - nas-net

  nextcloud:
    image: nextcloud:29.0.6
    container_name: nas-nextcloud
    restart: always
    <<: *default-logging
    depends_on:
      - mariadb
      - redis
    ports:
      - "8080:80"
    env_file:
      - ./env/mariadb.env
      - ./env/nextcloud.env
    environment:
      MYSQL_HOST: mariadb
      REDIS_HOST: redis
    volumes:
      - ./nextcloud/config:/var/www/html/config
      - ./nextcloud/data:/var/www/html/data
    networks:
      - nas-net

networks:
  nas-net:
    driver: bridge

mariadb.env 文件:

需要将password更改成自己的密码

MYSQL_ROOT_PASSWORD=PASSWORD
MYSQL_DATABASE=nextcloud
MYSQL_USER=nextcloud
MYSQL_PASSWORD=PASSWORD

mariadb.env文件留空,用于加入IP地址白名单

确保文件权限:

drwxr-xr-x 2 user     user            4096 Jan 24 07:08 env/
drwxr-xr-x 3 dnsmasq  systemd-journal 4096 Jan 24 07:06 mariadb/
drwxr-xr-x 4 www-data www-data        4096 Jan 24 08:17 nextcloud/

启动服务 在包含 docker-compose.yml 文件的目录中运行以下命令:

docker compose up -d

访问 Nextcloud 服务启动后,通过浏览器访问 http://localhost:8080 完成 Nextcloud 的初始设置。在设置过程中,使用以下数据库信息:

  • 数据库用户:nextcloud
  • 数据库密码:nextcloud_password
  • 数据库名称:nextcloud
  • 数据库主机:mariadb

配置 Redis 缓存 Nextcloud 安装完成后,通过以下步骤启用 Redis 缓存:

  1. 编辑 Nextcloud 的 config/config.php 文件。
  2. 添加以下配置:
'memcache.local' => '\\OC\\Memcache\\Redis',
'memcache.locking' => '\\OC\\Memcache\\Redis',
'redis' => [
    'host' => 'redis',
    'port' => 6379,
],

数据持久化 所有数据(Nextcloud、MariaDB、Redis)均通过 Docker 卷持久化存储,确保容器重启后数据不丢失。

优化建议

  • 为生产环境配置 HTTPS(可通过反向代理如 Nginx 实现)。
  • 定期备份 Docker 卷中的数据。
  • 根据硬件资源调整 MariaDB 和 Redis 的配置参数。

此配置提供了完整的 Nextcloud 私有云解决方案,结合了 MariaDB 数据库和 Redis 缓存,适合作为家庭或小型企业 NAS 使用。

Logo

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

更多推荐