企业级NAS建设方案

📅 2026/7/23 22:53:56 👁️ 阅读次数 📝 编程学习
企业级NAS建设方案

一、项目概况

1、 背景与建设初衷

我司目前员工规模在 100 人以内。随着公司业务的快速发展,技术研发、产品运营及日常管理中所产生的内部资产资料急剧增加,企业内部资料的集中管理、权限划分与高效流转需求日益凸显。
为了打破数据孤岛,提升团队协同效率,我司计划搭建一套企业级 NAS(网络附加存储)系统。该系统本质上是一台专用于数据集中管理与共享的私有云服务器,旨在实现内部资料的统一存储、精细化安全共享,支持多终端随时随地的高效访问,并为公司未来的 AI 训练与智能体应用提供稳定、高效的数据底座。

2、现有硬件资产评估

目前,产品技术部现有一台高配开发服务器,核心硬件配置如下:
●计算资源:搭载双路海光 32 核 2.5GHz CPU、64GB 内存。
●网络资源:配备 1 张千兆网卡(包含 2 个物理端口),支持链路聚合与网络流控。
●存储资源:经 RAID 5 阵列配置,拥有约 12TB 的高可用、容错存储空间(当前容量使用率不足 1%)。
●数据库环境:宿主机已预装并运行原生 MySQL 数据库。
●操作系统:预装国产统信 UOS 1070e 操作系统。
评估结论:该服务器硬件算力极其充裕,存储冗余空间巨大,且网络端口具备扩展性,操作系统环境具备良好的容器化兼容性。因此,完全具备在保留原有开发功能的同时,并行部署企业级 NAS系统的硬件与系统条件。通过盘活现有闲置资产并直接复用宿主机现有的 MySQL 数据库,不仅能大幅节省容器内存开销,更能统一现有数据库的备份与维护策略,实现效益最大化。

3、拟部署的核心能力

拟部署 of NAS 系统将重点实现以下核心能力:
●全平台无缝访问与协同:全面支持 Windows/Mac PC 端及 iOS/Android 移动端,支持外网 PC 端直接挂载为本地虚拟磁盘,实现跨设备的文件同步、在线预览与无感协同。
●安全远程接入通道:配置严密安全的互联网访问通道,通过自建私有组网控制端,确保员工在外网办公环境下也能安全、稳定、高速地获取内部资料。
●AI 算力与智能体协同:开放标准存储接口(如 WebDAV),将海量非结构化数据直接对接本地 AI Agent 框架(如 OpenClaw),作为高效的数据底座支持模型训练与推理,并开辟“智能体成果输出区”实现自动化数据处理闭环。

说人话就是可以远程访问,如果不能通过互联网访问,那这个NAS基本没有意义;除此之外,NAS的资料还要支持AI读取。NAS的初衷,不仅仅是为了资料存放和共享,更多的是希望把公司的文档资料利用起来,建成一个知识库。要完成这个东西,需要AI的参与。

二、系统架构、技术选型和工作原理

1、NAS软件

选用nextcloud作为nas系统。开源、据说私有云市场份额第一;明文存储上传资料,文件名不变,对AI读取友好;

2、NAS客户端

客户端使用RaiDriver挂载nas,将nas挂载成本地一个盘,方便访问;

3、远程访问

公司全体员工通过无线路由器上网,同时公司在阿里云上有域名,可以使用无线路由器进行动态域名解析,同时无线路由器通过端口映射,将访问NAS端口的流量分配至NAS服务器,从而实现通过域名访问NAS。

1)动态域名
访问指定域名,请求将来到公司的无线路由器

2)端口映射
无线路由器将请求分配到NAS服务器

3)NAS服务器中的反向代理软件(nginx proxy manager,以下简称NPM)将请求引导到NextCloud。
因为请求的8443端口,是反向代理软件的端口。


为什么要有这个反向代理软件呢?理由有二:
(1)NPM可以签发全球认可的,正式的https证书。这种证书,不会像自签发的那样,引起浏览器的警告。支持https且有公信力的证书,是客户端顺利访问NAS的必要条件
(2)NPM可以根据二级域名,将请求引导到不同的服务。比如nas.monkey.com引导到nas,ai.monkey.com引导到小龙虾。

为什么NPM这么牛,可以签发全球所有操作系统、浏览器和手机都原生信任的正式 HTTPS 证书?原因是NPM 底层直接集成了一个叫 Let’s Encrypt 的服务。Let’s Encrypt 是由 Linux 基金会、电子前沿基金会(EFF)、Mozilla(火狐)、谷歌、加州大学伯克利分校等巨头联合发起的非营利性证书签发机构(CA)。它的目的就是让全球的互联网流量都实现免费加密。全球有几十亿个网站都在用它的证书,权威性与花钱买的商业证书没有任何区别。

NPM (你的 NAS) ──(自动申请)──> Let’s Encrypt 官方服务器
│ │
│<──(验证你确实拥有域名)───┘

└──(验证通过)──> 签发全球通用的 SSL/TLS 证书!

三、部署前准备

用网线将NAS服务器直连无线路由器,然后为NAS服务器分配一个固定的IP。这样,所有使用该无线路由器上网的机器,都能访问到这个IP。

如前所述,在无线路由器上设置动态域名,端口映射,将请求分配到NAS服务器。

四、部署服务器

1、使用mysql作为nextcloud的数据库

由于NAS服务器已装有 MySQL,可以直接使用。登录MySQL,为 NAS 创建独立隔离的数据库与专属用户账户:

-- 创建专用 NAS 数据库CREATEDATABASEnextcloudCHARACTERSETutf8mb4COLLATEutf8mb4_general_ci;-- 创建专属数据库账号CREATEUSER'nas'@'%'IDENTIFIEDBY'StrongSecureDBPassword123';-- 授予该账号对 NAS 数据库的全部管理权限GRANTALLPRIVILEGESONnextcloud.*TO'nas'@'%';FLUSHPRIVILEGES;

2、创建存放nextcloud的文件所在文件夹

sudomkdir/data/nas_sharesudochown-R33:33 /data/nas_sharesudochmod-R770/data/nas_share

3、创建nas和npm等服务所在文件夹

数据和程序分离。

sudomkdir-p/home/nas/docker/nextcloud\/home/nas/docker/nginx/data\/home/nas/docker/nginx/letsencryptsudochmod755/data /home/nas/dockersudochmod-R755/home/nas/docker/nginx

4、部署服务

在 /home/nas/docker 下创建配置文件docker-compose.yml

services:nextcloud:image:nextcloud:latestcontainer_name:nextcloudrestart:alwaysexpose:-"80"volumes:# 💡 路径同步:网盘主数据指向 /data/nas_share-/home/nas/docker/nextcloud:/var/www/html-/data/nas_share:/var/www/html/dataenvironment:-TRUSTED_PROXIES=172.16.0.0/12 192.168.0.0/16 100.64.0.0/10-OVERWRITECLIURL=[https://nas.monkey.com:8443](https://nas.monkey.com:8443)-OVERWRITEPROTOCOL=https-MYSQL_DATABASE=nextcloud-MYSQL_USER=nas-MYSQL_PASSWORD=StrongSecureDBPassword123# 💡 黄金优化:使用 Docker 默认网桥网关 172.17.0.1,实现容器对宿主机 MySQL 的超安全、局域网物理隔离式直连-MYSQL_HOST=172.17.0.1:3306nginx-proxy:image:'jc21/nginx-proxy-manager:latest'container_name:nginx-proxy-managerrestart:alwaysports:-'8080:80'-'8443:443'-'81:81'volumes:-/home/nas/docker/nginx/data:/data-/home/nas/docker/nginx/letsencrypt:/etc/letsencrypt

5、启动服务

d /home/nas/docker&&sudodocker-composeup-d

6、反向代理及证书配置

假设分配给NAS服务器的固定IP为192.168.3.200,则在浏览器中访问 http://192.168.3.200:81,登录 Nginx Proxy Manager (NPM)。

1)证书

核心安全提示:请在证书选项直接选择“Request a new SSL Certificate”,自动申请全球受信的 Let’s Encrypt 免费证书,系统会自动无感续期,实现 RaiDrive、iOS 和 Android 客户端的零警告、开箱即用。

证书创建了以后,会自动存放于/home/nas/docker/nginx/letsencrypt。nginx-proxy并不是完全等同于nginx,它接管了外部对服务器的访问,将流量导向指定的站点。因此,nextcloud并不需要证书,nginx-proxy有证书就可以了。

2)代理

代理的作用是,凡来访问nas.monkey.com的,都转向nextcloud。

7、设置开机自启

1)创建自启脚本

cat<<'EOF'>/home/nas/autosetup-nas.sh#!/bin/bash sleep 10 cd /home/nas/docker/ docker-compose down docker-compose up -d EOF

2)赋上权限

chmod+x /home/nas/autosetup-nas.sh

3)创建一个系统服务文件

sudocat<<'EOF'>/etc/systemd/system/nas-autostart.service[Unit] Description=Docker NAS Autostart and Repair Service After=docker.service Requires=docker.service [Service] Type=oneshot ExecStart=/home/nas/autosetup-nas.sh RemainAfterExit=yes [Install] WantedBy=multi-user.target EOF

4)刷新配置并启用该服务

# 重新加载系统服务配置sudosystemctl daemon-reload

5)开启开机自启

sudosystemctlenablenas-autostart.service

五、配置NextCloud

1、初始化

首次设置NextCloud必须 通过NPM 安全域名访问,在本项目,也就是https://nas.monkey.com:8443进行设置。如果无线路由器的动态域名还没设置生效,也可以通过修改管理机的hosts文件,将nas.monkey.com指向NAS服务器。总之需要通过域名、https。不知道为啥。

首次信任写入:通过域名进行首次初始化配置,数据库类型选择 MySQL/MariaDB,填入宿主机 MySQL 凭证(数据库 nextcloud,用户名 nas,如前所述)。

2、修改配置文件

上面步骤安装完成后,估计会出现gateway error的提示页面。这是因为将端口号由默认的443改成了8443,配置文件需要做一定修改。否则系统还是会顽强地跳到443。

vi /home/nas/docker/nextcloud/config/config.php

六、设置客户端

客户端使用RaiDriver。不过这个软件有点怪,第一次使用会让你打开网页注册一个账号。这个账号跟nextcloud没有关系,纯粹是RaiDriver自己的账号。

运行RaiDriver以后,挂载nextcloud分配的空间。填上nextcloud给的账号、密码、网址、端口,如图所示。


七、补充

如前所述,我们访问NAS的时候,使用了端口8443,使用起来有点别扭。为什么不直接用443呢?像我们公司这种,没有固定的外网IP,只能依赖无线路由器解析动态域名,就不可以。因为无线路由器可能出于尊重域名解析商的考虑,似乎禁止了动态解析80、443这种默认端口。