飞牛 NAS 部署 LanLens,把家里的网络设备摸得一清二楚
最近在折腾飞牛NAS,有一个需求一直困扰着我,家里设备越来越多,路由器后台看到的只有一堆IP和MAC地址,根本不知道哪台是哪台。
NAS是NAS,智能音箱是智能音箱,电视盒子是电视盒子,全糊在一起,你敢信???
然后我就发现了LanLens这个东西。
开源、自托管、能自动扫描局域网、能给每台设备加备注、能一键SSH连接,还有深色主题,颜值在线。最关键的是,它完全免费,MIT协议,想怎么折腾就怎么折腾。
今天就把它部署在飞牛NAS上的完整过程记录下来,希望对你有用。
先简单说说 LanLens 是什么
LanLens 是一个自托管的局域网监控和设备文档仪表盘,核心能力是通过ARP扫描持续发现网络中的设备,用MAC/IP地址识别每一台,然后给你一个干净的Web界面来管理它们。你可以给每台设备加备注、记录它跑了哪些服务、配置一键SSH/RDP/HTTP连接,还能用nmap做端口扫描,甚至通过SSH深度扫进去拿到硬件信息、操作系统、容器列表。
图片来自 LanLens 的 Github 仓库对飞牛NAS用户来说,这东西特别实用,NAS本身就是家里的网络核心,把网络监控也跑在上面,顺理成章。
在开始之前,有一件事必须说清楚。
LanLens要做ARP扫描,就必须使用host网络模式,也就是说容器要直接共享宿主机的网络栈,才能发出原始的以太网帧。这跟我们平时部署其他容器不太一样,大多数容器用bridge网络就够了,但LanLens不行,bridge模式下ARP扫描直接失效。
所以这次部署,文件夹创建和后续的docker-compose我们用飞牛的Web界面来操作,但有一种情况例外,如果你更习惯命令行,文章后面也会给出完整的docker cli方案,两种方式任选其一。
先把目录建好
打开飞牛NAS的Web管理界面,进入「文件管理器」,在docker文件夹下新建一个文件夹,命名为lanlens,再在lanlens里面新建一个子文件夹,命名为data。

最终的目录结构是这样,
docker/ └── lanlens/ └── data/
data文件夹是LanLens存放SQLite数据库和持久化数据的地方,这个目录必须提前建好,不然容器启动会报错。
生成密钥,这步不能偷懒
这是LanLens最重要的一个环境变量,叫SECRET_KEY,它用来加密存储你的SSH和WinRM凭据,必须是至少32个字符的随机字符串,弱了直接拒绝启动。
打开飞牛NAS的「终端」,或者SSH进去,跑下面这条命令,
openssl rand -hex 32
跑完会输出一串64位的十六进制字符串,类似这样,

如果不会使用 SSH,可以直接复制这段话:生成一个32位的随机密码 发给 AI 帮你生成一个32位随机密码。

把这串东西复制下来,后面要用。
把配置文件写好,核心就这一块
飞牛NAS的Docker管理界面支持直接粘贴docker-compose.yml内容来创建项目,不需要手动写文件。
打开「Docker」→「Compose」→「新建项目」,项目名填lanlens,路径选择刚才建好的/vol1/1000/docker/lanlens,然后在compose内容区域把下面的配置粘进去,把SECRET_KEY换成你刚才生成的那串。

services: lanlens: image: alexrosbach/lanlens:latest container_name: lanlens restart: unless-stopped network_mode: host cap_add: - NET_ADMIN - NET_RAW volumes: - ./data:/data environment: - SECRET_KEY=把你生成的密钥粘在这里 - DEFAULT_ADMIN_PASSWORD=admin - LANLENS_PORT=7765 - BACKEND_PORT=17765 - TZ=Asia/Shanghai healthcheck: test: ["CMD-SHELL", "curl -fs http://localhost:/api/health"] interval: 30s timeout: 10s retries: 3 start_period: 20s
几个参数解释一下,

配置填好之后,点「部署」,飞牛会自动拉取镜像并启动容器,根据网速等个一两分钟。

在「容器」列表里看到lanlens状态变成「运行中」,就说明跑起来了。
【可选】命令行党看这里,docker cli 一步到位
如果你更习惯SSH命令行,不想走Web界面,下面这条命令可以直接替代上面所有的准备工作,一步到位。
先SSH进飞牛NAS,
ssh 你的用户名@你的飞牛NAS的IP
建好目录,
mkdir -p /vol1/1000/docker/lanlens/data cd /vol1/1000/docker/lanlens
生成密钥,
openssl rand -hex 32
把生成的密钥复制下来,替换下面命令里的SECRET_KEY值,然后直接跑,
docker run -d --name=lanlens --restart=unless-stopped --network=host --cap-add=NET_ADMIN --cap-add=NET_RAW -v $(pwd)/data:/data -e SECRET_KEY=把你的密钥粘在这里 -e DEFAULT_ADMIN_PASSWORD=admin -e LANLENS_PORT=7765 -e BACKEND_PORT=17765 -e TZ=Asia/Shanghai alexrosbach/lanlens:latest
跑完用docker ps | grep lanlens确认一下状态,看到Up或healthy就好了。

注意,因为LanLens用的是host网络模式,端口直接由LANLENS_PORT环境变量控制,不需要加-p参数映射。
打开浏览器,见证一下
不管你用哪种方式部署,接下来都一样,浏览器访问,
http://你的飞牛NAS的IP:7765
第一次进去会让你登录,默认账号密码都是admin,登录之后会弹出重置密码的提示,改一个强密码,这步不能跳过。


改完密码,登录成功,LanLens会自动开始扫描你的局域网,稍等片刻,网络里的设备就会一台一台出现在Dashboard上。

进去之后,先把这三件事做了
第一件,前往Settings → Scan Range,确认扫描的网段配置正确,局域网段一般是192.168.x.0/192.168.x.254,对上了就行。

第二件,如果你想在有新设备接入网络时收到通知,可以去Settings → Notifications配置Telegram通知,填入Bot Token和Chat ID就能用,或配置下 SMTP 服务,通过邮件进行通知,这个通知功能是可选的。

第三件,等首次扫描完成之后,给你认识的设备逐一加上备注,NAS、路由器、电视、手机,一个个标清楚,以后看着就舒服多了。


玩熟了之后,还能这么搞
深度扫描,这个功能可以通过SSH连进Linux设备,拿到CPU型号、内存、磁盘、运行中的容器列表等详细信息。飞牛NAS本身就是Linux,理论上可以对NAS自身做深度扫描,在Settings里配置好SSH凭据就行,官方文档在 https://github.com/AlexRosbach/LanLens#deep-scan--required-permissions。
一键连接,在设备详情页可以配置SSH、HTTP、HTTPS的快捷入口,配好之后直接点就能跳转,省去每次手动输IP的麻烦。
换数据库,LanLens默认用SQLite存数据,对家用场景完全够用。如果你已经在飞牛NAS上跑了MariaDB,也可以改用MariaDB,在compose配置里加一行DATABASE_URL就行,
- DATABASE_URL=mysql+pymysql://lanlens:你的密码@127.0.0.1:3306/lanlens
注意因为是host网络模式,数据库地址直接用127.0.0.1就能访问宿主机上的MariaDB。
踩坑记录,提前看能省不少事
网络模式这块,前面说了,必须用host,bridge模式ARP扫描直接废掉,这个没有绕过的办法。
端口冲突,7765这个端口如果已经被飞牛NAS上的其他服务占用了,改LANLENS_PORT的值就行,比如改成8765,重启容器生效。
数据备份,LanLens v1.4.0之后有数据库结构变更,更新之前一定要备份data目录,SSH进去跑一行,
cp -r /vol1/1000/docker/lanlens/data /vol1/1000/docker/lanlens/data.bak
密码忘了,不用慌,进容器重置,
docker exec -it lanlens reset-password --password "你的新密码"
安全这块,如果你的飞牛NAS有公网访问需求,强烈建议在LanLens前面加一层反向代理,比如Nginx Proxy Manager,套上HTTPS,不要裸跑在公网上。
怎么说呢,LanLens这个东西,真的让我第一次觉得家里的网络「被我掌握了」。以前路由器后台一堆没有名字的设备,现在每台都清清楚楚,哪台在线、哪台跑了什么服务、什么时候新接入了一台陌生设备,一目了然。
对飞牛NAS用户来说,部署成本不高,Web界面点几下或者SSH跑几条命令的事儿,但带来的网络管理体验提升是实实在在的。
可以试试。
既然看到这里了,如果觉得不错,随手点个赞、在看、转发三连吧,如果想第一时间收到推送,也可以给我个星标⭐~
谢谢你看我的文章,我们,下次再见。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案