jricks92/nextcloud本镜像为 wonderfall/nextcloud 的分支版本,因原作者停止支持而由个人维护。基于Alpine Linux构建,集成nginx和PHP 7.1,添加了HTTP/2支持,用于提供安全的个人数据存储与同步服务。注意:此镜像为个人使用目的创建,非官方版本,支持不规律,欢迎通过GitHub提交PR或issue(Docker Hub评论可能无法查看)。
除
daily标签外,其他标签每周构建一次。为保障安全,即使使用最新版本,也建议定期更新容器。
| 变量名 | 说明 |
|---|---|
NEXTCLOUD_VERSION | Nextcloud版本号 |
GNU_LIBICONV_VERSION | GNU Libiconv版本号 |
GPG_nextcloud | 签名密钥指纹 |
| 变量名 | 说明 | 默认值 |
|---|---|---|
UID | Nextcloud用户ID | 991 |
GID | Nextcloud用户组ID | 991 |
UPLOAD_MAX_SIZE | 最大上传文件大小 | 10G |
APC_SHM_SIZE | APCu共享内存大小 | 128M |
OPCACHE_MEM_SIZE | OPCache内存大小(MB) | 128 |
MEMORY_LIMIT | PHP内存限制 | 512M |
CRON_PERIOD | Cron任务执行间隔 | 15m |
CRON_MEMORY_LIMIT | Cron任务PHP内存限制 | 1024m |
TZ | 系统/日志时区 | Etc/UTC |
ADMIN_USER | 管理员用户名(不设置则通过网页配置) | none |
ADMIN_PASSWORD | 管理员密码(不设置则通过网页配置) | none |
DOMAIN | 部署域名 | localhost |
DB_TYPE | 数据库类型(sqlite3/mysql/pgsql) | sqlite3 |
DB_NAME | 数据库名称 | none |
DB_USER | 数据库用户名 | none |
DB_PASSWORD | 数据库密码 | none |
DB_HOST | 数据库主机地址 | none |
管理员密码请务必设置为强密码!
| 卷路径 | 用途 |
|---|---|
/data | Nextcloud数据存储目录 |
/config | config.php配置文件目录 |
/apps2 | 下载的应用存储目录 |
/nextcloud/themes | 主题文件目录 |
/php/session | PHP会话文件目录 |
可使用主机、外部服务器或容器化数据库。推荐使用MariaDB容器,示例如下:
bashdocker run -d --name db_nextcloud \ -v /docker/nextcloud/db:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=supersecretpassword \ -e MYSQL_DATABASE=nextcloud \ -e MYSQL_USER=nextcloud \ -e MYSQL_PASSWORD=supersecretpassword \ mariadb:10
bash# 拉取镜像 docker pull wonderfall/nextcloud:12.0 && docker pull mariadb:10 # 创建数据库容器 docker run -d --name db_nextcloud \ -v /docker/nextcloud/db:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=supersecretpassword \ -e MYSQL_DATABASE=nextcloud \ -e MYSQL_USER=nextcloud \ -e MYSQL_PASSWORD=supersecretpassword \ mariadb:10 # 创建Nextcloud容器 docker run -d --name nextcloud \ --link db_nextcloud:db_nextcloud \ -v /docker/nextcloud/data:/data \ -v /docker/nextcloud/config:/config \ -v /docker/nextcloud/apps:/apps2 \ -v /docker/nextcloud/themes:/nextcloud/themes \ -e UID=1000 -e GID=1000 \ -e UPLOAD_MAX_SIZE=10G \ -e APC_SHM_SIZE=128M \ -e OPCACHE_MEM_SIZE=128 \ -e CRON_PERIOD=15m \ -e TZ=Etc/UTC \ -e ADMIN_USER=mrrobot \ -e ADMIN_PASSWORD=supercomplicatedpassword \ -e DOMAIN=cloud.example.com \ -e DB_TYPE=mysql \ -e DB_NAME=nextcloud \ -e DB_USER=nextcloud \ -e DB_PASSWORD=supersecretpassword \ -e DB_HOST=db_nextcloud \ wonderfall/nextcloud:12.0
若未设置
ADMIN_USER和ADMIN_PASSWORD,可通过浏览器完成管理员账户配置。
推荐使用docker-compose管理容器,以下为示例配置(根据需求调整):
yamlversion: '2' networks: default: driver: bridge services: nextcloud: image: wonderfall/nextcloud:12.0 depends_on: - nextcloud-db # 使用MySQL时依赖 # - solr # 使用Nextant时依赖 # - redis # 使用Redis时依赖 environment: - UID=1000 - GID=1000 - UPLOAD_MAX_SIZE=10G - APC_SHM_SIZE=128M - OPCACHE_MEM_SIZE=128 - CRON_PERIOD=15m - TZ=Europe/Berlin - ADMIN_USER=admin # 不设置则通过浏览器配置 - ADMIN_PASSWORD=admin # 不设置则通过浏览器配置 - DOMAIN=localhost - DB_TYPE=mysql - DB_NAME=nextcloud - DB_USER=nextcloud - DB_PASSWORD=supersecretpassword - DB_HOST=nextcloud-db volumes: - /docker/nextcloud/data:/data - /docker/nextcloud/config:/config - /docker/nextcloud/apps:/apps2 - /docker/nextcloud/themes:/nextcloud/themes # MySQL数据库服务 nextcloud-db: image: mariadb:10 volumes: - /docker/nextcloud/db:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=supersecretpassword - MYSQL_DATABASE=nextcloud - MYSQL_USER=nextcloud - MYSQL_PASSWORD=supersecretpassword # Nextant搜索服务(可选) # solr: # image: solr:6-alpine # container_name: solr # volumes: # - /docker/nextcloud/solr:/opt/solr/server/solr/mycores # entrypoint: # - docker-entrypoint.sh # - solr-precreate # - nextant # Redis缓存服务(可选) # redis: # image: redis:alpine # container_name: redis # volumes: # - /docker/nextcloud/redis:/data
部署步骤:
docker-compose.ymldocker-compose up -d nextcloud-db(等待15秒数据库初始化)docker-compose up -ddocker-compose pull && docker-compose up -d需基于Alpine-ARM镜像(如orax/alpine-armhf:edge)自行构建。
在管理员面板中,建议将任务调度方式从AJAX cron切换为cron(系统cron)。
已内置PHP Redis扩展,部署Redis容器后,在config.php中添加:
php'memcache.distributed' => '\OC\Memcache\Redis', 'memcache.locking' => '\OC\Memcache\Redis', 'memcache.local' => '\OC\Memcache\APCu', 'redis' => array( 'host' => 'redis', 'port' => 6379, ),
部署Solr容器后,安装Nextant应用,在管理员面板的“附加设置”中设置Solr地址为[***]。
通过以下命令执行Nextcloud控制台命令:
bashdocker exec -ti nextcloud occ 命令
强烈建议通过HTTPS访问Nextcloud,推荐使用wonderfall/reverse镜像(基于nginx,支持Let's Encrypt自动证书)。
在Nextcloud服务中添加标签:
yamlnextcloud: ... labels: - reverse.frontend.domain=cloud.domain.tld # 域名 - reverse.backend.port=8888 # 后端端口 - reverse.frontend.ssl=true # 启用SSL - reverse.frontend.ssltype=ec384 # SSL类型 - reverse.frontend.hsts=false # HSTS配置 - reverse.frontend.headers=false # 头信息配置
添加反向代理服务:
yamlreverse: image: wonderfall/reverse container_name: reverse ports: - "80:8080" - "443:8443" environment: - EMAIL=*** # Let's Encrypt*** volumes: - /docker/reverse/ssl:/nginx/ssl - /var/run/docker.sock:/var/run/docker.sock depends_on: - nextcloud
拉取新版本镜像后,按部署步骤重新创建容器。外部卷确保数据不会丢失。若Nextcloud执行全量升级,应用可能被禁用(12.0.x版本后升级会自动启用应用)。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像服务
在 Docker Desktop 配置镜像
Docker Compose 项目配置
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
在宝塔面板一键配置镜像
Synology 群晖 NAS 配置
飞牛 fnOS 系统配置镜像
极空间 NAS 系统配置服务
爱快 iKuai 路由系统配置
绿联 NAS 系统配置镜像
QNAP 威联通 NAS 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
免费版仅支持 Docker Hub 访问,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等;免费版仅支持 docker.io。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
来自真实用户的反馈,见证轩辕镜像的优质服务