Docker 玩法

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

飞牛NAS(fnOS)凭借其简洁的界面和强大的Docker支持,已经成为很多自托管爱好者的首选平台。今天,我们来聊聊如何在飞牛NAS上部署Nextcloud,将其打造成一个功能完备、数据自主可控的私有云盘。相比直接使用SMB或WebDAV,Nextcloud提供了更现代化的文件管理体验,包括在线Office编辑、移动端自动备份、应用生态扩展等。

准备工作

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

  1. 系统版本为最新版,建议0.8.19及以上。
  2. 已开启SSH功能(控制面板-终端机-SSH),或者你更习惯直接在飞牛桌面端的Docker管理器中操作。本文两种方式都会涉及。
  3. 预留至少20GB磁盘空间(取决于你的数据量)。
  4. 拥有一个固定的局域网IP或准备配置端口映射。

一、通过飞牛Docker管理器快速部署(新手推荐)

飞牛NAS的Docker管理器做了很好的图形化封装,我们可以直接搜索镜像并创建容器,无需记忆docker run命令。

打开飞牛桌面的「Docker」应用,点击左侧「镜像」,在搜索框中输入 nextcloud,选择官方镜像 nextcloud:latest,点击「下载」。

镜像拉取完成后,点击「创建容器」,进行如下配置:

  1. 容器名称:随意,如 nextcloud
  2. 端口映射:将本地端口 8080 映射到容器端口 80。如果你80端口被占用,可以换成 8081 等。
  3. 存储空间:点击「添加」,将NAS上的一个文件夹(如 /vol1/cloud/nextcloud-data)挂载到容器内的 /var/www/html。这是Nextcloud的程序和数据目录,务必选择容量充足的存储池。
  4. 环境变量:可以暂时不添加,使用默认配置。如果希望设置数据库,建议先跳过,我们稍后会用更优雅的方式连接MySQL。

点击「创建」后,容器会自动启动。此时打开浏览器,访问 http://你的NAS_IP:8080,你应该能看到Nextcloud的初始安装页面。按提示设置管理员账号,选择数据目录(默认即可),并推荐选择SQLite作为数据库(仅适合轻量使用)。

二、进阶部署:使用Docker Compose(推荐生产环境)

如果你追求更好的性能和数据可靠性,建议使用MySQL/MariaDB作为数据库,并通过Docker Compose一次性编排。这种方式更适合长期使用,避免后续迁移数据库的麻烦。

首先,通过SSH连接到飞牛NAS。在终端中执行:

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

创建 docker-compose.yml 文件,内容如下:

version: '3.8'

services:
  db:
    image: mariadb:10.11
    container_name: nextcloud-db
    restart: unless-stopped
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    volumes:
      - ./db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=your_root_password
      - MYSQL_PASSWORD=your_db_password
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
    networks:
      - nextcloud_net

  app:
    image: nextcloud:latest
    container_name: nextcloud-app
    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=db
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_PASSWORD=your_db_password
      - NEXTCLOUD_ADMIN_USER=admin
      - NEXTCLOUD_ADMIN_PASSWORD=your_admin_password
      - NEXTCLOUD_TRUSTED_DOMAINS=your_nas_ip
    depends_on:
      - db
    networks:
      - nextcloud_net

networks:
  nextcloud_net:

注意替换其中的密码和IP地址。然后执行:

docker-compose up -d

等待容器启动后,同样访问 http://NAS_IP:8080,此时Nextcloud会自动完成数据库配置,无需手动设置。

三、配置反向代理与HTTPS(可选但推荐)

如果飞牛NAS上已经运行了Nginx Proxy Manager,或者你希望使用域名访问云盘,建议配置反向代理。

在飞牛桌面的Docker管理器中,找到Nginx Proxy Manager容器,添加一条代理规则:

  • 域名:cloud.yourdomain.com
  • 转发IP:你的NAS内网IP
  • 转发端口:8080

然后配置SSL证书(可以使用Let's Encrypt免费证书),这样就能通过HTTPS安全访问你的Nextcloud了。同时,在Nextcloud的 config/config.php 中添加强制HTTPS配置:

'trusted_domains' => 
array (
  0 => 'your_nas_ip',
  1 => 'cloud.yourdomain.com',
),
'overwriteprotocol' => 'https',

四、常见问题与优化建议

权限问题:如果上传文件时提示“权限不足”,请检查数据目录的属主。进入容器执行:

docker exec -it nextcloud-app chown -R www-data:www-data /var/www/html/data

内存占用:Nextcloud比较吃内存,建议在飞牛NAS设置中给Docker分配至少2GB内存,否则频繁访问时可能导致容器被OOM Killer杀掉。

自动备份:定期备份 ./data./db 目录。你可以使用飞牛自带的Hyper Backup,或者写一个简单的cron脚本,将这两个目录同步到另一块硬盘或远程存储。

移动端同步:在手机上下载Nextcloud客户端,登录时填写你的域名或IP,即可实现照片自动备份、文件双向同步。

总结

通过以上步骤,你在飞牛NAS上已经成功部署了Nextcloud私有云盘。无论是简单的Docker图形化部署,还是基于Compose的多容器生产级方案,飞牛NAS都能提供稳定可靠的运行环境。现在,你可以享受完全自主可控的云存储服务,数据不再受制于第三方平台。后续还可以通过Nextcloud应用商店安装日历、联系人、笔记等插件,将其扩展为你的个人工作台。如果在部署过程中遇到任何问题,欢迎在飞牛社区交流讨论。

💬 评论区
发表评论

暂无评论,来说两句吧