BentoPDF Simple Mode 完全指南:面向自托管部署的去营销化构建(bentopdf-simple)

发布时间:2026/9/21 15:15:56
BentoPDF Simple Mode 完全指南:面向自托管部署的去营销化构建(bentopdf-simple) 前端【免费下载链接】bentopdfThe Privacy First PDF Toolkit项目地址https://gitcode.com/gh_mirrors/be/bentopdf点击查看免费下载Simple Mode 是 BentoPDFThe Privacy First PDF Toolkit为自托管Self-Hosted部署场景提供的一套构建模式对应bentopdf-simple镜像。它并非功能裁剪的精简版merge、split、edit、sign、OCR、Office 转换等全部 PDF 工具在两个构建中行为完全一致唯一区别在于隐藏了只在 bentopdf.com 公网站点或商业公开部署中有意义的营销型 UIHero、FAQ、Testimonials、Footer 等。读完本文你将掌握 Simple Mode 的隐藏内容清单、五种启用方式、本地对比测试方法、生产部署形态Docker Compose、Podman Quadlet以及它在 Vite 构建管线中的底层实现原理。什么是 Simple Mode功能相同仅隐藏营销壳Simple Mode 的定位在 SIMPLE_MODE.md 中定义得非常清晰它是自托管构建bentopdf-simple的动力来源与支撑 bentopdf.com 的 Commercial build功能上完全一致。两者的唯一差异是围绕工具周边的营销 UI而非工具本身。Simple Mode 不是lite版。每一个 PDF 工具——合并、拆分、编辑、签名、OCR、Office 转换以及其他所有工具——在两个构建中都完全相同地工作。唯一的区别是工具周围的营销 UI。在镜像生态上项目维护两个构建构建镜像适用场景Self-Hosted buildSimple Modeghcr.io/alam00000/bentopdf-simple:latest推荐团队/组织内部工具、自托管私有部署Commercial buildghcr.io/alam00000/bentopdf:latestbentopdf.com 自身以及持有商业许可的公开面向用户的 PDF 部署从源码侧看Simple Mode 不是一个独立的代码分支而是同一套代码库在构建期通过SIMPLE_MODE环境变量切换的产物Vite 构建配置vite.config.ts在define阶段将__SIMPLE_MODE__编译为布尔常量同时 Rollup 的入口文件也会在 Simple Mode 下从index.html切换为simple-index.html。这一点决定了后文构建期生效、运行期不生效的关键特性。Simple Mode 隐藏了什么启用后Simple Mode 会隐藏以下 bentopdf.com 专属营销 UI导航栏Navigation bar含营销内容的 Hero 区块Features 区块Security/compliance 区块FAQ 区块Testimonials 区块Support 区块Footer同时页面标题更新为PDF Tools工具区在页面中变得更加突出。没有任何 PDF 工具被移除或禁用。这套隐藏逻辑在源码中有两处实现首页src/js/main.ts当__SIMPLE_MODE__为真时hideBrandingSections()会逐个隐藏hero-section、features-section、security-compliance-section、faq-accordion、testimonials-section、support-section、GitHub 链接以及带.hide-section的Used by companies区块并把document.title设为品牌名 - PDF Tools同时重写工具标题与副标题的样式使其更加醒目。工具页src/js/utils/simple-mode-footer.ts在__SIMPLE_MODE__下所有section中标题包含 How It Works、Related PDF Tools、Related Tools、Frequently Asked Questions 的区块都会被隐藏并在simple-mode-lang-switcher容器中注入语言切换器。此外src/js/main.ts 中 GitHub Star 计数器在__SIMPLE_MODE__下也被跳过!__SIMPLE_MODE__ !__DISABLE_GITHUB_STARS__才发起api.github.com请求这从代码层面印证了 README 中Simple Mode 构建总是跳过 Star 计数器的说明。五种启用方式方法一直接使用预构建的 Simple Mode 镜像推荐GitHub Container Registry推荐# Docker docker run -p 3000:8080 ghcr.io/alam00000/bentopdf-simple:latest # Podman podman run -p 3000:8080 ghcr.io/alam00000/bentopdf-simple:latestDocker Hub# Docker docker run -p 3000:8080 bentopdfteam/bentopdf-simple:latest # Podman podman run -p 3000:8080 docker.io/bentopdfteam/bentopdf-simple:latest或使用 Docker Compose / Podman Composeservices: bentopdf: # 使用 GitHub Container Registry推荐 image: ghcr.io/alam00000/bentopdf-simple:latest # 或使用 Docker Hub # image: bentopdfteam/bentopdf-simple:latest container_name: bentopdf restart: unless-stopped ports: - 3000:8080仓库根目录的 docker-compose.yml 默认镜像正是ghcr.io/alam00000/bentopdf-simple:latest即开箱即用的自托管形态。方法二Docker Compose 本地构建docker compose -f docker-compose.dev.yml build --build-arg SIMPLE_MODEtrue docker compose -f docker-compose.dev.yml up -ddocker-compose.dev.yml 中已预留了SIMPLE_MODE构建参数注释说明false为默认模式、true为 Simple Mode直接通过--build-arg覆盖即可。方法三Docker Build 直接构建docker build --build-arg SIMPLE_MODEtrue -t bentopdf-simple . docker run -p 3000:8080 bentopdf-simpleDockerfile 与 Dockerfile.nonroot 均声明了ARG SIMPLE_MODEfalse并ENV SIMPLE_MODE$SIMPLE_MODE构建阶段会在该环境变量下执行npm run build:with-docs。Dockerfile.nonroot额外支持 LSIO 风格的PUID/PGID环境变量用于以非 root 身份运行。方法四npm 脚本本地开发最省事npm run serve:simple该命令在 package.json 中定义为serve:simple: SIMPLE_MODEtrue npm run build npm run preview -- --port 3000它会自动完成设置SIMPLE_MODEtrue以 Simple Mode 构建整个项目在http://localhost:3000上提供构建产物方法五环境变量 手动构建export SIMPLE_MODEtrue npm run build npx serve dist -p 3000注意npm run build本身是一条很长的流水线package.json先生成博客与静态工具链接再tsc类型检查、vite build、SEO 页面增强最后依次执行 i18n 页面生成、sitemap、安全响应头与 SEO 审计脚本。其中安全响应头生成scripts/generate-security-headers.mjs和打包脚本scripts/package-dist.js都会读取SIMPLE_MODE来决定产物的行为因此该环境变量必须在整个构建流程启动前设置。本地测试 Simple Mode方法一npm 脚本开发最省事npm run serve:simple自动构建并在http://localhost:3000上提供 Simple Mode 页面。方法二预构建镜像生产验证最省事# Docker - 拉取并运行 Simple Mode 镜像 docker pull ghcr.io/alam00000/bentopdf-simple:latest docker run -p 3000:8080 ghcr.io/alam00000/bentopdf-simple:latest # Podman podman pull ghcr.io/alam00000/bentopdf-simple:latest podman run -p 3000:8080 ghcr.io/alam00000/bentopdf-simple:latest浏览器打开http://localhost:3000即可。方法三本地构建并测试# 以 Simple Mode 构建 SIMPLE_MODEtrue npm run build # 提供构建产物 npx serve dist -p 3000浏览器打开http://localhost:3000。方法四两个构建并排对比# Commercial buildbentopdf.com 的外观 docker run -p 3000:8080 ghcr.io/alam00000/bentopdf:latest # Self-Hosted buildSimple Mode docker run -p 3001:8080 ghcr.io/alam00000/bentopdf-simple:latest # Podman 用户将 docker 替换为 podmanCommercial buildhttp://localhost:3000Self-Hosted buildhttp://localhost:3001验证清单如何确认 Simple Mode 生效当 Simple Mode 正常工作时你应该看到✅ 干净的 PDF Tools 头部无营销 Hero 区块✅ Select a tool to get started 副标题✅ 工具搜索栏✅ 按分类组织的全部 PDF 工具卡片❌ 无导航栏❌ 无 The PDF Toolkit built for privacy 的 Hero 区块❌ 无 Features、FAQ、Testimonials 或 Footer 区块PDF Tools 与 Select a tool to get started 这两个文案来自 i18n 的simpleMode.title与simpleMode.subtitle见 public/locales/en/common.json且随data-i18n属性在运行时随语言切换也就是说 Simple Mode 的头部文案同样支持多语言。可用容器镜像一览Self-Hosted buildSimple Mode—— 自托管推荐GitHub Container Registry推荐ghcr.io/alam00000/bentopdf-simple:latestghcr.io/alam00000/bentopdf-simple:v1.0.0带版本号Docker Hubbentopdfteam/bentopdf-simple:latestbentopdfteam/bentopdf-simple:v1.0.0带版本号Commercial build —— bentopdf.com 与商业许可持有者使用包含完整的营销站点Hero/FAQ/Testimonials/Footer。只有当你明确想要 bentopdf.com 的外观时才拉取该镜像——例如你在商业许可下运行一个公开面向用户的 PDF 部署。GitHub Container Registry推荐ghcr.io/alam00000/bentopdf:latestghcr.io/alam00000/bentopdf:v1.0.0带版本号Docker Hubbentopdfteam/bentopdf:latestbentopdfteam/bentopdf:v1.0.0带版本号生产部署示例Docker Compose / Podman Composeservices: bentopdf: image: ghcr.io/alam00000/bentopdf-simple:latest # 推荐 # image: bentopdfteam/bentopdf-simple:latest # 备选Docker Hub container_name: bentopdf restart: unless-stopped ports: - 80:8080 environment: - PUID1000 - PGID1000PUID/PGID环境变量由 Dockerfile.nonroot 支持LSIO 风格通过 entrypoint.sh 在启动时以指定 UID/GID 运行 nginx。Podman QuadletLinux Systemd创建~/.config/containers/systemd/bentopdf-simple.container[Unit] DescriptionBentoPDF Simple Mode Afternetwork-online.target [Container] Imageghcr.io/alam00000/bentopdf-simple:latest ContainerNamebentopdf-simple PublishPort80:8080 AutoUpdateregistry [Service] Restartalways [Install] WantedBydefault.target启用并启动systemctl --user daemon-reload systemctl --user enable --now bentopdf-simpleAutoUpdateregistry让 Quadlet 可以跟随 registry 的镜像标签自动更新适合长期无人值守的自托管节点。底层原理SIMPLE_MODE 如何参与构建Simple Mode 的实现完全发生在构建期理解这一点对排查为什么环境变量没生效至关重要。相关证据集中在 vite.config.ts入口切换build.rollupOptions.input.main在SIMPLE_MODE true时指向 simple-index.html否则指向index.html。也就是说 Simple Mode 下首页是专用的精简入口模板而不是事后用 CSS/JS 擦除内容。编译期常量define.__SIMPLE_MODE__被编译为JSON.stringify(process.env.SIMPLE_MODE true)因此源码中的if (__SIMPLE_MODE__)分支会在打包时被 Tree-shaking/死代码消除处理。这正是文档Simple Mode 使用死代码消除以获得更小的 bundle这一说法的依据。产物覆盖flattenPagesPlugin在SIMPLE_MODE true且存在simple-index.htmlbundle 时将产物中的simple-index.html重命名为index.html从而保证部署后访问根路径即是精简首页。运行时兜底src/js/main.ts 中的hideBrandingSections()作为运行时第二道保险隐藏仍在 DOM 中的各营销区块src/js/utils/simple-mode-footer.ts 则负责工具页上的 How It Works、Related PDF Tools、FAQ 等区块清理与语言切换器注入。自定义入口模板的结构simple-index.html 展示了精简首页的完整结构一个极简的深色导航条仅品牌 Logo 与名称可通过VITE_BRAND_NAME/VITE_BRAND_LOGO定制、居中的 PDF Tools 标题、带键盘快捷键提示CtrlK/⌘K的搜索框、按分类渲染的工具卡片网格#tool-grid以及处理中/告警/预览/设置等模态框。它复用了 src/partials/settings-modal.html 与 src/partials/warning-modal.html 两个 Handlebars 局部模板说明 Simple Mode 并不是一套独立的简化工具集而是与主构建共享全部工具实现与模态组件。与 BASE_URL / 品牌定制的组合Simple Mode 可以与其他构建期选项叠加使用。例如 README 中给出了同时设置BASE_URL与SIMPLE_MODE的示例docker build \ --build-arg SIMPLE_MODEtrue \ --build-arg BASE_URL/pdf/ \ -t bentopdf-simple . docker run -p 3000:8080 bentopdf-simple品牌化VITE_BRAND_NAME、VITE_BRAND_LOGO、VITE_FOOTER_TEXT在完整模式与 Simple Mode 下均可用simple-index.html 中的导航条与页脚模板都通过 Handlebars 条件渲染读取这些变量语言环境变量VITE_DEFAULT_LANGUAGE与DISABLE_GITHUB_STARS也可与 Simple Mode 组合。此外DISABLE_TOOLS构建参数以逗号分隔的工具 ID 列表在两种模式下都可用于禁用指定工具——Simple Mode 只隐藏营销 UI工具层面的启用/禁用仍由部署者通过构建参数独立控制。重要注意事项预构建镜像Simple Mode 请使用ghcr.io/alam00000/bentopdf-simple:latest推荐环境变量生效时机SIMPLE_MODEtrue只在构建时生效运行时不生效。如果你docker run时设置-e SIMPLE_MODEtrue页面不会有任何变化——因为该值在镜像构建阶段已被编译进产物__SIMPLE_MODE__常量与入口选择都已固定。需要修改该配置时请重新构建镜像或换用预构建的bentopdf-simple镜像。构建期优化Simple Mode 通过死代码消除获得更小的 bundle功能一致性所有 PDF 工具在两种模式下工作方式完全相同延伸阅读自托管部署总览与更多镜像选择docs/self-hosting/index.md、docs/self-hosting/docker.md静态托管无需容器方式STATIC-HOSTING.md品牌定制与构建参数完整表格README.md--simple-mode参数默认 off可与BASE_URL、VITE_DEFAULT_LANGUAGE等组合源码级实现vite.config.ts、src/js/main.ts、src/js/utils/simple-mode-footer.ts赞分享前端【免费下载链接】bentopdfThe Privacy First PDF Toolkit项目地址https://gitcode.com/gh_mirrors/be/bentopdf点击查看免费下载相关推荐BentoPDF自托管完整指南在Docker、Vercel和Netlify上部署完整教程BentoPDF自托管完整指南在Docker、Vercel和Netlify上部署完整教程 BentoPDF是一个隐私优先的PDF工具包提供超过50种PDF处前端BentoPDF 静态托管实战指南基于 Netlify、Vercel 与 GitHub Pages 的自托管部署与 SEO 控制BentoPDF 静态托管实战指南基于 Netlify、Vercel 与 GitHub Pages 的自托管部署与 SEO 控制 BentoPDF 是一款「隐前端如何快速搭建Sentry自托管系统面向开发者的完整部署指南如何快速搭建Sentry自托管系统面向开发者的完整部署指南 在当今软件开发中错误监控和性能追踪已成为确保应用稳定性的关键环节。Sentry自托管系统提供了一运维云原生可观测性创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询