尧图精选

Nextcloud AIO 手动安装指南:使用 docker-compose 直接运行官方容器栈

🕒 发布时间:2026/10/2 15:20:16 📁 来源:尧图网络
云原生运维后端容器编排【免费下载链接】all-in-one The official Nextcloud installation method. Provides easy deployment and maintenance with most features included in this one Nextcloud instance.项目地址https://gitcode.com/GitHub_Trending/al/all-in-one点击查看免费下载本文面向希望脱离 Nextcloud AIO Mastercontainer 管理界面、直接用docker compose掌控全部容器配置的运维人员讲解基于仓库 manual-install 目录的完整安装、配置、按需启用可选服务、更新与备份实践。读完本文你将掌握手动安装模式的利弊边界、sample.conf全部环境变量的含义与取值、Docker profiles 的用法以及官方推荐的安全更新流程。手动安装是什么Nextcloud All-in-OneAIO的默认安装方式是由一个 Mastercontainer 负责编排、监控和更新所有子容器用户通过 Web 界面完成安装与维护。而仓库 manual-install/readme.md 提供了另一种官方支持的部署路径把 AIO 面向各功能构建的容器镜像直接用 docker-compose 跑起来无需任何容器持有 Docker socket 访问权也不依赖 Mastercontainer。这种方式下你需要自己维护两个文件manual-install/sample.conf环境变量定义文件安装时需复制为.envmanual-install/latest.yml完整的 Compose 服务定义安装时需复制为compose.yaml。这两个文件不是手写的而是由 manual-install/update-yaml.sh 从 AIO 界面程序使用的容器定义源 php/containers.json 自动生成脚本会删除container_name、internal_port、backup_volumes、nextcloud_exec_commands等仅 Mastercontainer 需要的字段并为镜像补上:latest标签。也就是说手动安装用的镜像与默认 AIO 安装完全同源只是编排方式从Mastercontainer 自动编排变成了你自己执行 docker compose。优点与代价先看清楚再决定优点无需 Docker socket 访问默认 AIO 安装中 Mastercontainer 需要挂载 Docker socket 才能创建、更新其他容器手动安装模式下没有任何容器需要访问 Docker socket安全边界更清晰。所有值都可自行修改环境变量、端口、卷、挂载点全部由你掌控不必受 Mastercontainer 内部逻辑约束。支持 Docker SwarmCompose 文件可以被 Swarm 编排这是默认安装方式做不到的。可在无法访问 ghcr.io 的环境运行当你的环境无法直接拉取 GitHub Container Registry 镜像时可以通过手动方式结合镜像代理等方案完成部署。代价失去的能力清单选择手动安装意味着放弃以下由 Mastercontainer 提供的自动化能力需要逐条评估后再做决定失去 AIO 界面不再有:8080/:8443的图形化管理面板失去更新通知与自动更新容器是否过期、是否有新版本都需要自己跟踪失去全部备份与恢复功能默认安装内置的 BorgBackup 每日备份、从备份归档恢复实例等能力均不可用仓库 php/src/Cron 下的CreateBackup.php、CheckBackup.php等备份链路都依赖 Mastercontainer 调度失去内置的 Docker Socket Proxy 与 HaRP 容器这两个容器分别位于 Containers/docker-socket-proxy 与 Containers/harp是 Nextcloud App API 正常工作所必需的组件失去所有社区容器community containers社区容器见 community-containers 目录如 vaultwarden、pi-hole、jellyfin 等依赖 AIO 界面的附加容器机制加载手动模式无法使用需要你清楚自己在做什么尤其是修改compose.yaml时任何错误都可能影响整个栈更新必须严格遵循下文规定的更新流程不能随手docker compose pull了事其他未列出的隐性代价。安装前置准备安装 Docker 与 docker-compose v2Compose 插件准备一个域名对应NC_DOMAIN并确保其 DNS 可解析到本机AIO 默认通过 Apache 容器内置的 Caddy 自动申请 Lets Encrypt 证书需要公网可达若需要 IPv6 支持先参照 docker-ipv6-support.md 完成 Docker 侧配置详见下文更新与 IPv6小节。一步步完成安装第 1 步克隆仓库并进入 manual-install 目录git clone https://github.com/nextcloud/all-in-one.git cd all-in-one/manual-install第 2 步从 sample.conf 生成 .env 并填写cp sample.conf .env nano .env编辑原则所有标注# TODO!的值都必须修改。sample.conf的结构分三块必须修改的密码与基础信息带# TODO!注释可选服务启用开关*_ENABLEDno按需改为yes注意必须带引号可选的调优参数带默认值与注释按需调整。⚠️密码字符警告原文档强调不要在密码中使用和:两个符号。它们被用来拼接数据库连接字符串使用这两个符号会导致连接串解析错误引发难以排查的问题。例如DATABASE_PASSWORD最终会以POSTGRES_PASSWORD${DATABASE_PASSWORD}的形式传入数据库容器见 manual-install/latest.yml 中nextcloud-aio-database服务的定义。⚠️ 另一个重要提醒latest.yml中未以变量形式暴露的值官方不保证支持修改。也就是说只有sample.conf里出现的变量才属于官方支持的定制面直接改动 yaml 中硬编码的环境变量、镜像标签或卷名属于自担风险的操作。第 3 步生成 compose.yamlcp latest.yml compose.yaml第 4 步启动sudo docker compose up首次启动会自动完成 Nextcloud 初始化latest.yml中nextcloud-aio-nextcloud服务通过ADMIN_USERadmin与ADMIN_PASSWORD${NEXTCLOUD_PASSWORD}创建初始管理员随后即可通过https://你的域名访问。sample.conf 环境变量全解析以下按sample.conf的实际结构分组说明默认值与取值范围均以仓库文件为准。必须填写# TODO!变量用途说明NC_DOMAINNextcloud 使用的域名默认yourdomain.com必须改成你自己的域名NEXTCLOUD_PASSWORD初始管理员密码管理员用户名为固定的adminDATABASE_PASSWORDPostgreSQL 密码唯一且强随机REDIS_PASSWORDRedis 访问密码唯一且强随机TALK_INTERNAL_SECRETTalk 内部通信密钥唯一且强随机SIGNALING_SECRETTalk 信令服务器密钥唯一且强随机TURN_SECRETTURN 服务器共享密钥唯一且强随机RECORDING_SECRETTalk 录制服务器密钥唯一且强随机ONLYOFFICE_SECRETOnlyOffice JWT 密钥对应latest.yml中nextcloud-aio-onlyoffice的JWT_SECRETEUROOFFICE_SECRETEuroOffice JWT 密钥对应nextcloud-aio-eurooffice的JWT_SECRETHP_SHARED_KEYHaRP 共享密钥仅启用 HaRP 时需要IMAGINARY_SECRETImaginary 预览服务密钥仅启用 Imaginary 时需要FULLTEXTSEARCH_PASSWORD全文搜索 Elasticsearch 密码仅启用 Fulltextsearch 时需要WHITEBOARD_SECRET白板服务 JWT 密钥仅启用 Whiteboard 时需要TIMEZONE容器时区默认Europe/Berlin通过TZ${TIMEZONE}与PGTZ${TIMEZONE}注入各容器latest.yml中几乎每个服务都引用可选服务启用开关以下变量统一为no默认值改为yes必须带引号后会同时完成两件事启用对应的 Compose profile 服务并在 Nextcloud 侧自动开启该功能CLAMAV_ENABLED启用 ClamAV 病毒扫描latest.yml中nextcloud-aio-clamav服务同时挂载nextcloud_aio_clamav卷保存病毒库COLLABORA_ENABLED启用 Collabora OnlineNextcloud OfficeEUROOFFICE_ENABLED启用 EuroOfficeFULLTEXTSEARCH_ENABLED启用全文搜索HARP_ENABLED启用 HaRPApp API 所需同时需要 Docker socketIMAGINARY_ENABLED启用 Imaginary为 heic、heif、pdf、svg、tiff、webp 等格式生成预览ONLYOFFICE_ENABLED启用 OnlyOfficeTALK_ENABLED启用 Talk高性能后端与 TURNTALK_RECORDING_ENABLED启用 Talk 录制WHITEBOARD_ENABLED启用白板。以CLAMAV_ENABLED为例它在latest.yml中同时出现在nextcloud-aio-clamav服务的profiles关联之外还以环境变量形式传给nextcloud-aio-nextcloudNextcloud 容器据此自动开启 Antivirus 应用配置——这就是注释enables the option in Nextcloud automatically的底层含义。可调优参数变量默认值说明AIO_LOG_LEVELwarn全局日志级别合法值debug、info、warn、errorAPACHE_IP_BINDING0.0.0.0Apache 对外绑定地址放在反向代理后面时建议改为127.0.0.1见 reverse-proxy.mdAPACHE_MAX_SIZE1073741824Apache 允许的最大请求体字节数必须是整数且与NEXTCLOUD_UPLOAD_LIMIT保持同步1GB 1073741824 字节APACHE_PORT443Apache 对外端口改为非 443 端口即可配合 Nginx、Caddy、Cloudflare Tunnel 等反向代理使用ADDITIONAL_COLLABORA_OPTIONS[--o:security.seccomptrue]以数组语法追加 Collabora 启动参数latest.yml中通过command: ${ADDITIONAL_COLLABORA_OPTIONS}注入容器命令COLLABORA_DICTIONARIESde_DE en_GB en_US es_ES fr_FR it nl pt_BR pt_PT ruCollabora 拼写检查字典语言列表COLLABORA_LOG_LEVELwarningCollabora 日志级别合法值none、fatal、critical、error、warning、notice、information、debug、traceFULLTEXTSEARCH_JAVA_OPTIONS-Xms512M -Xmx512M全文搜索 Elasticsearch 的 JVM 堆参数对应latest.yml中ES_JAVA_OPTSINSTALL_LATEST_MAJORno设为yes时首次安装直接安装最新大版本 NextcloudNEXTCLOUD_ADDITIONAL_APKSimagemagick永久向 Nextcloud 容器追加 Alpine 系统包无需自己构建镜像覆盖默认值即替换默认包NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONSimagick永久追加 PHP 扩展对应latest.yml的ADDITIONAL_PHP_EXTENSIONSNEXTCLOUD_DATADIRnextcloud_aio_nextcloud_dataNextcloud 数据目录可改为宿主机路径如/mnt/ncdata。必须在首次启动前设置之后绝不能再改它在latest.yml中以${NEXTCLOUD_DATADIR}:/mnt/ncdata:rw形式挂载NEXTCLOUD_MAX_TIME3600Nextcloud 上传超时秒数同时以APACHE_MAX_TIME传给 Apache 容器NEXTCLOUD_MEMORY_LIMIT512MPHP 内存限制对应PHP_MEMORY_LIMITNEXTCLOUD_MOUNT/mnt/允许 Nextcloud 容器访问宿主机目录用于本地外部存储功能绝不能等于NEXTCLOUD_DATADIR的值以${NEXTCLOUD_MOUNT}:${NEXTCLOUD_MOUNT}:rw形式挂载NEXTCLOUD_STARTUP_APPSdeck twofactor_totp tasks calendar contacts notes首次启动时预装的 Nextcloud 应用列表可用连字符前缀禁用应用如-app_apiNEXTCLOUD_TRUSTED_CACERTS_DIR/usr/local/share/ca-certificates/my-custom-ca该目录下的 CA 证书会被 Nextcloud 容器信任以只读方式挂载到/usr/local/share/ca-certificatesTalk 容器也复用该目录NEXTCLOUD_UPLOAD_LIMIT1GNextcloud 上传大小限制同时传给 ClamAV 作为MAX_SIZEREMOVE_DISABLED_APPSyes设为no时在 Nextcloud 中被禁用开关关闭的应用只停用而不卸载TALK_PORT3478Talk 的 TURN 端口TCP/UDP 同时暴露必须大于 1024否则可能无法正常工作UPDATE_NEXTCLOUD_APPSno设为yes时每次容器启动后的周六自动更新所有已安装 Nextcloud 应用WATCHTOWER_DOCKER_SOCKET_PATH/var/run/docker.sockDocker socket 路径供 HaRP 容器挂载rootless 环境下需改为$XDG_RUNTIME_DIR/docker.sock对应的路径详见 docker-rootless.mdDocker profiles按需启用可选服务latest.yml的默认 profile 只提供最小必要服务nextcloud、databasePostgreSQL、redis与apache。这也是manual-install/readme.md明确说明的minimum necessary services。其余服务都挂在不同 profile 下见latest.yml中各服务段的profiles字段Profile对应服务说明collaboranextcloud-aio-collabora在线办公Nextcloud Officetalknextcloud-aio-talkTalk 高性能信令后端与 TURN注意talk-recordingprofile 会同时拉起该服务其profiles同时包含talk与talk-recordingtalk-recordingnextcloud-aio-talk-recordingTalk 通话录制clamavnextcloud-aio-clamav病毒扫描imaginarynextcloud-aio-imaginary图片预览fulltextsearchnextcloud-aio-fulltextsearchElasticsearch 全文搜索whiteboardnextcloud-aio-whiteboard协作白板onlyofficenextcloud-aio-onlyofficeOnlyOfficeeuroofficenextcloud-aio-euroofficeEuroOfficeharpnextcloud-aio-harpApp API 代理用法示例——启用 Collaborasudo docker compose --profile collabora up一次拉起完整的 all-in-one 全家桶原文档给出的完整命令sudo docker compose --profile collabora --profile talk --profile talk-recording --profile clamav --profile imaginary --profile fulltextsearch --profile whiteboard up实践中应与sample.conf中对应的*_ENABLEDyes配合profile 决定容器是否启动*_ENABLED决定 Nextcloud 是否在应用层启用该功能。例如启用 Collabora 需要同时满足COLLABORA_ENABLEDyes与--profile collabora两者。更新流程必须严格遵循原文档明确强调AIO 容器可能在未来发生变化每次升级都必须严格按以下步骤执行跳过任何一步都可能造成配置漂移或数据损坏。若你之前的配置文件不叫.env例如叫my.conf先重命名mv -vn my.conf .env停止所有正在运行的容器sudo docker compose down备份所有重要文件与目录数据库卷、Nextcloud 数据卷、.env、自定义后的compose.yaml若 Compose 文件仍叫docker-compose.yml重命名为compose.yamlmv -vn docker-compose.yml compose.yaml拉取仓库更新并将你的compose.yaml与新版对齐git pull diff compose.yaml latest.yml⚠️IPv6 注意自 AIO v5.1.0 起新版latest.yml默认启用 IPv6 网络。升级前请二选一要么先按 docker-ipv6-support.md 的第 1、2 步在 Docker 侧启用 IPv6再继续后续步骤要么编辑compose.yaml从网络定义中移除 IPv6 配置以保持现状。同样检查sample.conf是否有新增或重命名的变量用diff对比后把变更同步进你的.env拉取新镜像sudo docker compose pull最后用新配置启动并完成容器更新sudo docker compose up备份与恢复 FAQ问手动安装模式下如何备份若.env中NEXTCLOUD_DATADIR保持默认值nextcloud_aio_nextcloud_data且未改动compose.yaml则所有数据都存放在 Docker 卷中。Linux 默认路径为/var/lib/docker/volumes直接备份该目录即可视为一份有效备份出问题时也能据此恢复。若把NEXTCLOUD_DATADIR改成了类似/mnt/ncdata的宿主机路径那么 Nextcloud 数据会存放在该目录这个位置也必须纳入备份。对compose.yaml的任何修改同理——凡是偏离默认配置的部分自定义卷、额外挂载、改动的环境变量都要找到对应的宿主机位置单独备份。此外.env与修改过的compose.yaml两个文件本身也必须在备份清单中没有它们卷里的数据无法被正确挂载与启动。由于手动模式失去了内置 BorgBackup 备份建议自行借助宿主机 cron 对上述位置做定时快照或异地同步。恢复时只需在新环境上还原.env、compose.yaml与各卷/目录数据再执行sudo docker compose up即可。底层机制update-yaml.sh 如何生成这些文件理解文件来源有助于判断什么能改、什么不能改。仓库 php/containers.json 是 AIO 界面编排的真实容器定义源aio_services_v1键下定义了从nextcloud-aio-apache到nextcloud-aio-whiteboard的全部内置服务PHP 侧由 php/src/ContainerDefinitionFetcher.php 读取并转成容器对象供 Mastercontainer 使用。而 manual-install/update-yaml.sh 则从同一份containers.json反向生成面向 docker compose 的产物关键转换逻辑包括将aio_services_v1重命名为services键把destination、writeable、port_number、protocol等 JSON 字段拼装成 compose 的卷挂载、端口映射语法剔除仅 Mastercontainer 需要的字段internal_port、secrets、backup_volumes、nextcloud_exec_commands、networks、documentation等移除依赖 Docker socket 的服务nextcloud-aio-watchtower、nextcloud-aio-domaincheck、nextcloud-aio-borgbackup、nextcloud-aio-docker-socket-proxy——这正是前文失去 Docker Socket Proxy 与备份功能的机制原因把 JSON 中形如%VARIABLE%的占位符统一改写为${VARIABLE}同时从占位符反向提取变量名生成sample.conf并补上默认值与注释最后为每个服务镜像追加:latest标签生成 manual-install/latest.yml。这意味着只要升级到包含新update-yaml.sh的仓库版本git pull后重新生成的latest.yml/sample.conf就会自动带上新增服务与变量——这也是更新流程第 5、6 步要求用diff对齐文件的原因。补充实践建议反向代理场景若 Apache 前还有 Nginx、Caddy 或 Cloudflare Tunnel参考 reverse-proxy.md并将APACHE_IP_BINDING收紧为127.0.0.1、APACHE_PORT改为非 443 端口Docker rootless 场景手动安装同样适用需将 socket 相关路径改为$XDG_RUNTIME_DIR/docker.sock详见 docker-rootless.mdIPv6 场景按 docker-ipv6-support.md 在daemon.json添加default-network-opts: {bridge:{com.docker.network.enable_ipv6:true}}并重启 Docker再确认内部nextcloud-aio网络的EnableIPv6为true多实例手动安装天然支持在同一台主机上通过不同.env/compose.yaml目录部署多套实例参照 multiple-instances.md 的端口隔离思路即可。总结手动安装是 Nextcloud AIO 官方提供的一条去中心化部署路径它以同一套官方镜像为基础把编排权完全交还给使用者适合对容器配置有强定制需求、需要 Swarm 编排、或无法信任 Docker socket 挂载的环境。它的核心代价是失去 AIO 界面、自动更新、内置备份与社区容器生态。选择这条路线的运维者务必把sample.conf的每个# TODO!变量填对、把latest.yml中未暴露为变量的值视为不可改、并在每次升级时严格执行本文的八步更新流程。赞分享云原生运维后端容器编排【免费下载链接】all-in-one The official Nextcloud installation method. Provides easy deployment and maintenance with most features included in this one Nextcloud instance.项目地址https://gitcode.com/GitHub_Trending/al/all-in-one点击查看免费下载相关推荐Nextcloud AIO手动安装无Docker Socket安全模式Nextcloud AIO手动安装无Docker Socket安全模式 痛点标准安装的安全隐患 你是否担心标准Nextcloud AIO安装中Masterc云原生运维后端容器编排Docker官方文档解读使用Docker Compose容器化C应用指南Docker官方文档解读使用Docker Compose容器化C应用指南 前言 在现代软件开发中容器化技术已成为构建、分发和运行应用程序的标准方式。本文文档教程大麦抢票自动化完整指南双端配置与排障手册大麦抢票自动化完整指南双端配置与排障手册 大麦抢票自动化是基于 Selenium 和 Appium 的开源抢票项目网页端驱动 Chrome移动端驱动安卓GUI 自动化RPA上一篇jsdiff错误恢复机制partialApplyPatch实现断点续传式补丁应用下一篇RAWGraphs终极指南掌握自定义颜色比例尺与高级数据映射技巧创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联 返回资讯列表 →