Nextcloud 部署教程:Docker 搭建私有云盘,数据隐私自己掌控

前言

厌倦了百度云的限速、阿里云的存储付费,又担心手机相册、工作文件存在第三方平台的隐私泄露风险?那 Nextcloud 绝对是你的理想选择。

它是一款开源免费、功能全能的私有云盘解决方案,既能部署在个人服务器、NAS(如群晖、威联通)上,也支持多端同步(Windows、Mac、手机、网页),文件存储、共享、备份一站式搞定。

和第三方网盘比,Nextcloud 的优势肉眼可见:

  • 数据完全私有:存在自己的设备上,不经过第三方服务器,隐私零风险
  • 无限速无广告:上传下载速度取决于自己的带宽,没有隐藏消费
  • 拓展性极强:支持插件扩展(如相册管理、办公协作、视频预览、密码管理器)
  • 多场景适配:家庭文件共享、个人数据备份、小型团队协作都能用

如果你想摆脱第三方网盘的束缚,用 Docker 快速搭建一套属于自己的私有云盘,跟着这篇教程做,新手也能轻松上手!

准备工作

在开始部署前,先确认你的设备满足以下条件:

  • 已安装 Docker 和 Docker Compose
  • 服务器 / NAS 有足够存储空间(建议至少 10GB,根据存储需求调整)
  • 开放目标端口(默认 28080,可自定义)

为了方便管理配置和数据,先创建独立的工作目录:

# 自定义路径,可修改为自己习惯的目录
mkdir -p ~/docker/nextcloud
# 进入目录
cd ~/docker/nextcloud

需要开放 Nextcloud 的访问端口(28080)和 Redis 缓存端口(6379):

# 开放28080端口(Nextcloud访问)
sudo ufw allow 28080/tcp comment 'nextcloud访问端口' && sudo ufw reload
# 开放6379端口(Redis缓存,可选,容器内部通信可省略)
sudo ufw allow 6379/tcp comment 'nextcloud Redis缓存' && sudo ufw reload

官方提供两种主流镜像,根据需求选择:

  • 基础镜像(nextcloud:latest):基于 Apache,仅包含核心功能,体积小、部署快,适合普通用户
  • 完整镜像(需自行构建):包含 ffmpeg、ImageMagick 等工具,支持视频预览、图片处理等高级功能,适合有多媒体存储需求的用户

完整镜像构建参考:Nextcloud 官方完整镜像示例,按文档执行docker build即可。

Docker Compose部署服务

~/docker/nextcloud目录下创建配置文件:

vim docker-compose.yml

以下配置使用 DaoCloud 镜像加速,避免国内拉取镜像缓慢,关键参数已标注说明:

services:
  # 数据库容器(MariaDB,兼容MySQL)
  db:
    image: docker.m.daocloud.io/mariadb:latest
    restart: always  # 自动重启
    # 数据库核心参数,确保Nextcloud兼容
    command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
    volumes:
      - ./db:/var/lib/mysql  # 数据持久化到本地,容器重启不丢失
    environment:
      - MYSQL_ROOT_PASSWORD=nextcloud_password_root  # 数据库root密码,需修改(禁止含$字符)
      - MYSQL_PASSWORD=nextcloud_password  # Nextcloud数据库用户密码,需修改(禁止含$字符)
      - MYSQL_DATABASE=nextcloud  # 数据库名,建议默认
      - MYSQL_USER=nextcloud  # 数据库用户,建议默认
    networks:
      - default

  # Redis缓存容器(提升Nextcloud访问速度)
  cache:
    image: docker.m.daocloud.io/redis
    restart: unless-stopped
    expose:
      - "6379"  # 容器内部暴露端口,无需映射到主机
    volumes:
      - ./cache:/data  # 缓存数据持久化
    command: redis-server --requirepass 'redis_password'  # Redis密码,需修改(禁止含$字符)
    networks:
      - default

  # Nextcloud应用容器
  app:
    image: docker.m.daocloud.io/nextcloud
    restart: always
    ports:
      - 28080:80  # 端口映射(主机:容器),28080可自定义
    links:
      - db  # 关联数据库容器
      - cache  # 关联Redis缓存容器
    volumes:
      - ./app:/var/www/html  # 应用配置和文件存储目录
    environment:
      - MYSQL_PASSWORD=nextcloud_password  # 与数据库的MYSQL_PASSWORD一致
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_HOST=db  # 数据库容器名称
    networks:
      - default

# 自定义网络,隔离容器环境
networks:
  default:
    name: nextcloud
  • 所有密码(MYSQL_ROOT_PASSWORDMYSQL_PASSWORDredis_password)需修改为复杂密码,禁止包含$字符,否则会导致配置失效。
  • 端口映射:若 28080 端口已被占用,可修改为其他端口(如28081:80)。
  • 存储目录:./db./app./cache分别对应数据库、应用文件、缓存数据,建议确保目录有足够权限(可执行chmod 775 ./*临时授权)。

保存配置文件后,执行以下命令启动容器:

# 后台启动服务
docker-compose up -d

启动成功后,检查容器状态(确保appdbcache均为Up状态):

image-20251030235357852

反向代理:用域名访问并启用 HTTPS

部署成功后,在浏览器中输入 NAS_IP:28080 即可进行访问。直接通过IP:端口访问不够安全,也不便于记忆,建议配置反向代理,绑定域名并启用 HTTPS。

image-20251110001826714

在域名托管商(如阿里云、腾讯云)将域名(如nextcloud.example.com)解析到服务器 IP。

可以通过宝塔面板/NPM等工具对域名反向代理,将域名反向代理到本地的28080端口,将本地服务暴露到域名上,这样就可以通过域名访问本地的nextcloud服务。

如果将 Nextcloud 部署在群晖 NAS 上,可通过 Web Station 快速配置反向代理:

部署 Nextcloud 时,勾选 “通过 Web Station 设置网页门户”:

image-20251110183352495

群晖会自动创建网页服务,绑定 28080 端口:

image-20251110183604846

接下来,在网页服务门户界面,选择新增网页门户,选择上一步创建的网页服务,门户类型选择基于名称主机名就填之前解析好域名nextcloud.example.com

image-20251110183727971

这一步的操作和NPM/nginx原理上是一样的,不过是群晖将其集成到可视化界面Web Station里了。

关键配置:解决 “不信任域名” 问题

配置反向代理后,直接访问域名可能会出现 “不被信任的域名” 提示,需修改 Nextcloud 的配置文件授权域名。

image-20251110122138897

配置文件路径为:~/docker/nextcloud/app/config/config.php(群晖 NAS 路径需对应 Docker 挂载目录)。

编辑文件,添加域名到trusted_domains数组,并补充 HTTPS 相关配置:

'trusted_domains' => 
array (
    0 => '192.168.1.100:28080',  # 服务器/NAS内网IP+端口
    1 => 'nextcloud.example.com',  # 你的域名
),
'datadirectory' => '/var/www/html/data',
'dbtype' => 'mysql',
'version' => '32.0.1.2',
'overwritehost' => 'nextcloud.example.com',  # 域名
'overwriteprotocol' => 'https',  # 强制HTTPS
'overwrite.cli.url' => 'https://nextcloud.example.com',  # 完整域名
'redis' => array(  # 启用Redis缓存(提升性能)
    'host' => 'cache',
    'port' => 6379,
    'password' => 'redis_password',  # 与docker-compose中的Redis密码一致
),

修改配置后,重启容器使配置生效。这样就可以通过nextcloud.example.com域名访问Nextcloud服务了。

进入初始化页面,第一次登录需要设置管理员账号和密码(建议强密码,保管好)。

image-20251110122720183

设置完成后初始化需要的时间较长,耐心等待后进入主界面,如下图所示,这样就完成安装了。

image-20251110122814759

公网访问:无公网 IPv4?IPv6 转 IPv4 方案(可选)

很多家庭宽带只有 IPv6,无法在 IPv4 网络(如公共场所 WiFi)访问内网 Nextcloud,推荐用腾讯云 EdgeOne 或 Cloudflare 实现 IPv6-IPv4 转发。

我这里选择使用腾讯云的EdgeOne的CDN服务进行IPV6-IPV4的转发,效果和cloudflare的cdn是类似的,我用腾讯云的EdgeOne服务单纯是为了国内访问快一点,cloudflare提供的免费cdn在国内有时还是挺卡的。这里可以参考我之前的一篇文章2025最新版:基于腾讯云EdgeOne 的 IPv6 内网穿透指南(无公网 IPv4 也能实现博客 + 图床公网访问) - 阿雷的小窝

这里需要使用到两个域名,第一个域名synology.example.com,用于DDNS-GO指向本地的IPV6地址。第二个域名nextcloud.example.com,为我们配置反向代理的域名。

  1. 配置 DDNS-GO:将动态 IPv6 地址绑定到域名(如synology.example.com),确保内网服务可通过固定域名访问。

ddns-go IPv6 配置界面

用两个域名的原因是腾讯云EdgeOne设置回源时,需要填IP地址或者域名,而群晖的IPV6地址是动态的,设置地址显然不行,只能曲线救国通过回源DDNS-GO设置的域名来实现,这样就实现了外网无ipv6也能访问本地的nextcloud服务。

  1. 配置腾讯云 EdgeOne
  • 源站类型选择 “域名”,填写 DDNS 绑定的域名(synology.example.com)。
  • 开启 “IPv6 回源” 和 HTTPS,实现 IPv6-IPv4 转换。

腾讯云 EO 源站配置界面

  1. 访问方式:通过 Nextcloud 域名(nextcloud.example.com)即可在任何网络访问,CDN 还能提升访问速度。

小结

Nextcloud 作为开源私有云盘的标杆,不仅解决了第三方网盘的隐私和限速问题,还能通过插件拓展功能。无论是家庭文件共享、个人数据备份,还是小型团队协作,都能完美适配。

通过 Docker 部署,简化了环境配置;配合反向代理和 CDN,实现了公网安全访问。按照本文步骤,你也能拥有一套数据完全可控、使用无限制的私有云盘服务!

参考

  1. Nextcloud - Open source content collaboration platform
  2. (10 封私信 / 80 条消息) 个人网盘来了!Nextcloud AIO保姆级部署攻略 - 知乎
  3. Docker系列 搭建个人云盘服务nextcloud - Bensz
  4. 基于腾讯云 EdgeOne 的 IPv6 内网穿透指南 - 阿雷的小窝
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇