NAS本地格式转换工具Reubah:图片与文档一键转换,守护隐私
1. 为什么NAS用户迟早会遇到格式转换这道坎玩NAS的人折腾到某个阶段会发现一个很尴尬的事实你的存储空间越来越大了但文件的使用效率并没有跟着涨。别人微信发来一个HEIC格式的照片你的Windows电脑双击打开是空白甲方发来一个Pages文档你用WPS打开全是乱码自己相机导出的RAW原片想在平板上快速预览结果图库根本不认。这些场景我全都经历过。早年我的处理方式是把文件下载到本地打开各种转换网站传上去等广告倒计时下载转换结果再传回NAS。麻烦不说最要命的是隐私问题——公司的合同扫描件、家里的证件照片你往第三方网站上传心里总归不踏实。后来我在Unraid的应用商店里翻到了Reubah这个容器名字有点奇怪拼写也像个错词但用下来之后它成了我NAS上使用频率最高的几个工具之一。简单说Reubah是一个自带Web界面的格式转换工具支持各类图片格式互相转换也支持常见的文档格式转换。你不用装任何客户端浏览器打开它的页面把文件拖进去选好目标格式点一下就能把转换结果下载回来所有处理都在你自己的NAS里完成。这篇文章不会只告诉你装个容器这么简单。我会把Reubah到底能做什么、底层依赖是什么、部署时哪些坑必须避开、实际转换效果怎么样全部过一遍。如果你也对隐私有要求不想把文件传到别人的服务器上这篇文章应该能帮你省下不少折腾时间。2. Reubah到底是个什么工具一个容器两套转换引擎2.1 它解决的可不是偶尔转一张图的问题先明确一下Reubah的定位。它不是一个面向专业设计师的图像处理软件也不是一个能乱接云端存储的企业级平台。它的定位非常精准单用户、本地部署、浏览器操作、用完就走的小工具。整个工具的逻辑很简单你打开它的页面会看到一个上传区域旁边是一排格式选项。你把图片或文档拖进去选好要转成的格式点击转换稍等几秒到几十秒浏览器自动开始下载转换后的文件。用起来简单不代表背后没有东西。Reubah能同时处理图片和文档核心原因是它内部集成了两套转换引擎处理图片用的是ImageMagick处理文档用的是LibreOffice。这两个都是开源社区里公认的老黄牛级工具稳定性和格式覆盖面都非常扎实。我在Unraid上跑了一周之后对它的评价是占资源很少闲置时几乎不吃CPU和内存转换时短时峰值也不算夸张。这对一台7x24小时开机的NAS来说很重要你不会希望一个转换工具把你其他容器挤得喘不过气。2.2 为什么不直接在NAS上装ImageMagick和LibreOffice有朋友会问既然底层就是这两个开源工具那我直接在NAS的命令行里装上不就完了何必套一层容器这个问题的答案恰好也是Reubah这类工具的生存价值所在。直接装命令行工具意味着你必须SSH进NAS敲命令转换文件。一次两次还好如果你只是想把两张图片从PNG转成JPG或者把一个PDF转成Word这一套操作的成本就太高了。而且命令行工具缺少可视化反馈转完你不知道浏览器应该访问哪个地址去下载结果。Reubah做的事情是把这两套工具打包进一个容器外面包了一个极简的Web界面让你在浏览器里完成整个操作闭环。不需要懂Linux命令不需要记住复杂的参数拖拽文件就够了。它还默认把转换结果的缓存放在容器内部不会污染你的NAS目录结构删掉容器就等于彻底清理了所有中间文件。还有一点是你必须重视的ImageMagick和LibreOffice都是依赖比较重的软件手动装进NAS系统里很容易和NAS厂商自己的软件依赖发生冲突。我见过不少群晖用户因为手动装依赖把自己系统搞挂的案例。用Docker隔离恰恰规避了这种风险。3. 部署前你该知道的几件事架构、端口与权限3.1 容器的运行机制和关键配置Reubah在Docker Hub上的维护者是SelfhostersUnraid社区模板里也能直接搜到。它是用Python写的一个轻量服务前端页面负责上传和展示状态后端调用转换工具处理完成后把文件流返回给浏览器。部署时核心考虑三件事端口映射、数据持久化、环境变量。首先说端口。容器内部的默认端口是3000你需要在宿主机上映射一个外部端口。我是用8084避免和其他容器撞车。如果你在群晖上部署用8084也行只要在防火墙上放行即可。在Unraid上容器模板会自动帮你配置好端口映射。再说数据持久化。Reubah本身设计成用完即走的模式它默认有一个/data目录用于存放转换过程中的临时文件但这个目录实际使用率非常低因为文件在转换完成后会直接回流到浏览器不会长期存在容器里。这个目录其实可以不用映射到宿主机用纯容器内部卷就行。如果你想映射那也不是坏事只是几乎用不上。最后是环境变量。有一个值得注意的选项是GUNICORN_WORKERS用来控制Gunicorn的worker进程数。默认值是1如果你的NAS有富余的内存可以拉到2。我实测下来1个worker处理日常单文件转换完全够用拉到2更多是心理安慰不会显著提升转换速度。3.2 部署过程中最容易忽略的两个细节第一个坑是端口冲突。很多人的NAS上已经跑了一堆容器端口规划混乱是常态。我在群晖上第一次部署时随手选了3000结果和另一个监控工具起冲突启动失败。排查了半天才发现问题。我的建议是给每个容器端口做一张表写清楚容器名、外部端口、内部端口、用途。这事看起来笨但真的能救命。第二个坑和内存有关。LibreOffice在转换一些复杂文档时内存占用会突然飙高。如果你NAS的总内存才4GB同时还在跑数据库、下载工具那就得小心了。我给Reubah做了内存限制上限设为2GB实测下来很少踩到这个上限但设了之后心里踏实很多。3.3 Docker Compose部署示例不管你是Unraid、群晖还是飞牛只要支持Docker都可以用下面这份Compose配置跑起来version: 3.8 services: reubah: image: selfhosters/reubah:latest container_name: reubah ports: - 8084:3000 environment: - GUNICORN_WORKERS1 - TIMEOUT120 volumes: - /path/to/reubah-data:/data restart: unless-stopped解释几个参数TIMEOUT120设置转换超时时间单位秒。处理大文件时有意义如果转换时间超过这个值服务会主动断开避免拖死整个容器。默认值我记不清了但设成120是一个稳妥的起点如果你经常转几百MB的大文件建议调到300。/path/to/reubah-data替换成你NAS上的实际路径比如/volume1/docker/reubah。restart: unless-stopped让NAS重启后自动拉起容器属于必备配置。Unraid用户注意在社区应用里搜索Reubah直接装就行模板会搞定大部分参数。群晖用户可以在Container Manager里用新增项目功能上传这份Compose或者直接搜索镜像创建容器。飞牛NAS的Docker管理界面逻辑类似Compose文件同样通用。4. 实际转换体验格式覆盖、速度和文件大小4.1 图片转换覆盖面广日常完全够用Reubah的图片转换覆盖了非常主流的格式阵营JPG、PNG、WebP、GIF、BMP、TIFF、HEIC、SVG都在列表里。其中HEIC的支持对我特别有用现在手机默认拍照格式就是HEICWindows端不支持过去我得专门找工具转。有了Reubah直接在NAS上拖进去转成JPG就行。我实测了一次HEIC转JPG一张约3MB的iPhone原图从上传到下载完成耗时大约5秒。GIF转WebP这种小众需求它也能做而且转换参数默认设置了合理的质量值不会出现转出来的图体积暴涨或者画质劣化太厉害的情况。图片转换的质量总体对得起日常使用这四个字。如果你追求的是PS级别的精细控制比如像素级压缩率调节、轮廓锐化参数Reubah给不了你。但说到把一张图转成另一种格式发出去不丢人这个标准它完全达标。4.2 文档转换PDF是核心场景其他格式能应急文档转换这块Reubah支持PDF、DOCX、ODT、TXT、HTML、EPUB之间的互相转换。它最核心的使用场景是PDF导出。举个例子你在NAS里存了一份DOCX格式的合同模板想生成一份PDF发给客户直接拖进去选PDF就行。反之别人发来一份只读PDF你想提取里面的文字回去编辑转换成DOCX再改这比逐段复制粘贴高效得多。LibreOffice的转换引擎对排版的处理比较稳定。我用一份带图表、页眉页脚、多级列表的标书做测试PDF转DOCX之后整体结构保留得不错复杂的图表会出现轻微位移但文字层级和基本格式都保住了。注意PDF转DOCX本质上是一次重新排版不可能做到像素级还原你要有这个预期。HTML转PDF也是高频需求。把网页保存成HTML文件拖进Reubah转成PDF适合做网页存档。EPUB转PDF对于看电子书的人有用但效果取决于原文件的排版质量遇到排版混乱的EPUB转出来的PDF也不会好到哪去。4.3 转换速度实测小文件秒级大文件需要耐心我在实机上测试了几组数据硬件是N100平台8GB内存Reubah容器分配2GB上限转换任务源文件大小耗时PNG转JPG2.1MB1-2秒HEIC转JPG3.4MB5秒左右WebP转PNG1.2MB1秒左右DOCX转PDF1.8MB20页含图表8-10秒PDF转DOCX5.6MB40页带表格15秒左右EPUB转PDF3.2MB6秒左右速度受CPU和文件复杂度影响很大。N100这种低功耗处理器跑出的成绩不算快但也绝对不拖后腿。如果你用的是群晖的旗舰款或者自己组装的NASCPU性能更好速度会明显更快。有个细节值得提Reubah对上传文件大小有限制默认好像是100MB但在Nginx反代或者某些入口配置之下大文件请求会被拦截。我建议在Unraid模板或者环境变量里查看MAX_CONTENT_LENGTH相关配置如果有把它调到你认为合理的值。不过说实话日常转换很少会用超过100MB的单个文件。5. 折腾过程中的坑完整排查链路分享5.1 初始化排查从日志里找线索我第一次部署Reubah时按照社区模板一键安装打开页面却一直在转圈等了几分钟也不出上传界面。我的排查链路是这样的第一步进容器日志。Unraid的Docker页面可以直接查看日志群晖的Container Manager也可以。在日志里我看到了一条类似ModuleNotFoundError的错误指向某个Python依赖缺失。这个报错通常出现在镜像拉取不完整的情况下。我当时的处理是删掉容器强制重新拉取最新镜像而不是用本地缓存的旧镜像。docker pull selfhosters/reubah:latest docker rm -f reubah # 重新用Compose创建容器 docker compose up -d重新创建后问题解决。如果你也遇到这个情况别急着改代码先看日志确认是不是镜像版本的问题大概率重拉一次就好了。5.2 部署后连接不上端口映射和防火墙的恩怨第二次遇到的问题更隐蔽容器起来了日志正常但浏览器访问http://NAS的IP:8084就是连不上。我当时怀疑是不是服务监听的端口不对。于是先检查一下容器监听端口docker exec reubah netstat -tlnp结果显示容器内部确实在3000端口上监听没问题。接着我检查端口映射规则docker port reubah这里看到了问题所在——宿主机的端口映射被搞乱了映射到了3000而不是我预设的8084。起因是第一次部署失败后旧的容器残留了映射规则。把容器删干净重新用Compose创建后解决。这里提醒大家改端口前一定要先停掉再删掉旧容器否则新映射可能不生效。5.3 转换失败两个需要留心的隐形坑在后续使用中我遇到过两次转换失败各有各的原因。第一次是转一个大尺寸的TIFF文件转换失败且页面卡死。看日志发现是容器内存耗尽。LibreOffice加载大图片时会一次性把整张位图读入内存几十MB的TIFF展开成像素数据后体积能膨胀好几倍。我把容器内存限制从1GB提到2GB问题解决。另一次是转换一个加密的PDFReubah直接报错。这个容易理解LibreOffice本身解不开加密PDF的锁工具报错属于正常行为。如果你手里的PDF有打开密码得先用其他工具解除密码再转换。还有一个更隐蔽的坑文件名里有特殊字符。中文字符没问题但带#、、空格的文件名在部分版本下会导致转换失败。我在飞牛NAS上测试时把压缩包合同#2025v2.0转PDF就一直报错改成合同_2025_v2.0就正常了。遇到玄学失败先排查文件名这个经验在很多Docker应用里都适用。5.4 内网反代给Reubah加一个干净入口如果你不想每次访问都输入IP加端口可以用Nginx Proxy Manager或者Caddy给Reubah做反向代理。配置比较简单把/路径反代到http://127.0.0.1:8084就行。注意一点Reubah的下载方式是StreamingResponse直接回流文件流反代时必须关闭缓冲否则大文件下载会断。Nginx Proxy Manager里把proxy_buffering off;加上即可不然转好的文件下载到一半容易中断。6. Reubah的边界哪些场景它不适合工具是死的人是活的。Reubah再方便也有它干不了的活儿。我把使用边界梳理一下免得你抱错期望。6.1 它不适合多媒体转码Reubah对视频、音频格式无能为力。你想在NAS上把MKV转成MP4指望不了它。这类需求请去找ffmpeg相关工具比如Unraid社区的Handbrake容器或者直接用tdarr做批量转码。6.2 它不适合批量生产环境的转换Reubah是单文件交互式的。你转10个文件就得拖10次点10次下载。没有批量处理、没有队列、没有API接口。如果你需要在NAS上定期批量转换几百个文件可以考虑直接写脚本调用LibreOffice的命令行转换接口或者用unoconv这类工具效率会高很多。6.3 它不适合在线实时预览的场景Reubah没有预览机制你必须下载完成后才能打开看结果。如果你需要一个在线的Office预览服务应该去看Collabora或者OnlyOffice那是另一个层次的需求了。6.4 小众格式的支持要实测虽然Reubah的格式列表看起来相当丰富但LibreOffice对小众格式的支持时好时坏。比如复杂的CAD图纸文件或者带宏的.xlsm文件转换结果往往不理想。我的经验是正式使用之前拿一份你最复杂的真实文件测试一下别等到客户等着要文件才发现转换结果不行。7. 进阶玩法Reubah可以和你NAS上的其他服务怎么配合容器开发的生态就是这点好单个工具用熟了可以串起来玩。我发现了几个挺实用的联动场景供你参考。场景一配合Syncthing做照片格式自动归档我手机里的照片通过Syncthing自动同步到NAS的某个目录其中有大量HEIC格式。我写了一个简单脚本每天凌晨扫描这个目录里超过30天未访问的HEIC文件调用Reubah的接口转成JPG后存储到归档目录原始HEIC挪到备份目录。虽然Reubah没有公开API但它的上传和下载接口就是简单的HTTP POST/GET用curl就能调用。# 示例用curl调用Reubah的转换接口 curl -X POST -F file/path/to/photo.heic -F formatjpg http://127.0.0.1:8084/convert -o photo.jpg具体接口路径可能随版本变化你可以先打开浏览器开发者工具观察页面提交网络请求时实际调用的URL再写脚本。场景二整理电子书库的格式统一我在NAS上用Calibre管理电子书但Calibre的格式转换引擎和LibreOffice风格不同。有些老书是TXT格式排版混乱我会先用Reubah把TXT转成EPUB再导入Calibre做元数据整理阅读体验比直接用TXT好了不止一星半点。场景三网盘文件快速脱敏有时候从网盘下载的文档需要在分享前处理一下。比如隐藏掉某些个人信息再导出成PDF。Reubah不能编辑文档内容但你可以先用NAS上的OnlyOffice或者自己电脑编辑再丢给Reubah做格式统一。这个场景不复杂但处理完再分享比直接发源文件稳妥得多。个人经验总结与实用建议Reubah不是一个惊艳的工具它没有华丽的界面没有AI加持也没有复杂的插件体系。它胜在两点简单和隐私。你把文件拖进去它给你返回转换结果数据全程不出你的NAS这种踏实感用过一次就很难再回去用那些网页转换站了。如果在部署和使用中只能记住三件事那就是第一端口规划好。NAS上容器多了之后端口冲突是头号麻烦建议全程用Compose管理别靠图形界面随手点。第二内存限制给够。LibreOffice是内存大户尤其是处理大型PDF、大尺寸图片时。2GB上限是个比较稳妥的设置太低会转失败太浪费也没必要。第三文件命名的玄学坑。中文名没问题但#、、多余空格这些字符在转换时容易翻车。遇到转换失败先把文件名改成纯字母数字下划线再试一次。Reubah这类工具真正解决的是我NAS使用中高频、轻量、私密的那部分需求不需要把每个文件转换需求都变成一次技术大工程。如果你也在NAS上积攒了大量图片和文档正为格式互通头疼花十分钟部署一个Reubah大概率能帮你省下以后无数次下载-上传-下载的折腾。