
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版本后升级会自动启用应用)。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务