PassNAT LogoPassNAT

自建开发者工具箱 it-tools:飞牛 NAS Docker 部署,86 个小工具一页全有,配内网穿透在外面也能用

作者

小编

发布时间

Curving abstract shapes with an orange and blue gradient

项目介绍

it-tools 是一个自己部署的在线工具箱。平时写代码、折腾 NAS 会用到的那些零碎小工具 —— JSON 格式化、时间戳转换、Hash 计算、二维码生成、Base64 编解码、Chmod 权限计算 —— 它把这些全都塞进了一个网页里。我们部署的这个版本实测有 86 个,左边按分类列着,上面有搜索框,想用哪个点哪个。

它跟那些在线工具站最大的区别是:东西不出门。它是一个纯前端的静态站,你贴进去的 JSON、算的 Hash、生成的密码,全部在你自己的浏览器里算完,不会发到任何服务器上去 —— 包括不会发到你自己这台 NAS 上。所以它没有数据库,没有需要保管的密钥,连数据目录都不用挂。

也正因为如此,它轻得有点不像话:镜像二十多兆,底层就是一个 nginx 托着一堆静态文件,跑起来常驻内存只有几兆。官方镜像同时给了 amd64 和 arm64,用 Intel 赛扬那类低功耗 CPU 的 NAS 也不用担心指令集问题。

界面默认是英文,右上角有个语言下拉,挑「中文」之后整个界面立刻全中文,工具名和说明都翻过来了。

项目地址:CorentinTh/it-tools

部署安装

装在自己的 NAS 上之后,它默认只能在家里的网络里打开 —— 可这类小工具恰恰是随时随地要用的:在公司想格式化一段 JSON、在外面想算一下某个目录该给什么权限,总不能为这个跑回家。家里没有公网 IP 的话,可以用 帕斯内网穿透 把它开放到公网,飞牛的应用中心里就能直接装到插件,不用另外找工具。下面这套流程在飞牛 NAS 上从头到尾走一遍。

第一步:准备编排文件

下面这份编排可以直接用。它只有八行,而且整份只有一处需要按自己的情况改。

1services:
2 it-tools:
3 image: corentinth/it-tools:latest
4 container_name: it-tools
5 restart: unless-stopped
6 ports:
7 # 左边 3401 是 NAS 上对外的端口,浏览器敲它;右边 80 是容器里的
8 - "3401:80"
9

要认的就是端口那一行:冒号左边的 3401 是 NAS 上对外的端口,待会儿在浏览器里输的是它,建隧道时填的也是它;右边的 80 是容器内部的端口,不要动。3401 如果被别的容器占了,换一个没用过的即可,后面所有地方跟着一起换。

剩下的几行都是常规写法:container_name 给容器起个名字,方便在 Docker 列表里认;restart: unless-stopped 让它跟着 NAS 开机自启,除非你手动停掉。

这份编排里**没有** volumes,也**没有** environment —— 不是漏写了。它是纯前端站,服务端不存任何东西,所以既没有需要持久化的数据目录,也没有要传进去的密钥。你在页面上收藏的工具是存在你自己浏览器的本地存储里的,换一台设备打开就没有了,这点要有心理准备。

镜像标签跟着官方文档走,用 corentinth/it-tools:latest 就行。需要说明的是:这个标签是 2024 年 10 月推的,而上游仓库到现在还在提交,也就是说容器里的版本会比 GitHub 上的源码旧一截。官方 README 给的就是这个标签,日常用完全够,只是别指望它带上游最近新加的工具。

第二步:在飞牛上建 Compose 项目

打开飞牛的 Docker 应用,切到 Compose,点右上角的新增项目。项目名称填 it-tools。

路径这一栏点开,在「我的文件」下面挑一个空文件夹选中 —— 没有就当场新建一个。这个文件夹以后就是这个项目的家,编排文件会放在里面。

来源选「创建 docker-compose.yml」,把上面那份编排整段贴进去,一个字都不用改(端口要换的话除外)。

下面「创建项目后立即启动」勾上,点确认。镜像只有二十多兆,拉完几秒就跑起来了。这时候在家里的网络上用 NAS 的地址加 3401 就能打开它。

第三步:用内网穿透开放到公网

在飞牛的应用中心里搜 PassNAT,装上,账号登一次。打开插件点创建隧道:名字随便起;接入节点和协议留默认;本地地址留它默认的 127.0.0.1,不用去查 NAS 的局域网地址;本地端口填上面那个 3401。

建好之后按一下电源启动,状态转成运行中,详情面板里那一行「地址:端口」就是系统分给你的公网地址,在外面用的就是它。

这里有一点要说在前面:it-tools 没有登录,也没有初始化向导,打开地址就是工具页。好处是省事,代价是任何拿到这个地址的人都能用 —— 所以这个地址别到处发。好在它是纯前端的,服务端没有你的任何数据,别人用它算他自己的东西,算完也留不下什么,风险比暴露一个带数据的服务小得多。

第四步:切成中文,挑两个工具试试

公网地址打开之后,右上角那个语言下拉点开,挑「中文」,整个界面立刻就全中文了。

第一个推荐试的是「Docker Run 到 docker-compose 转换器」。折腾 NAS 的人天天遇到这件事:上游 README 给的是一行 docker run 命令,而飞牛这边要的是 compose。把命令贴进去,它当场转成 compose,不用再自己一个参数一个参数翻译。比如把这一期自己的部署命令贴进去:

1docker run -d --name it-tools --restart unless-stopped -p 3401:80 corentinth/it-tools:latest

转出来的就是上面那份编排的样子 —— 镜像、端口映射、restart、容器名一个不少。

第二个是「Chmod 计算器」。Docker 挂目录权限不对的时候经常要算这个:页面上是一个三行三列的勾选表,读、写、执行各一行,属主、组、其他各一列,点几个勾,上面那个三位数字和对应的权限串实时就变出来了。比如要 755,勾成属主全选、组和其他各留读和执行,上面直接显示 755 和 rwxr-xr-x。

常见问题

打开是英文的怎么办:右上角语言下拉挑中文。这个选择存在你自己浏览器里,换台设备要重新挑一次。

收藏的工具在别的设备上看不到:它的收藏、历史这些都存在浏览器本地存储里,不在服务器上,所以不跨设备同步。这是纯前端应用的特性,不是坏了。

端口 3401 打不开:先在飞牛的 Docker 列表里确认容器是「正在运行」,再确认编排里冒号左边的端口跟你浏览器输的是同一个。换过端口的话,PassNAT 隧道里的本地端口也要跟着改。

公网地址打不开但局域网能开:回 PassNAT 插件看那条隧道的状态是不是「运行中」,没通电的话按一下电源。

小结

it-tools 属于那种装完就一直在那儿、用不着维护的应用:一个容器、二十多兆、没有数据库、没有密钥、没有要备份的目录。装在 NAS 上再配一条内网穿透,等于给自己搭了一个随身的工具页,在哪儿都能打开,而且贴进去的东西不经过别人的服务器。