From 35dcacdc7c7dc241a6fc1b55a8af6b1383fab54c Mon Sep 17 00:00:00 2001 From: m1ngsama Date: Tue, 18 Nov 2025 16:47:11 +0800 Subject: [PATCH] feat(nextcloud): add local nextcloud docker compose setup --- nextcloud/.env.example | 16 ++++++++++ nextcloud/README.md | 40 ++++++++++++++++++++++++ nextcloud/compose.yaml | 71 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 127 insertions(+) create mode 100644 nextcloud/.env.example create mode 100644 nextcloud/README.md create mode 100644 nextcloud/compose.yaml diff --git a/nextcloud/.env.example b/nextcloud/.env.example new file mode 100644 index 0000000..584ff0a --- /dev/null +++ b/nextcloud/.env.example @@ -0,0 +1,16 @@ +# 时区设置 +TZ=Asia/Shanghai + +# Nextcloud 管理员账号(首次启动用于初始化) +NEXTCLOUD_ADMIN_USER=admin +NEXTCLOUD_ADMIN_PASSWORD=ChangeMe123! +NEXTCLOUD_TRUSTED_DOMAINS=localhost + +# MariaDB 数据库配置 +MYSQL_ROOT_PASSWORD=ChangeRoot123! +MYSQL_DATABASE=nextcloud +MYSQL_USER=nextcloud +MYSQL_PASSWORD=ChangeDb123! + +# Redis 密码 +REDIS_PASSWORD=ChangeRedis123! diff --git a/nextcloud/README.md b/nextcloud/README.md new file mode 100644 index 0000000..fbd6cd2 --- /dev/null +++ b/nextcloud/README.md @@ -0,0 +1,40 @@ +# Nextcloud 本地存储中心 + +该目录提供一个可快速启动的 Nextcloud 本地私有云(包含 Nextcloud、MariaDB、Redis)。 + +## 目录结构 +``` +nextcloud/ +├── compose.yaml # Docker Compose 配置 +├── .env.example # 环境变量示例,请复制为 .env 后修改 +└── README.md # 当前说明文档 +``` + +## 使用步骤 +1. 复制环境变量文件并按需修改: + ```bash + cp .env.example .env + ``` +2. 启动服务: + ```bash + docker compose up -d + ``` +3. 首次启动后访问 `http://localhost:8080`,使用 `.env` 中配置的管理员账号登录并完成初始化。 + +## 默认组件 +- Nextcloud `nextcloud:stable-apache`(暴露端口 `8080`) +- MariaDB 11(持久化在 `nextcloud_db` 卷) +- Redis 7(启用密码,提升缓存性能) + +## 数据持久化 +所有关键数据均挂载到命名卷,位于本地 Docker 数据目录,可根据需要调整为绑定宿主机路径: +- `nextcloud_html` / `nextcloud_data` / `nextcloud_config` / `nextcloud_apps` +- `nextcloud_db` +- `nextcloud_redis` + +## 常用命令 +- 查看日志:`docker compose logs -f nextcloud` +- 停止服务:`docker compose down` +- 备份数据库:`docker exec nextcloud-db mariadb-dump -unextcloud -p<密码> nextcloud > backup.sql` + +根据需要可进一步扩展(例如反向代理、对象存储适配等)。 diff --git a/nextcloud/compose.yaml b/nextcloud/compose.yaml new file mode 100644 index 0000000..5e50c06 --- /dev/null +++ b/nextcloud/compose.yaml @@ -0,0 +1,71 @@ +version: "3.9" + +services: + nextcloud: + image: nextcloud:stable-apache + container_name: nextcloud + restart: unless-stopped + depends_on: + - db + - redis + ports: + - "8080:80" + environment: + - TZ=${TZ:-Asia/Shanghai} + - NEXTCLOUD_ADMIN_USER=${NEXTCLOUD_ADMIN_USER:-admin} + - NEXTCLOUD_ADMIN_PASSWORD=${NEXTCLOUD_ADMIN_PASSWORD:-ChangeMe123!} + - NEXTCLOUD_TRUSTED_DOMAINS=${NEXTCLOUD_TRUSTED_DOMAINS:-localhost} + - MYSQL_HOST=db + - MYSQL_DATABASE=${MYSQL_DATABASE:-nextcloud} + - MYSQL_USER=${MYSQL_USER:-nextcloud} + - MYSQL_PASSWORD=${MYSQL_PASSWORD:-ChangeDb123!} + - REDIS_HOST=redis + - REDIS_HOST_PASSWORD=${REDIS_PASSWORD:-ChangeRedis123!} + volumes: + - nextcloud_html:/var/www/html + - nextcloud_data:/var/www/html/data + - nextcloud_config:/var/www/html/config + - nextcloud_apps:/var/www/html/custom_apps + networks: + - nextcloud-network + + db: + image: mariadb:11 + container_name: nextcloud-db + restart: unless-stopped + command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW --innodb_read_only_compressed=OFF + environment: + - TZ=${TZ:-Asia/Shanghai} + - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:-ChangeRoot123!} + - MYSQL_DATABASE=${MYSQL_DATABASE:-nextcloud} + - MYSQL_USER=${MYSQL_USER:-nextcloud} + - MYSQL_PASSWORD=${MYSQL_PASSWORD:-ChangeDb123!} + volumes: + - nextcloud_db:/var/lib/mysql + networks: + - nextcloud-network + + redis: + image: redis:7-alpine + container_name: nextcloud-redis + restart: unless-stopped + command: ["redis-server", "--requirepass", "${REDIS_PASSWORD:-ChangeRedis123!}"] + environment: + - TZ=${TZ:-Asia/Shanghai} + - REDIS_PASSWORD=${REDIS_PASSWORD:-ChangeRedis123!} + volumes: + - nextcloud_redis:/data + networks: + - nextcloud-network + +volumes: + nextcloud_html: + nextcloud_data: + nextcloud_config: + nextcloud_apps: + nextcloud_db: + nextcloud_redis: + +networks: + nextcloud-network: + driver: bridge