Skip to main content

Almacenamiento propio (S3 autohospedado)

La secuencia BYOS (url entrada + output_url salida) solo necesita almacenamiento que hable el protocolo S3 (PUT/GET con URL prefirmadas). No tiene que ser AWS S3 o Cloudflare R2: cualquier servidor compatible con S3 que pueda ejecutar usted mismo funciona igual, con el mismo AWS/S3 SDK que ya conoce para generar URL firmadas.
API de markpdf no sabe ni le importa qué implementación de almacenamiento hay detrás de url/output_url. Solo necesita un URL firmado para hacer GET (entrada) o PUT (salida). Todo lo que aparece en esta página sucede en su infraestructura, no dentro de API.

Cuando te conviene

  • Quiere mantener los documentos de sus usuarios en su propio VPS/centro de datos por motivos de cumplimiento o costos.
  • Ya tienes un servidor con mucho disco/red y no quieres pagar la salida de un proveedor de nube.
  • Estás en el desarrollo local y no quieres depender de las credenciales de un grupo real.
Si ya usa S3, R2, GCS o Supabase Storage y le funciona bien, no es necesario migrar; esta página es para aquellos que desean evitar esa dependencia.

Opciones compatibles con S3 que puedes autohospedar

Todos exponen el mismo protocolo, por lo que el código que genera las URL firmadas (getSignedUrl / generate_presigned_url) es intercambiable entre ellas y S3/R2. Solo cambia endpoint, credenciales y forcePathStyle/s3ForcePathStyle.

Genere URL firmadas en su propio servidor

Utilice el AWS SDK normal que apunta al endpoint de su servidor autohospedado. Funciona igual con MinIO, Garage, SeaweedFS o Ceph RGW.
Con las URL generadas, el flujo es el mismo de siempre:
Consulte output_url y Compresión de salida.

Notas prácticas

forcePathStyle (o s3ForcePathStyle en SDK más antiguos) casi siempre es necesario contra MinIO/Garage/SeaweedFS: estos servidores no admiten el estilo bucket.endpoint de forma predeterminada, solo endpoint/bucket.
https debe poder acceder a su servidor de almacenamiento desde donde se ejecuta API (no localhost o una IP privada, a menos que haya implementado API en su propia red). Si el host no se puede resolver públicamente, API no podrá hacer GET/PUT contra url/output_url, y la conversión fallará con 400/502.
  • Coloque TLS delante de su servidor de almacenamiento (proxy inverso con Let’s Encrypt, por ejemplo): las URL firmadas viajan a través de la red pública.
  • Vence las URL firmadas en el tiempo mínimo razonable (minutos, no días); genera uno nuevo para cada conversión.
  • Si migra desde S3/R2 a su propio almacenamiento más adelante, solo cambie endpoint y las credenciales; el resto del código (URL firma, llamando a API) no cambia.