使用 Docker 版 Nextcloud 搭建个人、家庭或企业的私有云盘

使

Nextcloud 简介

Nextcloud 是一套用于创建网络硬盘的客户端 – 服务端软件,其功能与 Dropbox 、Microsoft OneDrive、百度云等网盘相近。与那些专有服务相比,Nextcloud 是自由及开放源代码软件,适用于所有人。无论使用者是个人、家庭还是 Nextcloud Enterprise Subscription 支持的大型企业和服务提供商。Nextcloud 都可以在其控制的服务器上提供安全、可靠且合规的文件同步和共享解决方案。

主要特点

  • 没有任何广告
  • 适合存储个人文件
  • 解决网盘协作问题
  • 支持用户管理、权限访问、邮件认证系统
  • 所有数据由你自己掌控,解决敏感数据存放问题
  • 数据保存在内部,支持端到端的方式加密,安全性极高
  • 支持安装插件来拓展功能,用户可以根据需求自行配置
  • 可以进行在线文档的协同编辑,流程图、思维导图的绘制
  • 开放源代码,来自全球的众多开发者在为其贡献改进、修复安全漏洞和程序BUG
  • 支持市面上所有的主流系统,无论你是在 Windows、Linux、MacOS、iOS 还是 Android 上使用它

笔者的看法

老猪我第一次用网盘还是在 115 网盘兴盛的时候,那会儿主要用来存储论坛的各种大型附件,后来自己的服务器配置大了,需求就不在了。

个人使用则是从 Dropbox 开始的,随着被墙逐渐弃用。国内的网盘中,百度云不限速的时候用了很长时间,限速和收费之后也渐渐不用了。相册先放 Google Photos,后来放在 iCloud Photos,其它文件都本地电脑保存,电脑有配置 raid 阵列不用担心硬盘损坏。

2017 年底购置了专业网络存储设备 – 群晖 DS918 +,起初使用群晖系统自带的应用来管理相册和其他数据,后来相册替换成了更牛逼的应用 PhotoPrism。在写这篇文章的时候,网盘的更优方案也找到了,正是文中提到的 Nextcloud。

Nextcloud 有两个热门 docker 版本,一个由 linuxserver.io 维护,一个由官方维护。linuxserver.io 维护的版本安装简单,没有官方那么多配置参数,但正因为如此,一些有用的东西被阉了,反正我是没看到安装好,系统能够补充配置的地方,比如 redis 缓存。

官方版本安装稍显复杂,此外也遇到一些小坑。(你们不用担心,我这篇文章就是替你们开路,帮你们简化过程,降低难度到个位数的)但终究全部被我解决了,这个波折的过程非但没有影响我的看法,反而让我更喜欢 Nextcloud 了。(那些坑浪费了我不少时间,既然修好了,有感情了,含着泪也得用下去,再说也的确好用!)

建设性意见

  1. 部署在数据中心、拥有公网 IP 地址的家用网络中,或是使用内网穿透,以便随时随地访问
  2. 部署在 7 x 24 运行的 Linux 服务器、NAS 网络存储或其它小型化设备上
  3. 部署在创建有 RAID 阵列的设备上可以避免硬盘损坏引发的数据损毁

准备工作

  1. 安装 Docker
  2. 安装 Docker 可视化容器管理工具 – Portainer
  3. 安装 Docker 版本的 MariaDB 数据库和可视化数据库管理工具 phpMyAdmin

Nextcloud 部署

  1. 创建用于持久化存储 Nextcloud 数据的目录(命名规则参考)

    mkdir -p '自定义数据目录'/html                        # Nextcloud 网站目录
    mkdir -p '自定义数据目录'/etc/redis/conf              # Redis 配置目录
    mkdir -p '自定义数据目录'/etc/redis/data              # Redis 数据目录
  2. 通过 Portainer 管理面板创建一个 Nextcloud 和 MariaDB 专用的网络。

    点击 Portainer 左侧 Networks,点击右侧 Add network,在 name 处输入 nextcloud-net,然后直接点击页面底部的 Create the network 完成创建。

  3. 将之前安装的 MariaDB 加入刚才新建的 nextcloud-net 网络中

    点击 Portainer 左侧 Stacks,点击右侧列表中的 mariadb-phpmyadmin,切换到 Editor 选项卡,加入红框内的内容,然后点击页面下方的 Update the stack 完成修改

    file

    我的数据库之前已经加入过一个应用网络,现在该如何修改?

    file

  4. 登录之前创建的 phpMyAdmin 管理页面,为 Nextcloud 创建专用数据库和账户。

    点击管理页面 – 账户 – 新增用户账户

    img

    用户名填写 nextcloud,密码填写 insecure,勾选 创建与用户同名的数据库并授予所有权限,然后点击底部的执行。(账户和密码可自行修改)

    file

  5. 点击 portainer 控制面板左侧 Stacks ,在该页面中点击 Add stack

    img

  6. Stack 命名,根据需要修改下文中提供的模板并粘贴到页面上,然后点击页面底部 Deploy the stack 完成创建

    version: '3.5'
    
    services:
     nextcloud:
       container_name: nextcloud               # 这个镜像老猪是我自制的,用于弥补官方固件一些瑕疵,比如默认不支持SSL
       image: chihpengkao/nextcloud:latest               # latest 安装最新的版本
       restart: always                                   # 设置重启策略
       ports:
         - 9080:80                                       # HTTP 网页访问端口,例如要改为通过 6001 端口访问,就修改成 6001:80
         - 9081:443                                      # HTTPS 网页访问端口,例如要改为通过 6002 端口访问,就修改成 6002:443
       volumes:
         - "'自定义数据目录'/html:/var/www/html"           # Nextcloud 网站目录
       environment:
         TZ: Asia/Shanghai                               # 容器内部时区
         MYSQL_DATABASE: "nextcloud"
         MYSQL_USER: "nextcloud"                         # 刚才 phpMyadmin 填写的账户
         MYSQL_PASSWORD: "insecure"                      # 刚才 phpMyadmin 填写的密码
         MYSQL_HOST: "mariadb:3306"
         NEXTCLOUD_ADMIN_USER: "admin"                   # 自定义管理员账户
         NEXTCLOUD_ADMIN_PASSWORD: "[email protected]~"         # 自定义管理员密码
         NEXTCLOUD_TRUSTED_DOMAINS: "xxxx.com"           # 访问时使用的域名,用 IP 访问可不设置。
         REDIS_HOST: redis
         REDIS_HOST_PORT: 6379
         PHP_MEMORY_LIMIT: "512M"
         PHP_UPLOAD_LIMIT: "512M"
         APACHE_DISABLE_REWRITE_IP: 1
       networks:
         nextcloud-net:
     redis:
       image: redis:latest                               # latest 安装最新的版本
       restart: always                                   # 设置重启策略
       volumes:
         - "'自定义数据目录'/etc/redis/conf:/usr/local/etc/redis" # Redis 配置目录
         - "'自定义数据目录'/etc/redis/data:/data"                # Redis 数据目录
       networks:
         nextcloud-net:
    networks:
     nextcloud-net:
       external: true

登录

创建成功后,你可以通过打开 Web 浏览器并转到以下位置登录到您的 Nextcloud 实例:

http://localhost:9080 # 账号 [NEXTCLOUD_ADMIN_USER 设置的值] 密码 [NEXTCLOUD_ADMIN_PASSWORD 设置的值]

或者

https://localhost:9081
  • 如果您不是在本机安装,请不要忘记将 localhost 替换为安装设备的实际 IP 地址
  • 如果您修改了默认的 HTTP HTTPS 访问端口,请不要忘记将 9080 9081 替换为您自定义的端口

file

延伸阅读

使用 HTTPS 加密你的站点,保护交换数据的隐私与完整性

Nextcloud 安装使用中遇到的问题与解决方案

关于 NAS 网络存储设备选购的一点个人建议

5 1 投票
文章评分
订阅评论
提醒
3 评论
最旧
最新 最多投票
内联反馈
查看所有评论
Zhewei liang

你好,龙猪,有计划弄一下arm64的版本吗

zuoxm

老大,我挂载了群晖的文件夹,但发现个问题,如果群晖新增了文件或文件夹,nextcloud这边不会显示,如果是修改的会自动更新。在网上搜索说是建个cron定时,但你这个镜像好像装不了(或者是我安装姿势不对?)请问有什么办法让nextcloud自动更新群晖本地的文件呀,谢谢。

By 马丁龙猪

标签

归档

其他操作