Docker 玩法

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

飞牛NAS(fnOS)自带的文件管理功能已经非常强大,但如果你需要跨设备同步、在线文档编辑、日历联系人同步,或者想彻底摆脱某度网盘的限速,那么部署一个私有云盘是终极解决方案。今天,我们就用飞牛NAS的Docker功能,一步步搭建Nextcloud,把数据牢牢握在自己手里。

为什么选择Nextcloud

Nextcloud是市面上最成熟的开源私有云盘方案,它不仅仅是一个网盘,更是一个协作平台。它支持文件同步、共享链接、在线Office编辑、移动端App、桌面客户端,还能通过应用商店安装日历、通讯录、笔记等插件。最重要的是,它完全开源,数据自主可控。

在飞牛NAS上部署Nextcloud,推荐使用Docker方式,因为飞牛的应用中心虽然提供了一键安装,但Docker版更新更及时,且方便自定义配置。我们直接采用 docker compose 方式部署,结构清晰,便于管理。

部署前的准备

在开始之前,请确保你的飞牛NAS满足以下条件:

  1. 系统版本为最新版(至少0.8.x以上)。
  2. 已开启SSH功能(飞牛设置 -> 终端/SSH -> 开启)。
  3. 有足够的存储空间,建议至少分配20GB给Nextcloud数据目录。
  4. 准备好一个用于访问的端口号,例如8080。

第一步:创建项目目录

首先通过SSH连接到你的飞牛NAS。打开终端工具(如MobaXterm或Windows Terminal),输入:

ssh admin@你的飞牛IP地址

登录后,我们创建一个专门存放Nextcloud配置的目录:

sudo mkdir -p /vol1/docker/nextcloud
cd /vol1/docker/nextcloud

注意,飞牛NAS的存储卷通常挂载在 /vol1 下,如果你的存储卷名称不同,请相应调整路径。

第二步:编写docker-compose.yml

nextcloud 目录下创建 docker-compose.yml 文件:

sudo nano docker-compose.yml

将以下内容粘贴进去:

version: '3.8'

services:
  nextcloud:
    image: nextcloud:stable
    container_name: nextcloud
    restart: unless-stopped
    ports:
      - "8080:80"
    volumes:
      - ./data:/var/www/html
      - ./apps:/var/www/html/custom_apps
      - ./config:/var/www/html/config
      - ./data_files:/var/www/html/data
    environment:
      - MYSQL_HOST=mysql
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_PASSWORD=yourpassword
      - REDIS_HOST=redis
    depends_on:
      - mysql
      - redis
    networks:
      - nextcloud_net

  mysql:
    image: mariadb:10.11
    container_name: nextcloud_mysql
    restart: unless-stopped
    volumes:
      - ./mysql:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=rootpassword
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_PASSWORD=yourpassword
    networks:
      - nextcloud_net

  redis:
    image: redis:alpine
    container_name: nextcloud_redis
    restart: unless-stopped
    volumes:
      - ./redis:/data
    networks:
      - nextcloud_net

networks:
  nextcloud_net:
    driver: bridge

这里我使用了MariaDB作为数据库,Redis作为缓存,这是生产环境推荐的组合,比默认的SQLite稳定得多。请务必修改 MYSQL_PASSWORDMYSQL_ROOT_PASSWORD 为强密码。

第三步:启动容器

保存文件后(nano中按 Ctrl+X,然后按 Y,再按 Enter),执行启动命令:

sudo docker compose up -d

首次启动需要拉取镜像,根据网络情况可能需要几分钟。等待命令执行完毕后,查看容器运行状态:

sudo docker ps

你应该能看到 nextcloudnextcloud_mysqlnextcloud_redis 三个容器都在运行。

第四步:完成Nextcloud网页安装

打开浏览器,访问 http://你的飞牛IP:8080。你会看到Nextcloud的初始化安装界面。

  1. 创建一个管理员账号(例如 admin,密码设置复杂一些)。
  2. 点击“存储与数据库”下拉菜单,选择“MySQL/MariaDB”。
  3. 填写数据库信息:
  4. 数据库用户:nextcloud
  5. 数据库密码:yourpassword(与compose文件中一致)
  6. 数据库名:nextcloud
  7. 数据库主机:mysql(注意,这是容器内部网络的主机名,不是IP)
  8. 点击“安装完成”。

等待安装进度条走完,你就可以看到Nextcloud的主界面了。此时,私有云盘已经跑起来了。

第五步:配置外部访问与优化

配置可信域名

如果你希望通过域名或局域网IP访问,需要在 config/config.php 中修改。编辑配置文件:

sudo nano /vol1/docker/nextcloud/config/config.php

找到 'trusted_domains' 数组,添加你的IP或域名:

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

保存后重启容器:

sudo docker restart nextcloud

开启HTTPS(可选)

如果你有域名并申请了SSL证书,可以在飞牛NAS的“反向代理”功能中配置,将443端口转发到容器的80端口。飞牛自带的反向代理配置非常简单,这里就不再赘述。

性能优化

Nextcloud的定时任务默认是AJAX模式,建议改为Cron。进入Nextcloud后台 -> 设置 -> 基本设置,将“后台任务”改为“Cron”。然后在宿主机上添加一条cron任务:

crontab -e

添加以下行(每5分钟执行一次):

*/5 * * * * sudo docker exec -u www-data nextcloud php cron.php

客户端同步

Nextcloud支持全平台客户端。在电脑上安装Nextcloud客户端,输入服务器地址 http://你的飞牛IP:8080,输入你的账号密码,选择要同步的文件夹即可。手机端在应用商店搜索“Nextcloud”安装,同样配置。

数据备份须知

数据安全是私有云的核心。建议定期备份以下目录:

  • /vol1/docker/nextcloud/data_files(用户文件)
  • /vol1/docker/nextcloud/mysql(数据库)
  • /vol1/docker/nextcloud/config(配置文件)

你可以使用飞牛自带的“Hyper Backup”功能将这些目录备份到另一块硬盘或外部存储。

总结

至此,你已经成功在飞牛NAS上部署了属于自己的Nextcloud私有云盘。整个过程只需几步,但换来的是完全可控的数据存储、不限速的文件同步以及丰富的扩展生态。现在,你可以把手机相册自动备份、办公文档在线协作都交给它。值得一提的是,飞牛NAS的Docker功能非常稳定,这套Nextcloud方案可以长期稳定运行。如果在使用中遇到权限问题,多检查一下宿主机目录的属主和权限(可用 chown -R www-data:www-data 修正)。享受你的私有云吧!

💬 评论区
发表评论

暂无评论,来说两句吧