Blog / Tutoriales / BentoPDF: toolkit de PDF autoalojado y enfocado en la privacidad
(last updated: )

BentoPDF: toolkit de PDF autoalojado y enfocado en la privacidad

Con BentoPDF puedes tener un toolkit de PDF privado y autoalojado en tu propio VPS de Contabo. Descubre cómo funciona su arquitectura del lado del cliente, cómo desplegarlo con Docker y qué tamaño de VPS te conviene.

Lectura de 9 min

En resumen. BentoPDF es un toolkit de PDF autoalojado y enfocado en la privacidad que corre por completo en tu navegador: fusionar, dividir, firmar y convertir sucede en tu propio dispositivo, no en el servidor de un proveedor. La versión autoalojada de BentoPDF se distribuye como un solo contenedor de Docker con más de 100 herramientas integradas, así que un Contabo VPS pequeño basta para correr una instancia privada para un equipo, sin que un solo PDF salga de tu infraestructura.

Si alguna vez dudaste antes de subir un contrato, un recibo de nómina o un NDA firmado a un convertidor de PDF gratuito en línea, esa duda es justo la razón por la que existe BentoPDF. Es un toolkit de PDF de código abierto construido para que el procesamiento nunca salga de la pestaña del navegador donde corre, y además se puede autoalojar, así que puedes ponerlo detrás de tu propio dominio en lugar de confiar en el de alguien más. Para un equipo legal, un departamento de RH o cualquiera que trabaje a diario con documentos de otras personas, esa diferencia entre «procesado en tu navegador» y «subido a un proveedor» es la razón para considerarlo en vez de un sitio convertidor genérico.

BentoPDF website at https://www.bentopdf.com

Por qué BentoPDF procesa todo en tu navegador

BentoPDF corre sobre JavaScript del lado del cliente y WebAssembly. Cuando fusionas dos PDFs o quitas metadatos de un escaneo, el trabajo pasa dentro del sandbox de tu propio navegador, usando bibliotecas como PDF.js para el renderizado y PDF-lib para la manipulación real de las páginas. Nada de lo que subes se envía a un servidor para procesarse, así que no hay cola del lado del servidor ni almacenamiento temporal, y ninguna línea de registro guarda que el archivo existió.

Un ejemplo práctico: abrir la herramienta Merge y soltar tres PDFs nunca dispara una solicitud de red con el contenido del archivo. El navegador lee los archivos desde el disco, une las páginas en memoria y te entrega una descarga. El único tráfico de red que BentoPDF genera para la mayoría de las herramientas es la descarga única de sus propios módulos de WebAssembly desde un CDN, y autoalojarlo elimina incluso ese paso para el conjunto básico de herramientas.

BentoPDF tool dashboard on a Contabo VPS

El toolkit cubre más de 100 herramientas en seis categorías: organizar páginas (fusionar, dividir, reordenar, extraer), editar contenido (anotar, redactar, agregar numeración de página, marca de agua), automatizar tareas repetitivas (procesamiento por lotes, flujos de trabajo), convertir a PDF (desde imágenes, documentos de Office, Markdown, EPUB), convertir desde PDF (a imágenes, formatos de Office y otras salidas), y asegurar u optimizar archivos (cifrar, descifrar, comprimir, firmar).

La versión autoalojada es funcionalmente idéntica al sitio público: cada herramienta está presente y se comporta igual, solo se quita el empaque de marketing. Incluso el OCR sigue el mismo modelo, ya que los paquetes de idioma de Tesseract cargan como WebAssembly igual que los demás motores, así que una factura escaneada se convierte en texto buscable sin que los datos de la imagen salgan de tu pantalla.

Editing a PDF with a self-hosted BentoPDF instance

Cómo desplegar BentoPDF con Docker en un VPS

Autoalojar BentoPDF significa correr su imagen de Docker en un servidor que tú controlas, así que las herramientas viven en tu propio dominio y no en un sitio público compartido. Esto necesitas primero:

  • Un VPS de Contabo con Ubuntu 22.04 o más reciente, accesible por SSH
  • Docker y Docker Compose instalados (el flujo de compra de Contabo ofrece un complemento de Docker que instala ambos de forma automática, o puedes instalarlos tú mismo con curl -fsSL https://get.docker.com | sh)
  • El puerto 3000, o el que elijas, abierto en tu firewall

El proyecto publica dos variantes de imagen. bentopdf-simple es la versión autoalojada: tiene cada herramienta del sitio público, sin la página de inicio de marketing, la sección hero ni los testimonios. bentopdf (sin sufijo) es la versión comercial, pensada para un servicio de cara al público bajo tu propia marca. Para un despliegue interno o de equipo, la versión autoalojada es la que debes usar.

La forma más rápida de empezar es un solo comando:

docker run -d -p 3000:8080 --restart unless-stopped ghcr.io/alam00000/bentopdf-simple:latest

Para algo que debe quedarse corriendo, un archivo Compose es más fácil de mantener y reiniciar:

services:
  bentopdf:
    image: ghcr.io/alam00000/bentopdf-simple:latest
    container_name: bentopdf
    ports:
      - '3000:8080'
    restart: unless-stopped

Ejecuta docker compose up -d y luego abre http://your-vps-ip:3000 en tu navegador. El contenedor escucha internamente en el puerto 8080 y corre como usuario sin privilegios de root por defecto, algo sensato para cualquier cosa accesible desde internet.

¿Prefieres Podman sobre Docker en tu distribución favorita? Cada comando de arriba funciona igual si solo cambias el nombre del binario: podman run -d -p 3000:8080 --restart unless-stopped ghcr.io/alam00000/bentopdf-simple:latest, y podman-compose up -d lee el mismo archivo Compose. Para un servidor de producción que planeas dejar corriendo a largo plazo, Podman Quadlet integra el contenedor directamente con systemd, así que se reinicia junto con el resto de tus servicios después de un reinicio, sin depender de que el daemon de Docker siga activo.

Un detalle de configuración importa antes de poner esto frente a un equipo: las herramientas de conversión de Office de BentoPDF (Word, Excel y PowerPoint a PDF) corren un build de LibreOffice compilado a WebAssembly que necesita SharedArrayBuffer, y los navegadores solo otorgan eso en un contexto seguro y aislado entre orígenes. http://localhost funciona para una prueba rápida, pero un simple http://your-vps-ip no extiende ese acceso en cuanto sales de tu propia máquina. Pon Nginx o Caddy delante del contenedor con un certificado TLS para cualquier cosa más allá de una prueba local, y los encabezados de aislamiento que necesita el navegador llegan junto con HTTPS.

Consejos de configuración para un despliegue en equipo

Vale la pena conocer algunas opciones de build y de tiempo de ejecución en cuanto el contenedor base está corriendo:

  • Marca personalizada. Define VITE_BRAND_NAME, VITE_BRAND_LOGO y VITE_FOOTER_TEXT como argumentos de build de Docker. Solo tienen efecto cuando construyes la imagen desde el código fuente (docker build --build-arg ...), no al correr la imagen prearmada de ghcr.io. Úsalos para reemplazar el nombre y el logo de BentoPDF por los tuyos antes de compartir la URL con tus compañeros.
  • Deshabilitar herramientas. Monta un config.json con un arreglo disabledTools para ocultar herramientas específicas, como la firma digital, sin reconstruir la imagen. Útil si una política de cumplimiento limita lo que una instancia interna compartida debe mostrar.
  • Actualizar la imagen. Como la versión autoalojada se descarga de un registro en vez de construirse desde el código fuente, docker compose pull && docker compose up -d trae los lanzamientos nuevos sin ningún paso manual de reconstrucción.

Por qué autoalojar BentoPDF en vez de usar herramientas de PDF gratuitas en línea

Del lado del servidor no hay nada que administrar más allá de mantener el contenedor corriendo. BentoPDF hace todo su trabajo real de PDF en el navegador de quien visita, así que el papel del VPS de Contabo aquí es angosto y específico: aloja el contenedor de Docker, no un backend de procesamiento. No hay cola que vigilar, ni volumen de almacenamiento que se llena con archivos ajenos, ni nada que responder cuando alguien pregunta dónde se conservan los documentos subidos, porque no se conserva ninguno en el servidor.

Ese papel angosto es, aun así, todo el punto. Cada sitio de PDF gratuito en línea hace la misma petición implícita: sube tu archivo a nuestro servidor para que lo procesemos y, lo prometemos, lo borremos después. Autoalojar BentoPDF quita esa petición por completo. La herramienta corre en una URL que tú controlas, respaldada por un VPS que tú controlas, y lo único que cruza la red es la página misma y los módulos de WebAssembly que carga una sola vez.

Comunicado del sitio web de BentoPDF

Para el tamaño del servidor, el nivel de entrada Core VPS le queda bien a esta carga de trabajo: el plan Cloud VPS 4 da 4 vCPU, 8 GB de RAM y 100 GB de almacenamiento SSD por cerca de $7.20 al mes, con tráfico ilimitado (sujeto a una política de uso justo) y un puerto de 200 Mbit/s. Eso es más cómputo del que necesita un contenedor que solo sirve contenido estático, porque el trabajo pesado lo hace el navegador, no el VPS.

Una nota sobre la licencia antes de que lo presentes como tu propia herramienta: BentoPDF se distribuye bajo una licencia dual. La opción AGPL-3.0 es gratuita siempre que tu despliegue (incluyendo cualquier marca o código propio que agregues) también publique su código fuente bajo AGPL. Una licencia comercial de pago único, actualmente de $79, cubre despliegues de código cerrado o propietarios donde prefieras no liberar el código de tu fork.

Preguntas frecuentes: autoalojar BentoPDF

¿BentoPDF es realmente privado?

Sí. Cada operación de PDF corre como JavaScript y WebAssembly dentro de la pestaña de tu navegador, así que los archivos nunca se suben a un servidor para procesarse. La versión autoalojada elimina por completo la última dependencia de red para el conjunto básico de herramientas. Solo un puñado de conversiones avanzadas carga bibliotecas adicionales de WebAssembly desde un CDN la primera vez que las usas, y ningún contenido de archivo forma parte de esa solicitud.

¿Cómo autoalojo BentoPDF con Docker?

Descarga la imagen de Docker de BentoPDF y córrela con un comando: docker run -d -p 3000:8080 ghcr.io/alam00000/bentopdf-simple:latest. Para una configuración que sobreviva un reinicio, usa mejor un archivo Docker Compose con restart: unless-stopped, apuntando a la misma etiqueta de imagen autoalojada. De cualquier forma, la app queda disponible en el puerto 3000 de tu servidor en segundos, sin paso de build y sin que tengas que clonar código fuente primero.

¿Necesito un VPS potente para correr BentoPDF?

No. Como BentoPDF hace su procesamiento de PDF en el navegador de quien visita en vez de en el servidor, el VPS solo necesita servir un contenedor ligero y archivos estáticos. Un Core VPS de entrada con 4 vCPU y 8 GB de RAM maneja sin problema el tráfico de un equipo pequeño. Pagas por uptime confiable, no por poder de cómputo, cuando eliges un plan para herramientas de PDF autoalojadas como esta.

Compartir 𝕏 in