Docker 玩法

飞牛NAS部署Nextcloud:私有云盘搭建

在数据隐私日益受到重视的今天,将个人文件托管在第三方网盘(如百度网盘、阿里云盘)虽然方便,但难免存在数据审查、限速或隐私泄露的担忧。飞牛NAS作为一款优秀的国产NAS系统,为我们提供了强大的Docker容器支持。通过Docker部署Nextcloud,我们可以轻松打造一个功能完备、完全自控的私有云盘,实现数据的绝对掌控。

本文将以飞牛NAS(fnOS)的Docker管理界面为主,结合SSH命令行操作,手把手带你完成Nextcloud的部署与优化。

前期准备与目录规划

在开始之前,请确保你的飞牛NAS已经开启了SSH服务(控制面板 -> 终端与SNMP -> 启用SSH),并且你已经通过文件管理器创建好了数据存储目录。

我建议采用以下目录结构,便于后期备份和维护:

/vol1/docker/nextcloud/
├── html          # Nextcloud程序文件
├── data          # 用户数据存储(重要!)
└── db            # 数据库文件

在飞牛NAS的文件管理器中,进入Docker目录,手动创建nextcloud文件夹,并在其下创建htmldatadb三个子文件夹。你也可以通过SSH执行mkdir -p命令快速创建。

第一步:部署MariaDB数据库

Nextcloud官方推荐使用MariaDB或MySQL作为数据库,比默认的SQLite更适合多用户和高并发场景。我们首先在Docker中创建数据库容器。

打开飞牛NAS的Docker应用,点击“镜像” -> “下载镜像”,搜索并下载mariadb:10.11(版本号请选择官方支持的最新稳定版)。下载完成后,点击“创建容器”,进行如下配置:

基础设置:容器名称设为nextcloud-db,启用“资源限制”可根据你的内存情况分配(建议至少1GB)。

端口映射:本地端口无需映射,仅容器内部使用3306端口即可,保持默认。

存储映射:将你之前创建的/vol1/docker/nextcloud/db目录挂载到容器内的/var/lib/mysql路径。

环境变量:这是最关键的一步,添加以下变量:

MYSQL_ROOT_PASSWORD: 设置一个强密码,例如:MyRootPassw0rd!
MYSQL_DATABASE: nextcloud
MYSQL_USER: nextcloud
MYSQL_PASSWORD: 为Nextcloud单独设置一个密码,例如:NcUserPassw0rd

点击“创建”并启动容器。你可以通过Docker的日志功能查看是否启动成功,没有报错即可。

第二步:部署Nextcloud主应用

接下来,下载Nextcloud官方镜像。在“镜像”中搜索nextcloud,选择带有stable标签的版本(例如nextcloud:stable)。同样点击“创建容器”进行配置:

基础设置:容器名称设为nextcloud-app

端口映射:将本地端口8080映射到容器内的80端口。这样你可以通过http://你的NAS_IP:8080访问Nextcloud。

存储映射:需要映射两个目录: 1. 将/vol1/docker/nextcloud/html挂载到容器内的/var/www/html(程序代码) 2. 将/vol1/docker/nextcloud/data挂载到容器内的/var/www/html/data(用户文件)

环境变量:添加以下变量以连接数据库:

MYSQL_HOST: nextcloud-db   # 数据库容器名称
MYSQL_DATABASE: nextcloud
MYSQL_USER: nextcloud
MYSQL_PASSWORD: 与上面设置的NcUserPassw0rd一致

依赖关系:在“高级设置”或“网络”中,确保nextcloud-appnextcloud-db在同一个Docker网络中。飞牛NAS默认会创建bridge网络,两个容器都加入即可通过容器名互相访问。

创建并启动容器后,稍等片刻,浏览器访问http://你的NAS_IP:8080,你应该能看到Nextcloud的初始安装界面。

第三步:通过Web界面完成安装

在浏览器中打开Nextcloud安装页面,设置管理员账号和密码。点击“存储与数据库”下拉菜单,选择MySQL/MariaDB,填写以下信息:

  • 数据库用户:nextcloud
  • 数据库密码:你设置的NcUserPassw0rd
  • 数据库名:nextcloud
  • 数据库主机:nextcloud-db(注意不是IP,是容器名)

点击“安装完成”按钮。系统会进行自动安装,过程可能需要几分钟。安装完成后,你会进入Nextcloud的主界面,此时一个基础的私有云盘已经搭建成功。

第四步:优化与安全设置

配置可信域名

如果你打算通过域名或公网IP访问,需要修改html/config/config.php文件。通过SSH进入容器或直接编辑挂载目录下的文件:

# 进入容器编辑(推荐)
docker exec -it nextcloud-app bash
vi /var/www/html/config/config.php

'trusted_domains'数组中添加你的访问地址:

'trusted_domains' => 
array (
  0 => '192.168.1.100',
  1 => 'yourdomain.com',
),

开启后台任务

Nextcloud默认使用AJAX执行定时任务,建议改为Cron。在Nextcloud界面中,点击右上角头像 -> 管理设置 -> 基本设置,找到“后台任务”选项,选择Cron。然后通过SSH在宿主机上添加定时任务:

crontab -e
# 添加以下行
*/5  *  *  *  *  docker exec -u www-data nextcloud-app php cron.php

配置Redis缓存

为了提升性能,建议安装Redis容器。下载redis:alpine镜像,创建容器时不需要端口映射(仅内部使用),然后修改Nextcloud的config.php,添加以下配置:

'memcache.local' => '\OC\Memcache\Redis',
'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => array (
  'host' => 'redis-container-name',
  'port' => 6379,
),

重启Nextcloud容器后生效。

总结

至此,你已经成功在飞牛NAS上通过Docker部署了一套属于自己的Nextcloud私有云盘。整个过程不仅避开了繁琐的LAMP环境搭建,还利用了Docker的隔离性和可移植性,让后期升级和数据迁移变得异常简单。

私有云盘的价值在于数据主权。通过飞牛NAS的高性价比硬件与Docker的灵活性,你获得的不仅是一个文件存储工具,更是一个可以无限扩展的平台——Nextcloud还支持插件市场,你可以安装日历、联系人、笔记、在线办公等丰富应用,构建真正属于你的数字工作空间。

如果在部署过程中遇到任何问题,比如数据库连接失败,请检查容器是否在同一网络、环境变量是否正确。享受你的私有云之旅吧!

💬 评论区
发表评论

暂无评论,来说两句吧