Guía de despliegue

Alojar Reactive Resume en un VPS: sus CV en su servidor

Desplegar en un VPS Cloud →

Tutorial

Alojar Reactive Resume en un VPS: sus CV en su servidor

Autoalojamiento7 min de lectura6 pasos

Reactive Resume es un creador de CV de código abierto (MIT) con más de 42 000 estrellas en GitHub. Desde la v5.1.0, genera los PDF íntegramente en el navegador, sin ningún servicio de impresión del lado del servidor. El resultado: dos contenedores ligeros bastan para una instancia completa, y un VPS de 1 GB de RAM puede alojar su herramienta de CV sin compromisos.

Contenido· Por qué autoalojar un creador de CV1/9
  1. 01Por qué autoalojar un creador de CV
  2. 02Lo que obtiene con un Reactive Resume autoalojado
  3. 03Requisitos
  4. 04Desplegar Reactive Resume en su VPS
  5. 05El gran cambio de la v5.1.0: PDF sin servidor de impresión
  6. 06Mantenga segura su clave de autenticación
  7. 07Usar la REST API para automatizar sus exportaciones
  8. 08Copia de seguridad y portabilidad de los datos
  9. 09Solución de errores frecuentes

Por qué autoalojar un creador de CV

Los servicios SaaS de CV monetizan su historial profesional, limitan las plantillas o cobran la descarga del PDF. Autoalojar Reactive Resume invierte el modelo: sus CV, sus fotos y sus exportaciones permanecen en un volumen Docker de su VPS, exportables en cualquier momento desde la interfaz o la REST API, y compartibles bajo su propio dominio. Sin límite de plantillas, sin marca de agua, sin dependencia de una suscripción.

El autoalojamiento también le da control total sobre los datos sensibles que contiene un CV — datos de contacto personales, historial laboral, competencias. Estos datos nunca transitan ni se almacenan en un servicio de terceros.

Lo que obtiene con un Reactive Resume autoalojado

  • Editor visual de arrastrar y soltar en el navegador — sin aplicación que instalar, funciona en cualquier dispositivo.
  • Biblioteca de plantillas profesionales compatibles con ATS — varios diseños para distintos sectores y niveles de experiencia.
  • Exportación PDF íntegramente en el navegador desde la v5.1.0 — se acabaron Chrome, Puppeteer o Browserless del lado del servidor.
  • URL pública del CV — comparta su perfil en un enlace legible que se actualiza en tiempo real.
  • Varios CV por cuenta — decline versiones por puesto o por idioma sin duplicar el trabajo.
  • REST API — cree y exporte CV mediante programación para integrarlos con herramientas de recursos humanos.
  • Almacenamiento local — las subidas (fotos, imágenes de portafolio) se escriben en un volumen Docker, sin necesidad de S3.
  • Autenticación OAuth opcional — conecte una cuenta de GitHub o Google añadiendo las claves de API correspondientes a la configuración.

Requisitos

Un VPS ServOrbit con Ubuntu 24.04 y al menos 1 GB de RAM. La aplicación Node.js consume unos 300 MB en reposo y PostgreSQL 16 usa entre 100 y 200 MB adicionales — un VPS de 1 GB basta para un uso personal o un equipo pequeño.

Docker y Docker Compose se aprovisionan automáticamente mediante AWX durante el despliegue. Se requiere un nombre de dominio: Reactive Resume fija su URL de autenticación (APP_URL) desde el primer arranque y no puede funcionar detrás de una simple dirección IP.

Si tiene previsto activar la verificación de cuenta por correo electrónico, se recomienda un servidor SMTP saliente. Sin SMTP, el enlace de verificación aparece en los registros de Docker — práctico para uso en solitario, menos adecuado si abre el acceso a otros usuarios.

Desplegar Reactive Resume en su VPS

  1. Elegir el dominio definitivo antes de desplegar

    Reactive Resume inscribe APP_URL en los tokens de autenticación y en los callbacks OAuth desde el primer arranque: cambiar el dominio después rompe todas las sesiones y obliga a eliminar el volumen PostgreSQL. Cree el registro DNS de tipo A — por ejemplo cv.su-dominio.com — y espere a la propagación antes de lanzar el despliegue.

  2. Despliegue en un clic desde el marketplace de ServOrbit

    Abra su panel de control ServOrbit, vaya a Marketplace → Colaboración y productividad → Reactive Resume, introduzca su dominio y haga clic en Desplegar. AWX instala Docker, genera un secreto de autenticación aleatorio, configura nginx con TLS de Let's Encrypt y arranca los dos contenedores (app + PostgreSQL) en menos de dos minutos.

  3. Crear su cuenta y verificar su dirección

    Navegue hasta https://cv.su-dominio.com y haga clic en Sign Up para crear su cuenta con correo electrónico y contraseña. Si no ha configurado un servidor SMTP, el enlace de verificación aparece en los registros de Docker: docker compose logs reactive-resume | grep verify. Haga clic en ese enlace para activar su cuenta.

  4. Crear su primer CV

    Haga clic en el botón + para crear un CV nuevo. Elija una plantilla de la biblioteca, rellene sus secciones (Resumen, Experiencia, Formación, Competencias) en el panel de la izquierda y visualice el resultado en tiempo real a la derecha. Haga clic en Descargar para exportar un PDF: la generación es íntegramente en el navegador, sin esperas.

  5. Compartir su CV públicamente

    En los ajustes del CV, active CV público. Reactive Resume genera una URL compartible — https://cv.su-dominio.com/r/su-nombre — que sirve siempre la última versión de su documento. Comparta ese enlace en sus candidaturas en lugar de adjuntar un PDF estático que tendrá que reenviar en cada actualización.

  6. Configurar la autenticación OAuth (opcional)

    Para permitir el inicio de sesión mediante GitHub o Google, añada las variables de entorno correspondientes a la configuración de su despliegue: GITHUB_CLIENT_ID, GITHUB_CLIENT_SECRET, GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET. Reinicie luego los contenedores con docker compose restart. Los botones de inicio de sesión social aparecen automáticamente en la página de inicio de sesión en cuanto están presentes las variables.

El gran cambio de la v5.1.0: PDF sin servidor de impresión

Hasta la versión 5.0, Reactive Resume dependía de Browserless o de un Chromium headless para generar los PDF del lado del servidor. Eso suponía entre 700 MB y 1 GB de RAM adicionales y una dependencia que mantener. Desde la v5.1.0, la generación de PDF corre a cargo de @react-pdf/renderer, una biblioteca JavaScript que se ejecuta directamente en el navegador del usuario. El servidor solo ve una petición de guardado del documento: no se requiere ningún Chrome, ningún Puppeteer ni ningún servicio de impresión del lado de la infraestructura. Eso es lo que reduce la pila mínima a dos contenedores ligeros.

Mantenga segura su clave de autenticación

El despliegue de ServOrbit genera automáticamente un valor aleatorio para SECRET_KEY. No reutilice nunca un valor predecible ni lo comparta entre varias instancias. Si sospecha una vulneración, regenere esta clave y reinicie los contenedores: todas las sesiones activas quedarán invalidadas y los usuarios deberán volver a iniciar sesión — este es el comportamiento esperado.

Usar la REST API para automatizar sus exportaciones

Reactive Resume expone una REST API completa, accesible en /api/v3. Puede crear CV, actualizarlos y disparar exportaciones PDF mediante programación — útil para integrar la generación de CV en un flujo de trabajo de RRHH o en un pipeline de candidaturas automatizado.

Para autenticarse, obtenga un token JWT mediante POST /api/v3/auth/login con sus credenciales. Luego pase ese token en la cabecera Authorization: Bearer <token> de cada petición.

Ejemplo — listar sus CV:

curl -s -H "Authorization: Bearer <su-token>" \
  https://cv.su-dominio.com/api/v3/resume | jq '.[].title'

La documentación completa de la API está disponible en el repositorio oficial.

Copia de seguridad y portabilidad de los datos

Dos volúmenes Docker contienen la totalidad de la instancia: reactive_resume_db para la base de datos PostgreSQL (cuentas, CV, ajustes) y reactive_resume_data para los archivos subidos (fotos de perfil, imágenes de portafolio). Copia de seguridad mínima:

docker run --rm \
  -v reactive_resume_db:/data \
  -v $(pwd):/backup \
  alpine tar czf /backup/db.tar.gz /data

Para una exportación SQL directa: docker exec db pg_dump -U postgres postgres > backup.sql

Restaure montando el volumen en un contenedor PostgreSQL virgen configurado con la misma URL pública. Programe estas copias de seguridad con un cron diario o utilice el servicio de instantáneas de volumen de su VPS para una cobertura automática.

Solución de errores frecuentes

APP_URL incorrecto tras un cambio de dominio. Síntoma: los callbacks OAuth fallan o el enlace de verificación apunta al dominio antiguo. Solución: actualice APP_URL en la configuración, elimine el volumen PostgreSQL (docker volume rm reactive_resume_db) y reinicie. Se perderán todos los datos — planifique este paso antes de crear cuentas en producción.

El contenedor de la app reinicia en bucle. Compruebe los registros con docker compose logs reactive-resume. El error más frecuente es una conexión PostgreSQL rechazada (Connection refused to db:5432): el contenedor de la app arranca antes de que PostgreSQL esté listo. Espere 30 segundos y ejecute docker compose up -d de nuevo.

PDF generado con maquetación incorrecta. El renderizado PDF se realiza en el navegador mediante @react-pdf/renderer y depende del motor de renderizado de su navegador. Si el resultado parece desajustado, pruebe con un navegador diferente (Chrome o Firefox reciente). Los navegadores antiguos o las extensiones que alteran las fuentes pueden afectar al renderizado.

Error secretOrPrivateKey must have a value al arrancar. La variable SECRET_KEY falta en la configuración. Añádala con un valor aleatorio de al menos 32 caracteres: openssl rand -hex 32 genera un valor adecuado.

La URL pública del CV devuelve 404. Compruebe que el CV esté marcado como público en sus ajustes. Si lo está, revise la configuración de nginx: el bloque location /r/ debe hacer proxy al frontend Next.js, no a la API.

Despliegue Reactive Resume en su propio servidor

Autoaloje Reactive Resume en un VPS ServOrbit — open source, sin suscripción, sus CV en su propia infraestructura.

¿Necesita ayuda?

Consulte nuestro centro de ayuda y nuestra FAQ, o contacte con nuestro equipo: llamada, WhatsApp o correo electrónico. Soporte en francés, inglés y árabe.

Escribir por WhatsAppse abre en una pestaña nueva