隐私刚需:Stirling-PDF 自托管实测,合同/账单再也不用传第三方
2026-08-16 · DevCraft Studio
手把手在廉价 VPS 上用 Docker 跑起 Stirling-PDF,合并/拆分/转换/OCR/去密一气呵成。配 Caddy 反代加基础认证把端口关进小黑屋,顺手验证 Tesseract 的中文 OCR。读完你就拥有一个完全私有的 PDF 工具箱,合同账单再也不用传给陌生网站。
先说个扎心的事实:你每次在「某某 PDF 工具」网站上上传一份合同、一份工资条、一份扫描版发票,其实就等于把隐私文件直接交到了一个你根本不认识的服务器上。那些网站大多写着「我们不会保存你的文件」,但你没法验证,也没法审计。更离谱的是,有些工具背后就是靠转卖、分析你的文档内容吃饭的。
所以这两年,越来越多注重隐私的站长和办公党选择把 PDF 工具搬回自己手里——在自己的 VPS 上跑一个开源的 Stirling-PDF。它现在是 GitHub 上最火的 PDF 项目之一,80k+ stars,版本停在活跃的 v2.14.x 线,60 多个功能基本覆盖了你日常对 PDF 的所有需求:合并、拆分、旋转、压缩、格式互转、加水印、去密码、OCR 识别文字,等等。最重要的是,文件全程只在你自己的机器里转,下载完就销毁,真正做到「你的 PDF,你的服务器」。
延伸阅读
更多相关攻略推荐:【知识库自托管 02】2026 实测:VPS 自托管 Anythin、【知识库自托管 03】2026 实测:搬瓦工/RackNerd 上自、2026 VPS 选购决策树与白皮书:一张图看懂怎么买、如何给 VPS 厂商做"信用评估":跑路、超售与售后风险排查手册、【知识库自托管 01】2026 企业/个人私有文档 RAG 问答选型。
为什么要把 PDF 工具搬回自己手里
在线 PDF 工具的「免费」是有代价的。大多数免费站对单文件大小卡在 10–50MB,每天还有次数上限,想要解锁就得开会员。更关键的是隐私:合同、报表、扫描件这种东西,一旦离开你的网络,后续发生什么你完全控制不了。自托管之后,这几件事同时解决:
- 隐私可控:文件不出本机,连网线都不用出机房,自然不怕被偷看。
- 没有大小限制:服务器硬盘多大,你就能处理多大的文件,合并 500 页扫描件也不眨眼。
- 没有次数限制:凌晨三点批量处理 200 份也没人收你钱。
- 可离线:只要本机网络通,断网也能用,不依赖外部服务。
说白了,Stirling-PDF 就是开源世界里的「Acrobat 替代品」,还不用年费,不用把文件交给别人。
选机器:多大内存和硬盘才够用
好消息是 Stirling-PDF 对硬件极其宽容。官方标注的最低内存只要 256MB,纯做合并、拆分、压缩这类基础操作,256MB 都能跑起来。但一旦你要用 OCR(文字识别)或者把 Word/Excel 转成 PDF(走 LibreOffice),内存建议直接拉到 1GB 以上,2GB 更舒服,否则处理大文件时容易卡顿甚至 OOM 被系统杀掉。
硬盘方面,标准镜像(latest)拉下来大约 1GB 出头,fat 镜像(自带 Tesseract 语言包和 LibreOffice)要 2.5GB 左右。再给你自己挂载的 tessdata、配置、日志留个 2–3GB 余量,一台 1 核 2G、25GB SSD 的小机就完全够个人日用。这也是为什么它特别适合放在廉价 VPS 上——像 RackNerd、Cloudcone、LisaHost 这几家常年有年付十几二十美元的开间小鸡,内存和硬盘都刚好够;要是你更在意网络质量和亚太延迟,Vultr 的按小时计费机型也能随时开随时关,跑它毫无压力。
- 纯基础处理:1 核 1G、20GB SSD 即可,年付小机首选。
- 要 OCR + 文档转换:1 核 2G、25GB SSD 起步,推荐 RackNerd / Cloudcone 的高内存年付款。
- 团队多人共用:2 核 4G,挂个域名走 HTTPS,Vultr 或 LisaHost 都行。
一行 Docker Compose 把 Stirling-PDF 跑起来
假设你已经在一台 Ubuntu/Debian 的 VPS 上装好了 Docker 和 Docker Compose(没有的话先 curl -fsSL https://get.docker.com | sh 一把梭)。先建个目录专门放它:
mkdir -p ~/stirling-pdf && cd ~/stirling-pdf
然后写一份 docker-compose.yml。下面这份是「先裸跑、不开登录」的版本,方便你第一次验证能不能用:
services:stirling-pdf:image: stirlingtools/stirling-pdf:latestcontainer_name: stirling-pdfrestart: unless-stoppedports:- "8080:8080"volumes:- ./tessdata:/usr/share/tessdata- ./configs:/configs- ./logs:/logs- ./pipeline:/pipelineenvironment:- SECURITY_ENABLELOGIN=false- SYSTEM_DEFAULTLOCALE=zh_CN- LANGS=zh_CN,en_GB
几个挂载目录简单说一下:/usr/share/tessdata 放 OCR 语言包,/configs 是你的设置和账号数据库,/logs 是日志,/pipeline 是自动化工作流。把它们挂出来,日后升级镜像数据才不会丢。
启动就一行:
docker compose up -d
等镜像拉完、容器起来,浏览器打开 http://你的服务器IP:8080 就能看到 Stirling-PDF 的界面了。第一次跑不建议急着开登录,先用着顺手再说。
用 Caddy 反代加基础认证,把 8080 关进小黑屋
这里是个关键的安全点,中文圈很多教程都漏了:千万别把 8080 端口直接裸奔在公网上。一旦你打算从外面访问,第一步就是套一层 HTTPS 反代,再加一道基础认证(basic auth),等于给门再加一把锁。
我习惯用 Caddy,因为它自动签发 Let's Encrypt 证书,配置文件还极短。先装好 Caddy,然后生成一组加密后的密码:
caddy hash-password '你自己的强密码'
它会输出一串 $2a$... 的哈希。把这段哈希填进下面的 Caddyfile:
pdf.你的域名.com {basicauth {admin 你刚生成的哈希}reverse_proxy localhost:8080}
改完 caddy reload 一下,访问 https://pdf.你的域名.com 就会被要求输入账号密码,而且全程 HTTPS 加密。这样即使 Stirling-PDF 本身没开登录,外人想碰到你的端口也得先过这一关。反过来,如果你更想要 Stirling-PDF 自己的账号体系,就把上面的 SECURITY_ENABLELOGIN 改成 true,再配上 SECURITY_INITIALLOGIN_USERNAME 和 SECURITY_INITIALLOGIN_PASSWORD,首次登录后系统会强制你改密码,默认账号是 admin / stirling,记得第一时间改掉。
让 OCR 认识中文:Tesseract + chi_sim 实战
OCR 是 Stirling-PDF 最香的功能之一——它能把扫描版的图片 PDF 变成「可选中、可搜索」的文字 PDF。底层用的是 Tesseract 引擎。中文圈最常踩的坑就是:OCR 跑了,结果中文全是乱码或者干脆没识别出来,因为语言包没装对。
标准镜像默认只带英文。要让它认中文,核心就是 LANGS 这个环境变量,把简体中文(zh_CN / chi_sim)、繁体(chi_tra)一起写上:
environment:- LANGS=zh_CN,chi_sim,chi_tra,en_GB
如果你用的是 fat 镜像,语言包会在首次启动时自动下载,可能要等几分钟;也可以手动把 chi_sim.traineddata 丢进前面挂载的 ./tessdata 目录,再 docker compose restart。验证中文 OCR 是否生效,最实在的办法是拿一份扫描版中文合同去跑「OCR PDF」功能,识别出来后,用 Ctrl+F 搜一个中文词,能搜到就说明中文语言包真的在工作。
还有一个小坑:扫描件本身太模糊、倾斜严重,Tesseract 也会「翻车」。这种时候先跑一遍 Stirling-PDF 里的「旋转/纠偏」或「提高对比度」,再 OCR,正确率会明显提升。
日常怎么用:合并、拆分、转换、去密
界面是中文的(我们设了 SYSTEM_DEFAULTLOCALE=zh_CN),顶部按功能分类,上手零门槛。给你列几个最高频的用法:
- 合并 PDF:上传多个文件,拖拽调顺序,点合并,秒下。
- 拆分 PDF:按页码区间、按每 N 页、或者按大小拆成多份。
- 格式互转:PDF 转 Word/Excel/PPT/图片,或者反过来把 Office 文档转成 PDF(靠 LibreOffice,fat 镜像自带)。
- 去密码 / 解密:如果你知道原密码,可以去掉打开密码或权限限制,方便归档。
- 压缩:大扫描件压到邮件能发的大小,默认上限 100MB,可用
SYSTEM_MAXFILESIZE调大。 - OCR:扫描件变可搜索 PDF,上面已详述。
另外它还藏了一个很实用的「Pipelines 工作流」:把「扫描→OCR→压缩→加水印」串成一条流水线,以后丢一份文件进去自动跑完,特别适合每个月都要处理一堆发票、报表的办公场景。
几个中文圈常踩的坑
- 镜像名别用错:老教程里写的
frooodle/s-pdf已经废弃,现在官方镜像是stirlingtools/stirling-pdf,别照着老文章拉错仓库。 - 内存不够 OCR 直接崩:开 OCR 就别吝啬内存,1G 是底线,2G 更稳,否则大文件处理到一半被 OOM kill。
- 中文 OCR 没效果先查语言包:九成是
LANGS没带 zh_CN,或者 tessdata 没挂出来,docker logs stirling-pdf一看便知。 - 裸端口公网暴露:8080 直接对外开放等于把工具箱送人,一定套 Caddy + 基础认证,或至少开 Stirling-PDF 自带登录。
- 忘了改默认密码:开了登录却没改 admin/stirling,等于没锁门,首次登录强制改密别跳过。
- 升级丢了数据:配置、语言包、日志都挂了卷就安全,升级只用
docker compose pull && docker compose up -d,数据都在。
把这几点记牢,Stirling-PDF 基本能稳稳跑在你的小 VPS 上,几年不操心。像 RackNerd、Cloudcone 这种年付小机跑它绰绰有余,Vultr、LisaHost 则适合对网络和地域有要求的场景。花一顿外卖钱,换一个完全私有的 PDF 工具箱,这笔买卖怎么算都值。最后再提醒一句:容器记得开 restart: unless-stopped,服务器重启后会自动拉起,你不用半夜爬起来手动物理重启,省心又不会漏掉急用的文件处理。