Tropic Host

在 VPS 上部署 Stirling PDF:安装自己的 PDF 编辑器

阅读约需 9 分钟
Tropic
在 VPS 上部署 Stirling PDF:安装自己的 PDF 编辑器

Stirling PDF:如何在 VPS 上安装自己的 PDF 编辑器

为了合并合同与附件、压缩护照扫描件或隐藏付款信息,许多人会把文档上传到随手找到的第一个在线服务。与此同时,签名、地址、账单以及其他机密数据也可能随文件一起发送给第三方网站。

Stirling PDF 提供了另一种方式。它是一款包含数十种 PDF 工具的 Web 应用,可以部署在自己的 VPS 上。管理界面可通过电脑或手机浏览器打开,而文档则由你的服务器处理。

下面将介绍 Stirling PDF 最有意思的功能、服务器配置要求,以及如何通过 Docker Compose 在 Ubuntu 上完成安装,并启用身份验证和 HTTPS。

什么是 Stirling PDF

Stirling PDF 是一个用于编辑和处理 PDF 的自托管平台。它集成了 55 种以上的操作,包括合并和拆分文件、调整页面顺序、压缩、格式转换、OCR、签名、水印、文档对比,以及删除元数据和机密信息。

该服务既可以作为桌面应用、云产品使用,也可以部署在自己的服务器上。在自托管模式下,文件由你自己的 Stirling PDF 实例处理,并且可以通过密码和 HTTPS 限制访问。免费服务器版本适用于最多五名用户的小组;更大的团队以及部分企业功能需要使用付费版本。

它与普通在线转换工具最大的区别在于控制权。你可以自行选择服务商、服务器位置、用户和访问规则。同时,也不需要为每项操作单独寻找网站:一个界面就能取代用于压缩、转换、签名和 OCR 的多个服务。

Stirling PDF 最有意思的功能

可视化页面处理

在 Multi-Tool 模式下,文档会以缩略图网格显示。你可以拖动、旋转、删除、拆分页面,将页面插入指定位置,或只导出选中的页面。文件只需上传一次,并且支持撤销和重做操作。

扫描件 OCR

OCR 会为扫描版 PDF 添加文本层。处理完成后,可以在文档中搜索词语、选择并复制文本。它还支持校正倾斜页面、去除噪点和增强对比度。若要识别俄语,需要单独添加 Tesseract 语言包 rus.traineddata

安全删除敏感数据

在账号号码上盖一个黑色矩形,并不一定会删除原始文字。Redact 工具可以从 PDF 结构中真正移除匹配内容,而不是仅仅用可见图层遮住它们。你既可以手动标记区域,也可以通过关键词或正则表达式,在整份文档中查找电话号码、电子邮箱、银行卡号以及其他数据。

版本对比与移动扫描器

Compare 可以显示合同、报告或技术任务书两个版本之间新增或删除了哪些词语。对于纸质文档,还可以使用移动扫描器:电脑上会显示二维码,手机可将照片直接上传到当前会话,临时文件会在下载后或十分钟无操作后自动删除。

自动化与 API

Automate 的工作方式类似 PDF 宏。例如,可以预先保存以下处理流程:

OCR → 删除空白页 → 压缩 → 添加水印 → 设置密码

之后,同一流程就可以应用于新文件,无需重复执行每个步骤。Stirling PDF 还支持处理监控文件夹中的文件,并提供带有内置 Swagger 文档的 REST API。

Stirling PDF 需要什么配置的 VPS

处理 PDF 所需的内存可能远大于源文件本身占用的空间。OCR、将页面转换为图像,以及通过 LibreOffice 转换办公文档,尤其消耗资源。

测试部署使用 2 GB RAM 即可,但长期使用更建议选择:

  • 2 vCPU;
  • 4 GB RAM;
  • SSD 或 NVMe 上至少 10–20 GB 可用空间;
  • Ubuntu 22.04 或 24.04。

如果多名用户同时运行 OCR 或格式转换,选择 4 vCPU 和 8 GB RAM 会更合理。性能较弱的服务器可以使用 latest-ultra-lite 镜像,而 latest-fat 包含额外字体和工具,可获得更高质量的转换效果。对大多数用户来说,标准的 latest 镜像已经足够。

通过 Docker Compose 安装 Stirling PDF

下面的配置让容器只监听本地接口。之后,外部访问将通过带 HTTPS 的 Nginx 转发,因此 8080 端口不会向整个互联网开放。

第 1 步:安装 Docker

ssh root@SERVER_IP
apt update && apt upgrade -y
apt install -y curl
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
rm get-docker.sh

检查安装结果:

docker --version
docker compose version

第 2 步:创建 Docker Compose 配置

mkdir -p /opt/stirling-pdf/{configs,logs,pipeline}
cd /opt/stirling-pdf
nano docker-compose.yml

添加以下配置:

services:
  stirling-pdf:
    image: docker.stirlingpdf.com/stirlingtools/stirling-pdf:latest
    container_name: stirling-pdf
    restart: unless-stopped
    ports:
      - "127.0.0.1:8080:8080"
    volumes:
      - ./configs:/configs
      - ./logs:/logs
      - ./pipeline:/pipeline
    environment:
      - SECURITY_ENABLELOGIN=true
      - SYSTEM_DEFAULTLOCALE=ru-RU
      - SYSTEM_GOOGLEVISIBILITY=false

启动服务:

docker compose up -d
docker compose ps

如需诊断,请使用:

docker compose logs --tail=100 stirling-pdf

第 3 步:首次登录

在配置域名之前,可通过 SSH 隧道打开管理界面。该命令需要在你的电脑上运行:

ssh -L 8080:127.0.0.1:8080 root@SERVER_IP

打开 http://localhost:8080。首次登录的默认账号为 admin,密码为 stirling。请立即在账号设置中修改密码。

连接域名并配置 HTTPS

为类似 pdf.example.com 的地址创建一条 A 类型 DNS 记录,并将其指向服务器 IP。然后安装 Nginx 和 Certbot:

apt install -y nginx certbot python3-certbot-nginx
nano /etc/nginx/sites-available/stirling-pdf

添加以下配置,并替换域名:

server {
    listen 80;
    server_name pdf.example.com;
    client_max_body_size 500M;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_read_timeout 300s;
    }
}

启用站点并获取证书:

ln -s /etc/nginx/sites-available/stirling-pdf /etc/nginx/sites-enabled/stirling-pdf
nginx -t
systemctl reload nginx
certbot --nginx -d pdf.example.com

现在,Stirling PDF 已可通过 HTTPS 访问,而内部 8080 端口仍保持关闭。若要处理大于 500 MB 的文件,请提高 client_max_body_size 的值。

如何添加俄语 OCR

创建目录,并下载英语和俄语 Tesseract 语言包:

cd /opt/stirling-pdf
mkdir -p tessdata
curl -L -o tessdata/eng.traineddata \
  https://raw.githubusercontent.com/tesseract-ocr/tessdata_fast/main/eng.traineddata
curl -L -o tessdata/rus.traineddata \
  https://raw.githubusercontent.com/tesseract-ocr/tessdata_fast/main/rus.traineddata

docker-compose.yml 文件的 volumes 部分添加一行:

      - ./tessdata:/usr/share/tessdata

应用更改并检查可用语言:

docker compose up -d
docker exec stirling-pdf tesseract --list-langs

列表中应出现 engrus

安全、更新与限制

正式使用前,请修改默认密码,保持身份验证开启,不要公开 8080 端口,并在防火墙中仅允许 SSH、HTTP 和 HTTPS。建议将 configspipeline 目录纳入备份。Stirling PDF 的分析功能只有在用户同意后才会启用,并且管理员可以将其完全关闭。

更新方法如下:

cd /opt/stirling-pdf
docker compose pull
docker compose up -d

Stirling PDF 可以覆盖大多数日常任务,但在 PDF 与办公文档格式之间转换时,并不总能保留复杂排版。OCR 无法识别表格和公式的结构,对手写文字或字号很小的文字,识别质量也有限。为了获得良好效果,建议使用清晰、分辨率约为 300 DPI 的扫描件。

在 tropic.host 的 VPS 上运行 Stirling PDF

该服务不需要显卡:更重要的是内存、稳定的处理器性能和快速硬盘。服务器位置最好靠近用户,因为大文件需要先上传到服务器,再下载回来。

个人实例或小型团队通常使用 2 vCPU、4 GB RAM 的 Linux VPS 即可。在 tropic.host 的 VPS 上,可以安装 Ubuntu,运行上文提供的 Docker Compose 配置,并将管理界面部署到独立子域名。如果同一台服务器上还运行其他容器,额外的内存余量尤其重要。

简要总结

Stirling PDF 可以把 VPS 变成你自己的文档 Web 服务。它集成了数十种工具,并支持 OCR、真正删除机密数据、版本对比、移动扫描、自动化和 API。

自行部署它的主要原因,是获得对文件的控制权。对于合同、账单、表格和内部文档,一个启用了身份验证和 HTTPS 的受保护实例,比一组随机的在线转换工具更方便。

FAQ

Stirling PDF 免费吗?

是。免费的自托管版本最多支持五名用户。更大的团队以及需要企业功能的组织,需要使用付费版本。

文档会离开我的服务器吗?

在自托管模式下,文档由你自己的 Stirling PDF 实例处理。最终安全性取决于 VPS 配置、HTTPS、密码、更新以及管理员访问权限。

2 GB RAM 够用吗?

用于测试和轻量操作时够用。长期使用、OCR 和格式转换建议选择 4 GB RAM;如果有并发负载,则需要更多内存。

必须使用域名吗?

不是。可以通过 IP 地址或 SSH 隧道访问服务。域名主要用于提供方便、固定的访问地址,以及正确配置 HTTPS。

支持俄语 OCR 吗?

支持。需要将 rus.traineddata 文件添加到 Tesseract 目录,并挂载到容器中。