Cómo instalar y configurar Paperless-ngx en un VPS: guía de gestión documental self-hosted
TL;DR
Paperless-ngx es un potente sistema de gestión documental (DMS) de código abierto que convierte sus papeles físicos en un archivo digital indexable con capacidad de búsqueda de texto completo. En esta guía, analizaremos el proceso de despliegue del sistema basado en Docker, configuraremos el reconocimiento automático de texto (OCR), conectaremos el acceso seguro a través de HTTPS y organizaremos un sistema de copias de seguridad. Al final, obtendrá una nube privada para documentos, accesible solo para usted, sin cuotas de suscripción y sin riesgos de fuga de datos a proveedores externos.
- Stack tecnológico: Docker, PostgreSQL, Redis, Tesseract OCR, Nginx/Caddy.
- Resultado: Procesamiento automático de PDF e imágenes, búsqueda por contenido, etiquetado y archivado.
- Tiempo de implementación: 30-40 minutos con un VPS listo.
- Seguridad: Aislamiento total de datos, cifrado TLS y protección contra fuerza bruta.
- Escalabilidad: Soporte para modo multiusuario e integración con aplicaciones móviles.
1. Qué estamos configurando y por qué: la filosofía de Paperless-ngx
Esquema: 1. Qué estamos configurando y por qué: la filosofía de Paperless-ngx
En 2026, el problema de la acumulación de documentos en papel (recibos, contratos, informes médicos, instrucciones y facturas) sigue siendo relevante. El simple escaneo en una carpeta del ordenador no resuelve el problema: encontrar el documento necesario entre cientos de archivos "SCAN_001.pdf" es prácticamente imposible. Aquí es donde entra en escena Paperless-ngx.
Paperless-ngx es un fork del popular proyecto Paperless-ng, que a su vez surgió del Paperless original. Es una aplicación web que indexa sus escaneos. La magia principal ocurre durante el proceso de OCR (Optical Character Recognition): el sistema "lee" el texto de la imagen o del archivo PDF, lo guarda en la base de datos y permite encontrar documentos instantáneamente por palabras clave.
¿Por qué elegir una solución self-hosted en su propio VPS en lugar de servicios en la nube como Google Drive o DMS de pago especializados?
- Privacidad: Sus documentos financieros y datos personales se almacenan en su servidor, no en los servidores de corporaciones que pueden analizarlos para publicidad.
- Sin límites: Solo está limitado por el tamaño del disco de su VPS. No hay restricciones en el número de documentos o usuarios.
- Automatización: Puede configurar una "carpeta de consumo" (consumption folder). Tan pronto como un archivo llega allí (vía FTP, SMB o aplicación móvil), Paperless-ngx lo procesa automáticamente, lo reconoce, le asigna etiquetas y lo envía al archivo.
- Etiquetado inteligente: El sistema utiliza aprendizaje automático para determinar automáticamente el corresponsal (remitente) y el tipo de documento basándose en la experiencia acumulada.
2. Qué configuración de VPS se necesita para esta tarea
Esquema: 2. Qué configuración de VPS se necesita para esta tarea
Paperless-ngx es una aplicación bastante exigente en cuanto a recursos, especialmente durante el procesamiento de nuevos documentos. El proceso de OCR (reconocimiento de texto) carga activamente el procesador, mientras que la base de datos y el motor de búsqueda requieren memoria RAM.
Las características mínimas y recomendadas del servidor se detallan en la siguiente tabla:
| Recurso |
Mínimo (1-2 usuarios) |
Recomendado (Familia/Oficina) |
| CPU |
2 núcleos (x86_64 o ARM64) |
4 núcleos o más |
| RAM |
4 GB |
8 GB + Swap |
| Disco |
20 GB (SSD/NVMe) |
100 GB+ (depende del volumen del archivo) |
| SO |
Ubuntu 24.04 LTS / 26.04 LTS |
Debian 12 / Ubuntu 24.04 LTS |
Es importante tener en cuenta que, si falta memoria RAM, el proceso de OCR puede fallar, dejando los documentos sin procesar. Si planea cargar miles de páginas de archivo a la vez, opte por configuraciones más potentes.
Para un funcionamiento estable y un procesamiento rápido de documentos, recomendamos considerar un VPS con las características indicadas. La presencia de discos NVMe acelerará significativamente la indexación y la búsqueda en la base de datos.
Ubicación del servidor: Dado que cargará documentos personales, elija una ubicación con el mínimo ping hacia usted y en una jurisdicción en la que confíe. Para usuarios en Europa, los centros de datos en Alemania o los Países Bajos son óptimos.
3. Preparación del servidor: seguridad y dependencias
Esquema: 3. Preparación del servidor: seguridad y dependencias
Antes de instalar la aplicación en sí, es necesario preparar el entorno. La seguridad es fundamental, ya que el DMS contendrá sus datos más sensibles.
Actualicemos la lista de paquetes y el software instalado:
sudo apt update && sudo apt upgrade -y
Instalaremos el conjunto básico de utilidades que necesitaremos durante el proceso:
sudo apt install -y curl wget git vim software-properties-common ufw fail2ban
Configuraremos el cortafuegos básico (Firewall). Necesitamos abrir los puertos para SSH, HTTP y HTTPS:
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
También se recomienda crear un usuario separado con privilegios sudo para no realizar todas las acciones como root:
# Creación de usuario (reemplace 'adminuser' con su nombre)
sudo adduser adminuser
sudo usermod -aG sudo adminuser
# Cambiar al nuevo usuario
su - adminuser
4. Instalación de Docker y Docker Compose
Esquema: 4. Instalación de Docker y Docker Compose
Paperless-ngx consta de varios componentes (servidor web, base de datos, bróker de mensajes, motor de OCR). La forma más fiable y sencilla de ejecutar todo esto es utilizar Docker Compose. En 2026, Docker es el estándar de facto para soluciones self-hosted.
Instalaremos Docker desde el repositorio oficial:
# Añadimos la clave GPG de Docker
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Añadimos el repositorio
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Instalamos los paquetes
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Añadiremos a nuestro usuario al grupo docker para no tener que introducir sudo cada vez:
sudo usermod -aG docker $USER
# Aplique los cambios de grupo (o vuelva a entrar por SSH)
newgrp docker
Verifiquemos el funcionamiento:
docker compose version
5. Instalación de Paperless-ngx: despliegue paso a paso
Esquema: 5. Instalación de Paperless-ngx: despliegue paso a paso
Los desarrolladores de Paperless-ngx proporcionan un script de instalación conveniente, pero analizaremos el método "manual" a través de Docker Compose, ya que ofrece más control sobre la configuración y las rutas de almacenamiento de datos.
Crearemos un directorio para el proyecto:
mkdir ~/paperless-ngx && cd ~/paperless-ngx
Para funcionar, necesitaremos tres archivos: docker-compose.yml, docker-compose.env y carpetas vacías para los datos.
Crearemos la estructura de carpetas:
mkdir -p {data,media,export,consume,db}
Ahora crearemos el archivo de configuración de entorno docker-compose.env. Este es el "corazón" de la configuración de su servidor. ¡Asegúrese de cambiar los valores de las contraseñas y la clave secreta!
# Clave secreta (genere una cadena aleatoria larga)
PAPERLESS_SECRET_KEY=change-this-to-something-very-long-and-random
# Configuración de la base de datos
PAPERLESS_DBENGINE=postgresql
PAPERLESS_DBHOST=db
PAPERLESS_DBNAME=paperless
PAPERLESS_DBUSER=paperless
PAPERLESS_DBPASS=your_strong_password_here
# Configuración de Redis
PAPERLESS_REDIS=redis://broker:6379
# Idiomas de OCR (añada los necesarios, por ejemplo rus, eng, deu)
PAPERLESS_OCR_LANGUAGE=rus+eng
# Zona horaria
PAPERLESS_TIME_ZONE=Europe/Madrid
# Configuración de URL (especifique su dominio más tarde)
PAPERLESS_URL=https://paperless.yourdomain.com
Ahora crearemos el archivo principal docker-compose.yml. Utilizaremos versiones actualizadas de las imágenes para el año 2026:
services:
broker:
image: docker.io/library/redis:7
restart: unless-stopped
volumes:
- ./redisdata:/data
db:
image: docker.io/library/postgres:16
restart: unless-stopped
volumes:
- ./db:/var/lib/postgresql/data
environment:
POSTGRES_DB: paperless
POSTGRES_USER: paperless
POSTGRES_PASSWORD: your_strong_password_here
webserver:
image: ghcr.io/paperless-ngx/paperless-ngx:latest
restart: unless-stopped
depends_on:
- db
- broker
ports:
- "8000:8000"
volumes:
- ./data:/usr/src/paperless/data
- ./media:/usr/src/paperless/media
- ./export:/usr/src/paperless/export
- ./consume:/usr/src/paperless/consume
env_file: docker-compose.env
environment:
PAPERLESS_REDIS: redis://broker:6379
PAPERLESS_DBHOST: db
Iniciamos los contenedores en segundo plano:
docker compose up -d
Tras el inicio, es necesario crear el primer superusuario (administrador):
docker compose exec webserver python3 manage.py createsuperuser
Siga las instrucciones en la terminal para establecer el nombre de usuario, el correo electrónico y la contraseña.
6. Configuración avanzada: OCR, idiomas y correo electrónico
Esquema: 6. Configuración avanzada: OCR, idiomas y correo electrónico
Una de las funciones más potentes de Paperless-ngx es la capacidad de recopilar documentos automáticamente desde el correo electrónico. Por ejemplo, puede configurar el sistema para que revise su bandeja de entrada y descargue automáticamente las facturas de los proveedores.
Añada los siguientes parámetros a su docker-compose.env para configurar el agregador de correo:
# Habilitar el procesamiento de correo
PAPERLESS_EMAIL_SECRET=your_email_password_or_app_token
# Frecuencia de comprobación (en minutos)
PAPERLESS_EMAIL_TASK_INTERVAL=10
Configuración de OCR (Tesseract):
Paperless-ngx utiliza Tesseract para el reconocimiento de texto. Puede configurar el modo de funcionamiento del OCR a través de la variable PAPERLESS_OCR_MODE:
clean: Crea un PDF con una capa de texto, limpiando el original (por defecto).
redo: Fuerza la ejecución del OCR, incluso si el PDF ya tiene una capa de texto.
skip: Omite el OCR si ya se ha detectado texto.
Si tiene un procesador poco potente en su VPS, puede limitar el número de hilos para el OCR para que el servidor no se bloquee al cargar archivos grandes:
# Limitación a 2 procesos de OCR paralelos
PAPERLESS_OCR_THREADS=2
Procesamiento de documentos de Office:
Por defecto, Paperless-ngx funciona bien con PDF e imágenes. Para que reconozca .docx, .xlsx y .pptx, es necesario añadir los servicios Gotenberg y Tika. Esto ampliará las capacidades del sistema hasta convertirlo en una completa suite ofimática.
7. Configuración del servidor web y HTTPS (SSL)
Esquema: 7. Configuración del servidor web y HTTPS (SSL)
Ejecutar Paperless-ngx en el puerto 8000 a través de HTTP no cifrado no es seguro. Necesitamos un Reverse Proxy que proporcione soporte para HTTPS a través de Let's Encrypt.
Utilizaremos Caddy, ya que obtiene y renueva automáticamente los certificados SSL, requiriendo una configuración mínima.
Instalemos Caddy en el VPS:
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1G 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1G 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy
Editaremos el archivo de configuración de Caddy (/etc/caddy/Caddyfile):
paperless.yourdomain.com {
reverse_proxy localhost:8000
header {
# Configuración de seguridad
Strict-Transport-Security "max-age=31536000;"
X-Content-Type-Options nosniff
X-Frame-Options DENY
Referrer-Policy no-referrer-when-downgrade
}
}
Reinicie Caddy para aplicar los cambios:
sudo systemctl restart caddy
Ahora su Paperless-ngx está disponible en la dirección https://paperless.yourdomain.com con un certificado SSL válido.
8. Copias de seguridad y mantenimiento: conservando los datos para siempre
Esquema: 8. Copias de seguridad y mantenimiento: conservando los datos para siempre
Los documentos son datos que no se pueden perder. En Paperless-ngx es necesario hacer copias de seguridad de tres cosas: la base de datos, los archivos multimedia (los documentos en sí) y los archivos de configuración.
Método 1: Exportación con la utilidad integrada
Paperless-ngx tiene un comando de exportación integrado que vuelca todo en la carpeta /export:
docker compose exec webserver document_exporter ../export/
Método 2: Script de copia de seguridad automática
Crearemos un script bash sencillo backup.sh que archivará los datos y los enviará a un almacenamiento remoto (por ejemplo, S3 u otro servidor a través de rsync):
#!/bin/bash
BACKUP_DIR="/home/adminuser/backups"
DATE=$(date +%Y-%m-%d)
PROJECT_DIR="/home/adminuser/paperless-ngx"
mkdir -p $BACKUP_DIR
# 1. Volcado de la base de datos PostgreSQL
docker compose exec -t db pg_dumpall -c -U paperless > $BACKUP_DIR/db_backup_$DATE.sql
# 2. Archivado de archivos multimedia y configuraciones
tar -czf $BACKUP_DIR/paperless_files_$DATE.tar.gz -C $PROJECT_DIR data media docker-compose.yml docker-compose.env
# 3. Eliminación de copias de seguridad antiguas (más de 30 días)
find $BACKUP_DIR -type f -mtime +30 -delete
Añada la ejecución del script al crontab (crontab -e) para que se ejecute cada noche a las 03:00:
0 3 * /bin/bash /home/adminuser/paperless-ngx/backup.sh
9. Solución de problemas + FAQ
¿Por qué el proceso de OCR tarda tanto tiempo?
El reconocimiento de texto es una tarea que consume muchos recursos. En un VPS de 2 núcleos, una página puede tardar entre 5 y 20 segundos en procesarse. Si ha subido 100 documentos a la vez, el sistema los pondrá en cola. Puede comprobar el estado de la cola en la interfaz web, en la sección "Settings" -> "Worker Status". Para acelerar el proceso, aumente el número de núcleos de la CPU.
Error "Out of Memory" al procesar PDFs grandes
Esto sucede cuando Tesseract intenta procesar un documento de varias páginas con alta resolución. Solución: añada un archivo Swap a su VPS (mínimo 2-4 GB). Esto permitirá que el sistema utilice el disco como memoria RAM temporal.
¿Cómo actualizar Paperless-ngx a la última versión?
Gracias a Docker, la actualización se realiza sin problemas:
cd ~/paperless-ngx
docker compose pull
docker compose up -d
Docker descargará automáticamente las nuevas imágenes y reiniciará los contenedores, conservando todos sus datos.
¿Qué configuración de VPS es la mínima adecuada?
La opción mínima funcional es 2 GB de RAM y 2 vCPU, pero obligatoriamente necesitará configurar un archivo Swap; de lo contrario, la interfaz web se "caerá" durante la carga de documentos. Para un funcionamiento fluido y sin retrasos, recomendamos entre 4 y 8 GB de RAM.
¿Qué elegir: VPS o servidor dedicado para esta tarea?
Para un archivo personal (hasta 10,000 documentos), un VPS es más que suficiente. Un servidor dedicado solo debería considerarse si está implementando Paperless-ngx en una gran empresa con decenas de empleados que escanean cientos de páginas diariamente, o si requiere un nivel extremadamente alto de rendimiento de disco para búsquedas instantáneas entre millones de palabras.
¿Cómo escanear documentos directamente a Paperless?
La forma más cómoda son las aplicaciones móviles (por ejemplo, Paperless Mobile para iOS/Android). Permiten fotografiar el documento, recortarlo y enviarlo por API a su Paperless-ngx. Además, muchos escáneres modernos admiten la función "Scan to FTP": configure el escáner para enviar los archivos a la carpeta consume de su servidor.
10. Conclusiones y próximos pasos
Hemos desplegado con éxito un sistema profesional de gestión de documentos en nuestro propio servidor. Ahora dispone de un almacenamiento seguro, rápido y totalmente controlado para todos sus papeles.
¿Qué hacer a continuación para mejorar el sistema?
- Configure una jerarquía de etiquetas: Divida los documentos por categorías: "Finanzas", "Salud", "Trabajo", "Coche".
- Conecte IMAP: Configure la recogida automática de correos de su bandeja de entrada para que las facturas de internet o electricidad lleguen al archivo por sí solas.
- Organice una copia offline: Configure la sincronización de la carpeta
export con su PC doméstico o NAS a través de Syncthing para tener acceso a los documentos incluso sin conexión a internet.
La transición a una oficina sin papeles no solo es ecológica, sino también increíblemente cómoda. Se acabaron los archivadores de palanca y los certificados de garantía perdidos: todo lo que necesita está ahora a un solo clic de búsqueda.