文章目录
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 了。(那些坑浪费了我不少时间,既然修好了,有感情了,含着泪也得用下去,再说也的确好用!)
建设性意见
- 部署在数据中心、拥有公网 IP 地址的家用网络中,或是使用内网穿透,以便随时随地访问
- 部署在 7 x 24 运行的 Linux 服务器、NAS 网络存储或其它小型化设备上
- 部署在创建有 RAID 阵列的设备上可以避免硬盘损坏引发的数据损毁
准备工作
Nextcloud 部署
-
创建用于持久化存储 Nextcloud 数据的目录(命名规则参考)
mkdir -p '自定义数据目录'/html # Nextcloud 网站目录 mkdir -p '自定义数据目录'/etc/redis/conf # Redis 配置目录 mkdir -p '自定义数据目录'/etc/redis/data # Redis 数据目录
-
通过 Portainer 管理面板创建一个 Nextcloud 和 MariaDB 专用的网络。
点击 Portainer 左侧
Networks
,点击右侧Add network
,在name
处输入nextcloud-net
,然后直接点击页面底部的Create the network
完成创建。 -
将之前安装的 MariaDB 加入刚才新建的
nextcloud-net
网络中点击 Portainer 左侧
Stacks
,点击右侧列表中的mariadb-phpmyadmin
,切换到Editor
选项卡,加入红框内的内容,然后点击页面下方的Update the stack
完成修改我的数据库之前已经加入过一个应用网络,现在该如何修改?
-
登录之前创建的 phpMyAdmin 管理页面,为 Nextcloud 创建专用数据库和账户。
点击管理页面 – 账户 – 新增用户账户
用户名填写
nextcloud
,密码填写insecure
,勾选创建与用户同名的数据库并授予所有权限
,然后点击底部的执行。(账户和密码可自行修改) -
点击 portainer 控制面板左侧
Stacks
,在该页面中点击Add stack
-
为
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: "2A9SbMpVa@~" # 自定义管理员密码 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
替换为您自定义的端口
你好,龙猪,有计划弄一下arm64的版本吗
arm64 版本镜像已发布。
老大,我挂载了群晖的文件夹,但发现个问题,如果群晖新增了文件或文件夹,nextcloud这边不会显示,如果是修改的会自动更新。在网上搜索说是建个cron定时,但你这个镜像好像装不了(或者是我安装姿势不对?)请问有什么办法让nextcloud自动更新群晖本地的文件呀,谢谢。