Papra: Plataforma minimalista de gestión y archivo de documentos

Publicado por


papra
Open Source · Self-hosted · AGPL-3.0

Papra: Plataforma minimalista de gestión y archivo de documentos

Solución open source para almacenamiento a largo plazo, búsqueda full-text y organización de documentos con soporte multi-organización

Vídeo tutorial en YouTube

Mira el vídeo completo sobre cómo instalar y usar Papra: Plataforma minimalista de gestión y archivo de documentos en el canal GENBYTE:

¿Qué es Papra: Plataforma minimalista de gestión y archivo de documentos?

Papra es una plataforma minimalista de gestión y archivo de documentos diseñada para ser simple de usar y accesible para todos. Funciona como un archivo digital para almacenamiento a largo plazo: permite subir, almacenar y gestionar documentos en un solo lugar, con la posibilidad de olvidarse de ellos y recuperarlos cuando sea necesario mediante búsqueda full-text y filtros avanzados. El proyecto está desarrollado en TypeScript bajo licencia AGPL-3.0 y cuenta con una demo en vivo en demo.papra.app (solo almacenamiento local en el navegador, sin backend).

Diseñado para auto-hospedaje sencillo mediante Docker, con arquitectura monorepo (PNPM Workspaces), frontend en SolidJS y backend en HonoJS con Drizzle ORM y Better Auth.

Características principales

Gestión de documentos

Subida, almacenamiento y gestión centralizada de documentos.

Organizaciones

Creación de organizaciones para gestionar documentos con familia, amigos o colegas.

Búsqueda avanzada

Búsqueda full-text rápida con filtros avanzados para localizar documentos al instante.

Autenticación de usuarios

Cuentas de usuario y sistema de autenticación integrado (Better Auth).

Modo oscuro

Tema oscuro para sesiones de gestión documental nocturnas.

Diseño responsivo

Funciona en todos los dispositivos, desde escritorio a móviles.

Etiquetado

Organización de documentos mediante etiquetas personalizadas.

Ingesta por email

Envío o reenvío de correos a una dirección generada para importar documentos automáticamente.

Extracción de contenido

Extracción automática de texto desde imágenes o documentos escaneados para indexación y búsqueda.

Reglas de etiquetado

Etiquetado automático de documentos basado en reglas personalizadas.

Ingesta por carpeta

Importación automática de documentos desde una carpeta vigilada.

Interfaz de línea de comandos (CLI)

Gestión de documentos desde terminal.

API, SDK y webhooks

Construcción de aplicaciones propias sobre la plataforma.

Internacionalización (i18n)

Soporte para múltiples idiomas.

Propiedades personalizadas

Definición de propiedades personalizadas por organización para almacenar información adicional sobre documentos.

Compartir documentos

Compartir documentos con usuarios externos con fecha de expiración opcional y protección por contraseña.

Requisitos del sistema

  • Docker y Docker Compose instalados
  • Generar AUTH_SECRET seguro con `openssl rand -hex 48` para producción
  • Puerto 1221 disponible en el host
  • Volumen persistente para datos (base de datos, archivos subidos, configuración)

Instalación con Docker Compose

Inicio rápido con Docker (solo prueba)

Ejecución directa de la imagen oficial para probar la plataforma. El secreto incluido es solo para pruebas; no usar en producción.

docker run -d –name papra -p 1221:1221 -e AUTH_SECRET=a-dummy-secret-for-testing-purposes-only ghcr.io/papra-hq/papra:latest

Despliegue en producción con Docker Compose

Configuración recomendada para auto-hospedaje persistente. Requiere generar AUTH_SECRET propio y montar volúmenes para datos, base de datos y archivos. Consultar la documentación oficial para variables adicionales (base de datos, email, almacenamiento S3, etc.).

version: '3.8'

services:
papra:
image: ghcr.io/papra-hq/papra:latest
container_name: papra
restart: unless-stopped
ports:
– "1221:1221"
environment:
– AUTH_SECRET=<generar-con-openssl-rand-hex-48>
# Variables adicionales según docs: DATABASE_URL, EMAIL_*, STORAGE_*, etc.
volumes:
– papra-data:/app/data
– papra-uploads:/app/uploads

volumes:
papra-data:
papra-uploads:

Acceder al proyecto

Interfaz web

Acceder a http://<IP-del-host>:1221 tras iniciar el contenedor. La primera visita guiará la creación de la cuenta de administrador y la organización inicial.

API y SDK

Endpoints REST disponibles bajo el mismo puerto para integraciones programáticas. Documentación de la API en docs.papra.app.

Casos de uso

  • Archivo digital personal de facturas, garantías, recibos y documentos importantes
  • Gestión documental compartida en familias o pequeños equipos mediante organizaciones
  • Automatización de captura de documentos vía email (facturas, contratos, notificaciones)
  • Digitalización y búsqueda de documentos en papel escaneados gracias a OCR/extracción de texto
  • Base para aplicaciones propias mediante API, SDK y webhooks
  • Cumplimiento de retención documental a largo plazo con auto-hospedaje soberano

Configuración avanzada

Configuración de base de datos

Por defecto usa SQLite (archivo en volumen). Para producción se puede configurar PostgreSQL/MySQL mediante DATABASE_URL. Ver docs.papra.app/self-hosting/using-docker.

# Ejemplo variable de entorno
DATABASE_URL=postgresql://user:pass@db:5432/papra

Configuración de email (ingesta y notificaciones)

Variables SMTP para habilitar ingesta por email y envío de notificaciones. Requiere servidor SMTP accesible.

SMTP_HOST=smtp.ejemplo.com
SMTP_PORT=587
SMTP_USER=usuario
SMTP_PASS=contraseña
[email protected]

Almacenamiento de objetos (S3 compatible)

Desplazar archivos subidos a almacenamiento S3 (MinIO, AWS S3, Cloudflare R2, etc.) en lugar del sistema de archivos local.

STORAGE_TYPE=s3
S3_ENDPOINT=https://s3.ejemplo.com
S3_BUCKET=papra-uploads
S3_ACCESS_KEY=…
S3_SECRET_KEY=…
S3_REGION=auto

Proxy inverso y TLS

Exponer mediante Nginx, Caddy o Traefik con terminación TLS. La aplicación escucha en HTTP interno puerto 1221.

# Ejemplo Caddyfile
papra.midominio.com {
reverse_proxy papra:1221
}

Gestión y mantenimiento

Actualización de imagen

Descargar la última imagen y recrear el contenedor manteniendo los volúmenes.

docker pull ghcr.io/papra-hq/papra:latest
# Con Docker Compose
docker compose pull && docker compose up -d

Copia de seguridad

Respaldar volúmenes papra-data (base de datos SQLite y configuración) y papra-uploads (archivos). Si se usa base de datos externa, seguir su procedimiento de backup.

# Ejemplo backup volúmenes
docker run –rm -v papra-data:/data -v $(pwd):/backup alpine tar czf /backup/papra-data-$(date +%F).tar.gz -C /data .
docker run –rm -v papra-uploads:/data -v $(pwd):/backup alpine tar czf /backup/papra-uploads-$(date +%F).tar.gz -C /data .

Logs y diagnóstico

Consultar logs del contenedor para troubleshooting. La aplicación usa CadenceMQ para colas de trabajos en segundo plano.

docker logs -f papra
# O con compose
docker compose logs -f papra

Migraciones de base de datos

Las migraciones se aplican automáticamente al iniciar la nueva versión. Verificar logs tras actualización para confirmar éxito.

# No se requiere comando manual; revisar logs
docker logs papra 2>&1 | grep -i migration

Stack técnico

  • TypeScript
  • SolidJS (frontend)
  • Shadcn Solid (componentes UI)
  • UnoCSS (CSS atómico)
  • Tabler Icons
  • HonoJS (backend API)
  • Drizzle ORM
  • Better Auth (autenticación)
  • CadenceMQ (cola de trabajos, desarrollado por Papra)
  • PNPM Workspaces (monorepo)
  • Docker / Docker Compose
  • GitHub Actions (CI/CD)
  • Astro + Starlight (documentación)
  • Cloudflare Pages (hosting docs)
  • Fly.io / Turso (infraestructura demo/producción)

Referencias oficiales

Apoya el canal GENBYTE

Sígueme en mis redes sociales

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *