雨云搭建 Stirling-PDF 私有PDF工具箱

用雨云 KVM 云服务器 Docker 自建 Stirling-PDF,50+ 种 PDF 处理功能私有化,敏感文件不再上传第三方
发布于 更新于
3

把 PDF 拆分、合并、压缩、加水印、OCR 识别这些活儿交给在线网站,最大的问题不是收费,而是你把合同、简历、发票这类敏感文件上传到了别人的服务器。Stirling-PDF 是一个开源的自托管 PDF 工具箱,一个 Docker 容器就能跑起 50 多种 PDF 处理功能,文件全程只在你自己的服务器上流转。本文用雨云 KVM 云服务器从零把它部署好,并配好 HTTPS 和访问密码。

为什么值得自建一个 PDF 工具箱

在线 PDF 工具的套路大同小异:免费版限制文件大小和次数,处理完的文件在对方服务器上停留多久、有没有被留存,普通用户无法核实。对经常处理合同、标书、证件扫描件的人来说,这是实打实的数据外泄风险。

Stirling-PDF 的优势在于功能密度:合并、拆分、旋转、压缩、格式转换(PDF 转图片/Word/文本)、加解密、加水印、页码、签名、OCR 文字识别,全部在同一个 Web 界面里完成,处理过程不出服务器。它基于 Java + LibreOffice + Tesseract 实现,官方 Docker 镜像把依赖都打包好了,部署门槛很低。

服务器准备

Stirling-PDF 带 OCR 和格式转换组件,比一般轻量工具吃内存,建议至少 2G 内存起步;如果只用合并拆分等基础功能,1 核 1G 也能跑 lite 版镜像。

我这次用的是雨云的 KVM 云服务器(详情见 雨云官网入口),选宁波或深圳节点国内访问快,系统装 Debian 12。下单时优惠码填 admin01 可以打五折,雨云支持 7 天无理由退款,跑不满意可以退。如果还没想好怎么挑配置,可以先看这篇 雨云 VPS 选购与上手指南

装好系统后先把 Docker 备齐:

curl -fsSL https://get.docker.com | bash
systemctl enable --now docker

Docker 部署 Stirling-PDF

新建目录和 compose 文件:

mkdir -p /opt/stirling && cd /opt/stirling

docker-compose.yml 内容:

services:
  stirling-pdf:
    image: stirlingtools/stirling-pdf:latest
    container_name: stirling-pdf
    restart: unless-stopped
    ports:
      - "127.0.0.1:8080:8080"
    volumes:
      - ./trainingData:/usr/share/tessdata
      - ./configs:/configs
    environment:
      - DOCKER_ENABLE_SECURITY=true
      - SECURITY_ENABLELOGIN=true
      - LANGS=zh_CN

两点说明:

  • DOCKER_ENABLE_SECURITYSECURITY_ENABLELOGIN 同时开启后,Stirling-PDF 会启用登录页,避免工具箱裸奔在公网上被人白嫖算力。
  • 端口绑在 127.0.0.1,只允许通过后面的 Nginx 反代访问。

启动:

docker compose up -d

首次启动会初始化默认账号 admin / stirling,登录后第一件事就是在右上角账户设置里改掉默认密码。

中文 OCR 语言包

默认镜像只带英文 OCR。要识别中文扫描件,下载 Tesseract 中文训练数据放进挂载目录:

cd /opt/stirling/trainingData
wget https://github.com/tesseract-ocr/tessdata/raw/main/chi_sim.traineddata
docker restart stirling-pdf

重启后在 OCR 功能页的语言下拉框里就能选到「chi_sim」,对清晰的打印体扫描件识别率相当不错。

Nginx 反代与 HTTPS

PDF 上传走明文 HTTP 等于把文件内容直接暴露在链路上,HTTPS 必须配。安装 Nginx 和 certbot 后写反代配置:

server {
    listen 443 ssl;
    server_name pdf.example.com;
    ssl_certificate /etc/letsencrypt/live/pdf.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/pdf.example.com/privkey.pem;
    client_max_body_size 200m;
    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

注意 client_max_body_size 一定要调大,Nginx 默认 1M 的上传限制会让稍大一点的 PDF 直接报 413 错误,这是部署 Stirling-PDF 最常见的坑。

踩坑记录

  • OCR 或转换任务卡住不动:多半是内存不够被 OOM 杀了进程,docker stats 观察一下峰值,2G 内存以下建议避开大文件 OCR,或换 stirling-pdf:latest-ultra-lite 镜像只用基础功能。
  • 中文文件名乱码:老版本镜像存在此问题,把镜像更新到近期版本即可解决。
  • 处理大 PDF 很慢:OCR 是 CPU 密集型任务,雨云上多加一个核心比加内存对速度提升更明显。

日常我把 Stirling-PDF 和之前部署的 AList 网盘挂载 配合使用:扫描件先归档到 AList 管理的存储里,需要处理时下载下来丢进 Stirling-PDF,处理完再传回去,全链路不经过任何第三方在线工具。服务多了以后,入口可以统一收进 Heimdall 导航页

合规提醒

自建 PDF 工具仅限处理自有或已获授权的文件。依据《网络安全法》《个人信息保护法》《数据安全法》,处理包含他人个人信息的文档时应取得合法授权,不得利用 OCR 等功能非法收集、加工、出售个人信息。服务器登录、HTTPS 与访问控制请务必配置到位,避免敏感文件因配置疏漏泄露。

小结

Stirling-PDF 用一个容器解决了 PDF 处理的隐私焦虑,功能覆盖面比大多数付费在线工具还全。雨云 KVM 2 核 2G 档位足够家用,优惠码 admin01 五折入手,配好登录、HTTPS 和中文 OCR 后,就是一台完全属于自己的 PDF 工作站。

常见问题(FAQ)

Stirling-PDF 对服务器配置要求高吗?
基础功能(合并/拆分/压缩)1核1G 可跑 lite 版镜像;要用 OCR 和格式转换建议 2核2G 起,OCR 属 CPU 密集型任务,加核心比加内存对速度提升更明显。
怎么让 Stirling-PDF 识别中文扫描件?
下载 Tesseract 的 chi_sim.traineddata 放入挂载的 trainingData 目录并重启容器,OCR 页面语言选 chi_sim 即可。默认镜像只带英文语言包。
上传大 PDF 报 413 错误怎么办?
是 Nginx 默认 1M 上传限制导致的,在反代配置里把 client_max_body_size 调到 200m 左右并 reload Nginx 即可,这是部署 Stirling-PDF 最常见的坑。
雨云优惠码 admin01 怎么用?
在雨云下单页的优惠码/推广码输入框填 admin01 即享五折,以结算页显示为准。雨云 KVM 云服务器支持 7 天无理由退款,可以先低配试跑。

本文由作者原创/授权发布于极跃圈(jiyueip.com)未经许可,禁止转载。题图来自Unsplash,基于CC0协议。

声明:极跃圈(JIYUEIP.com)内网友所发表的所有内容及言论仅代表其本人,并不反映任何极跃圈(JIYUEIP.com)之意见及观点。

0 讨论
热门最新
总结
暂无总结
0 / 600

用雨云 KVM 云服务器 Docker 自建 BookStack 团队文档/wiki,BookStack+MySQL 部署、Nginx 反代 HTTPS、书架层级与权限。含默认密码坑、413 上传限制与优惠码 admin01 五折。

用雨云 KVM 云服务器 Docker 自建 Outline 团队文档协作(Outline+PostgreSQL+Redis+对象存储),配 Nginx 反代 HTTPS、空间权限与备份。含环境变量坑与优惠码 admin01 五折。

用雨云 KVM 云服务器 Docker 部署 Wiki.js + PostgreSQL,搭一个自己托管的私有知识库,文档可接 Git 后端自动备份。含内存调优、反代 HTTPS 与优惠码 admin01 五折。

用雨云 KVM 云服务器 Docker 自建 Plausible 隐私统计,Postgres+事件处理+HTTPS 反代,跟踪代码嵌入网站。含 SECRET_KEY_BASE 坑与优惠码 admin01 五折。

用雨云 KVM 云服务器 Docker 部署 Code Server,浏览器里直接写代码、跑终端、调端口,环境只在服务器维护一份。含 HTTPS 反代、强密码安全与优惠码 admin01 五折。