
从wonderfall/nextcloud分支而来
本镜像为Nextcloud的Docker部署提供稳定支持,是wonderfall/nextcloud项目的分支版本(原项目已停止维护)。基于Alpine Linux构建,捆绑Nginx和PHP 7.1,支持通过环境变量自动安装,确保数据和应用持久化,适用于个人或小型团队搭建私有云存储服务。
出于安全考虑,即使使用最新版本的Nextcloud,也应定期更新容器,镜像会定期构建以保持底层依赖更新。
请为管理员账户设置强密码!
可使用主机或其他机器上的数据库实例,推荐使用外部数据库容器。建议使用MariaDB(可靠的数据库服务器),可通过Docker Hub的官方mariadb镜像创建数据库容器并链接到Nextcloud容器。也支持PostgreSQL。sqlite3仅推荐用于测试和极小实例,不建议生产环境使用。
适用于个人、家庭或小型团队搭建私有云存储服务,用于文件同步、共享和管理,支持多种客户端(Web、桌面、移动设备)访问,可集成第三方应用扩展功能。
基本部署(Docker命令)
拉取镜像并创建容器。/docker可替换为宿主机器上的任意路径。需修改MariaDB的MYSQL_ROOT_PASSWORD和MYSQL_PASSWORD值,也可调整Nextcloud的UID、GID及其他环境变量(见“环境变量”部分)。
bashdocker pull benyanke/nextcloud:10.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 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 \ benyanke/nextcloud:10.0
无需强制设置ADMIN_USER和ADMIN_PASSWORD,若不提供,可通过浏览器配置管理员账户。
部署完成后需使用反向代理通过互联网访问容器(详见下文“反向代理”部分)。通过环境变量配置后,无网页设置页面。
ARM架构设备
需使用Alpine-ARM镜像(如orax/alpine-armhf:edge)自行构建。
配置建议
在管理面板中,应将定时任务从AJAX cron切换为cron(系统定时任务)。
更新方法
拉取新版本镜像,按“基本部署”步骤重建容器。由于使用外部卷,数据不会丢失。若Nextcloud执行完整升级,应用可能被禁用,需重新启用(12.0.x及以上版本升级后应用会自动启用)。
Docker Compose配置
推荐使用docker-compose管理容器。创建docker-compose.yml文件(根据需求调整),执行docker-compose up -d nextcloud-db等待数据库启动(约15秒),再执行docker-compose up -d启动所有服务。后续只需执行docker-compose up -d即可。
Docker Compose示例文件
请勿直接复制粘贴,需根据实际需求调整!
yamlversion: '2' networks: default: driver: bridge services: nextcloud: image: benyanke/nextcloud 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 - APP_AUTO_UPDATE=1 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 pull && docker-compose up -d
Redis可用于分布式缓存和文件锁缓存,配合APCu(本地缓存)提升Nextcloud性能。PHP Redis扩展已预装,只需部署Redis服务器(可通过上述docker-compose配置),并在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服务器(上述docker-compose已提供示例)。安装Nextant应用后,在管理面板“附加设置”中,将“Solr Servlet地址”设为http://solr:8983/solr。
提供专用脚本,无需登录容器或设置权限,直接执行:docker exec -ti nextcloud occ 命令
推荐使用HTTPS访问Nextcloud(强烈建议:必须通过加密连接访问),可使用nginx、Haproxy、Caddy、h2o、Traefik等反向代理。容器已发送包含HSTS的响应头,无需重复添加。Let's Encrypt提供免费SSL/TLS证书。
推荐使用https://github.com/xataz/docker-reverse-nginx%EF%BC%8C%E5%9F%BA%E4%BA%8E%E6%9C%80%E6%96%B0nginx%E5%92%8COpenSSL%EF%BC%8C%E9%80%9A%E8%BF%87https://github.com/xenolf/lego%EF%BC%88Let's Encrypt客户端)实现SSL/TLS自动化,无需手动配置。
配置步骤
yamlnextcloud: ... labels: - reverse.frontend.domain=cloud.domain.tld - reverse.backend.port=8888 - reverse.frontend.ssl=true - reverse.frontend.ssltype=ec384 - reverse.frontend.hsts=false - reverse.frontend.headers=false
yamlreverse: image: xataz/reverse-nginx container_name: reverse ports: - "80:8080" - "443:8443" environment: - EMAIL=admin@domain.tld volumes: - /docker/reverse/ssl:/nginx/ssl - /var/run/docker.sock:/var/run/docker.sock depends_on: - nextcloud
完成后即可通过HTTPS访问Nextcloud。
以下是 benyanke/nextcloud 相关的常用 Docker 镜像,适用于 不同场景 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
不支持 push
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务