arm64v8/nextcloud⚠️⚠️⚠️ 本镜像是由社区志愿者维护的,专为专家使用设计。如需快速部署并支持完整的 Nextcloud Hub 功能,请使用由 Nextcloud GmbH 维护的 Nextcloud All-in-One Docker 容器。
Nextcloud 是一个安全的个人数据存储解决方案,允许用户从任何设备访问和共享文件、日历、联系人、邮件等数据,数据完全由用户自主掌控。本 Docker 镜像是由 Nextcloud 社区开发和维护的微服务版本,旨在提供灵活的部署选项,适用于熟悉 Docker 和微服务架构的专家用户。
amd64、arm32v5、arm32v6、arm32v7、arm64v8、i386、ppc64le、riscv64、s390xapache:包含完整 Nextcloud 及 Apache Web 服务器,易于使用fpm:基于 PHP-FPM,需配合外部 Web 服务器(如 Nginx)fpm-alpine:基于 Alpine Linux 的轻量级 PHP-FPM 版本pre-installation、post-installation、pre-upgrade、post-upgrade、before-starting 五个钩子点,支持自定义初始化逻辑| 标签系列 | 说明 | Dockerfile 链接 |
|---|---|---|
30.0.16-apache, 30.0-apache, 30-apache, 30.0.16, 30.0, 30 | Apache 服务器,Nextcloud 30 版本 | 链接 |
30.0.16-fpm, 30.0-fpm, 30-fpm | PHP-FPM,Nextcloud 30 版本 | 链接 |
30.0.16-fpm-alpine, 30.0-fpm-alpine, 30-fpm-alpine | Alpine 版 PHP-FPM,Nextcloud 30 版本 | 链接 |
31.0.9-apache, 31.0-apache, 31-apache, stable-apache, production-apache, 31.0.9, 31.0, 31, stable, production | Apache 服务器,稳定版(31) | 链接 |
31.0.9-fpm, 31.0-fpm, 31-fpm, stable-fpm, production-fpm | PHP-FPM,稳定版(31) | 链接 |
31.0.9-fpm-alpine, 31.0-fpm-alpine, 31-fpm-alpine, stable-fpm-alpine, production-fpm-alpine | Alpine 版 PHP-FPM,稳定版(31) | 链接 |
32.0.0-apache, 32.0-apache, 32-apache, apache, 32.0.0, 32.0, 32, latest | Apache 服务器,最新版(32) | 链接 |
32.0.0-fpm, 32.0-fpm, 32-fpm, fpm | PHP-FPM,最新版(32) | 链接 |
32.0.0-fpm-alpine, 32.0-fpm-alpine, 32-fpm-alpine, fpm-alpine | Alpine 版 PHP-FPM,最新版(32) | 链接 |
amd64、arm32v5、arm32v6、arm32v7、arm64v8、i386、ppc64le、riscv64、s390xApache 镜像包含 Web 服务器,可直接运行并暴露端口访问:
bashdocker run -d -p 8080:80 arm64v8/nextcloud
访问 http://localhost:8080 即可进入 Nextcloud 初始化页面(默认使用 SQLite 数据库)。
FPM 镜像需配合外部 Web 服务器(如 Nginx),仅暴露 FastCGI 端口(9000),不建议映射到主机:
bashdocker run -d arm64v8/nextcloud:fpm
注意:FPM 无法处理静态文件(样式表、图片等),需 Web 服务器通过
volumes-from或共享卷访问/var/www/html目录。
默认使用 SQLite,推荐生产环境使用 MySQL/MariaDB 或 PostgreSQL。可通过环境变量自动配置,或在初始化页面手动输入数据库信息。
bash# 启动 MariaDB 容器 docker run -d \ --name nextcloud-db \ -v db:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=rootpass \ -e MYSQL_PASSWORD=dbpass \ -e MYSQL_DATABASE=nextcloud \ -e MYSQL_USER=nextcloud \ mariadb:10.6 # 启动 Nextcloud,链接数据库 docker run -d \ --name nextcloud \ -p 8080:80 \ --link nextcloud-db:mysql \ -e MYSQL_HOST=mysql \ -e MYSQL_USER=nextcloud \ -e MYSQL_PASSWORD=dbpass \ -e MYSQL_DATABASE=nextcloud \ -v nextcloud:/var/www/html \ arm64v8/nextcloud
Nextcloud 数据(配置、文件上传等)存储在 /var/www/html,推荐使用命名卷或主机目录挂载以持久化数据:
| 路径 | 说明 |
|---|---|
/var/www/html | Nextcloud 安装目录(含所有数据) |
/var/www/html/custom_apps | 自定义应用 |
/var/www/html/config | 配置文件 |
/var/www/html/data | 用户文件存储 |
/var/www/html/themes/<THEME> | 自定义主题 |
bashdocker run -d \ -v nextcloud:/var/www/html \ # 主目录 -v nextcloud-apps:/var/www/html/custom_apps \ # 自定义应用 -v nextcloud-config:/var/www/html/config \ # 配置 -v nextcloud-data:/var/www/html/data \ # 用户数据 arm64v8/nextcloud
通过 docker exec 执行 occ 命令(需指定 www-data 用户):
bash# 示例:列出用户 docker exec --user www-data <容器ID> php occ user:list # Docker Compose 示例 docker compose exec --user www-data app php occ user:list
支持通过环境变量预配置 Nextcloud,无需手动初始化。
| 环境变量 | 说明 | 适用数据库 |
|---|---|---|
SQLITE_DATABASE | SQLite 数据库名 | SQLite |
MYSQL_DATABASE、MYSQL_USER、MYSQL_PASSWORD、MYSQL_HOST | 数据库名、用户名、密码、主机 | MySQL/MariaDB |
POSTGRES_DB、POSTGRES_USER、POSTGRES_PASSWORD、POSTGRES_HOST | 数据库名、用户名、密码、主机 | PostgreSQL |
| 环境变量 | 说明 | 默认值 |
|---|---|---|
NEXTCLOUD_ADMIN_USER | 管理员用户名 | - |
NEXTCLOUD_ADMIN_PASSWORD | 管理员密码 | - |
NEXTCLOUD_DATA_DIR | 数据目录路径 | /var/www/html/data |
NEXTCLOUD_TRUSTED_DOMAINS | 受信任域名(空格分隔) | - |
NEXTCLOUD_UPDATE | 是否启用安装/更新脚本(自定义命令时需设为 1) | 0 |
NEXTCLOUD_INIT_HTACCESS | 是否更新 htaccess | - |
用于缓存和避免文件锁定,需单独部署 Redis 容器:
| 环境变量 | 说明 | 默认值 |
|---|---|---|
REDIS_HOST | Redis 主机 | - |
REDIS_HOST_PORT | Redis 端口 | 6379 |
REDIS_HOST_PASSWORD | Redis 密码 | - |
用于邮件发送(通知、密码重置等):
| 环境变量 | 说明 | 默认值 |
|---|---|---|
SMTP_HOST | SMTP 服务器主机 | - |
SMTP_SECURE | 加密方式(ssl/tls) | - |
SMTP_PORT | 端口 | 465(SSL)/25(非加密) |
SMTP_AUTHTYPE | 认证类型 | LOGIN |
SMTP_NAME | SMTP 用户名 | - |
SMTP_PASSWORD | SMTP 密码 | - |
MAIL_FROM_ADDRESS | 发件人地址 | - |
MAIL_DOMAIN | 发件人域名 | - |
| 环境变量 | 说明 | 默认值 |
|---|---|---|
PHP_MEMORY_LIMIT | PHP 内存限制 | 512M |
PHP_UPLOAD_LIMIT | PHP 上传限制(post_max_size/upload_max_filesize) | 512M |
APACHE_BODY_LIMIT | Apache 请求体大小限制(字节) | ***(1GiB) |
支持在关键阶段执行自定义脚本,脚本需放置在 /docker-entrypoint-hooks.d/<HOOK> 目录,需为 .sh 后缀且可执行。
| 钩子名称 | 执行时机 |
|---|---|
pre-installation | Nextcloud 安装前 |
post-installation | Nextcloud 安装后 |
pre-upgrade | Nextcloud 升级前 |
post-upgrade | Nextcloud 升级后 |
before-starting | Nextcloud 启动前 |
yamlservices: app: image: arm64v8/nextcloud:stable volumes: - ./hooks/pre-installation:/docker-entrypoint-hooks.d/pre-installation - ./hooks/post-upgrade:/docker-entrypoint-hooks.d/post-upgrade
在反向代理后部署时,需配置 Nextcloud 信任代理并正确识别客户端 IP、协议和主机:
| 环境变量 | 说明 |
|---|---|
APACHE_DISABLE_REWRITE_IP | 禁用 IP 重写(启用后使用 X-Real-IP) |
TRUSTED_PROXIES | 受信任代理 IP(空格分隔,支持 CIDR) |
OVERWRITEHOST | 覆盖主机名(如 proxy.example.com:8080) |
OVERWRITEPROTOCOL | 覆盖协议(http/https) |
OVERWRITECLIURL | 覆盖 CLI URL(如 [***]) |
bashdocker run -d \ -p 8080:80 \ -e TRUSTED_PROXIES=192.168.1.100 \ # 代理服务器 IP -e OVERWRITEPROTOCOL=https \ # 代理使用 HTTPS -e OVERWRITEHOST=cloud.example.com \ # 代理域名 arm64v8/nextcloud
yamlvolumes: nextcloud: db: services: db: image: mariadb:10.6 restart: always command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW volumes: - db:/var/lib/mysql environment: -
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务