[{"data":1,"prerenderedAt":159},["ShallowReactive",2],{"seo-verification":3,"blog-autoalojar-reactive-resume-en-un-vps-es":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-autoalojar-reactive-resume-en-un-vps-es",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":27,"featuredImage":29,"bgImage":30,"posterImage":31,"relatedSolution":32,"intro":35,"sections":36,"ctaTitle":94,"ctaBody":95,"ctaButton":96,"ctaUrl":97,"relatedPosts":98},233,"autoalojar-reactive-resume-en-un-vps",{"fr":12,"en":13,"ar":14,"es":10},"self-host-reactive-resume-vps","self-host-reactive-resume-on-a-vps-build-and-share-your-cvs","استضافة-reactive-resume-على-vps-أنشئ-سيرك-الذاتية-وشاركها","Alojar Reactive Resume en un VPS: sus CV en su servidor","Despliegue Reactive Resume en su VPS — el creador de CV de código abierto con exportación PDF en el navegador, sin Chrome ni Browserless. MIT, 42 k+ estrellas, v5.3.0.",7,1,false,"2026-08-07T00:00:00+00:00","2026-09-09T21:41:06+00:00",{"id":17,"name":23,"slug":24,"color":25,"icon":26},"Autoalojamiento","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[28],{"id":17,"name":23,"slug":24,"color":25,"icon":26},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fself-host-reactive-resume-vps-poster.svg",{"categorySlug":33,"appSlug":34},"colaboracion-productividad","reactive-resume","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.",[37,41,53,56,78,81,85,88,91],{"type":38,"title":39,"body":40},"h2","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.\n\nEl 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.",{"type":42,"title":43,"items":44},"ul","Lo que obtiene con un Reactive Resume autoalojado",[45,46,47,48,49,50,51,52],"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.",{"type":38,"title":54,"body":55},"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.\n\nDocker 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.\n\nSi 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.",{"type":57,"title":58,"steps":59},"steps","Desplegar Reactive Resume en su VPS",[60,63,66,69,72,75],{"title":61,"body":62},"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.",{"title":64,"body":65},"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.",{"title":67,"body":68},"Crear su cuenta y verificar su dirección","Navegue hasta `https:\u002F\u002Fcv.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.",{"title":70,"body":71},"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.",{"title":73,"body":74},"Compartir su CV públicamente","En los ajustes del CV, active CV público. Reactive Resume genera una URL compartible — `https:\u002F\u002Fcv.su-dominio.com\u002Fr\u002Fsu-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.",{"title":76,"body":77},"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.",{"type":38,"title":79,"body":80},"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\u002Frenderer`, 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.",{"type":82,"title":83,"body":84},"tip","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.",{"type":38,"title":86,"body":87},"Usar la REST API para automatizar sus exportaciones","Reactive Resume expone una REST API completa, accesible en `\u002Fapi\u002Fv3`. 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.\n\nPara autenticarse, obtenga un token JWT mediante `POST \u002Fapi\u002Fv3\u002Fauth\u002Flogin` con sus credenciales. Luego pase ese token en la cabecera `Authorization: Bearer \u003Ctoken>` de cada petición.\n\nEjemplo — listar sus CV:\n\n```bash\ncurl -s -H \"Authorization: Bearer \u003Csu-token>\" \\\n  https:\u002F\u002Fcv.su-dominio.com\u002Fapi\u002Fv3\u002Fresume | jq '.[].title'\n```\n\nLa documentación completa de la API está disponible en el repositorio oficial.",{"type":38,"title":89,"body":90},"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:\n\n```bash\ndocker run --rm \\\n  -v reactive_resume_db:\u002Fdata \\\n  -v $(pwd):\u002Fbackup \\\n  alpine tar czf \u002Fbackup\u002Fdb.tar.gz \u002Fdata\n```\n\nPara una exportación SQL directa: `docker exec db pg_dump -U postgres postgres > backup.sql`\n\nRestaure 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.",{"type":38,"title":92,"body":93},"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.\n\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.\n\n**PDF generado con maquetación incorrecta.** El renderizado PDF se realiza en el navegador mediante `@react-pdf\u002Frenderer` 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.\n\n**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.\n\n**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 \u002Fr\u002F` 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.","Desplegar Reactive Resume","\u002Fmarketplace\u002Fcolaboracion-productividad\u002Freactive-resume",[99,122,140],{"id":100,"slug":101,"slugs":102,"title":106,"excerpt":107,"readTime":108,"views":109,"isPinned":19,"publishedAt":110,"updatedAt":111,"category":112,"categories":117,"featuredImage":29,"bgImage":30,"posterImage":119,"relatedSolution":120},193,"alojar-penpot-en-un-vps",{"fr":103,"en":104,"ar":105,"es":101},"self-host-penpot-vps","self-host-penpot-open-source-figma-alternative-on-your-vps","استضافة-penpot-على-vps-بديل-figma-مفتوح-المصدر","Alojar Penpot en un VPS: alternativa a Figma open-source","Despliegue Penpot en un VPS ServOrbit: diseño colaborativo — prototipado vectorial, componentes, handoff a desarrollo — sin suscripción a Figma ni datos en terceros.",4,0,"2026-07-27T00:00:00+00:00","2026-09-11T11:34:11+00:00",{"id":108,"name":113,"slug":114,"color":115,"icon":116},"Desarrollo","developpement","bg-warning\u002F10 text-warning","dev",[118],{"id":108,"name":113,"slug":114,"color":115,"icon":116},"\u002Fblog\u002Fcovers\u002Fself-host-penpot-vps-poster.svg",{"categorySlug":33,"appSlug":121},"penpot",{"id":123,"slug":124,"slugs":125,"title":129,"excerpt":130,"readTime":131,"views":18,"isPinned":19,"publishedAt":132,"updatedAt":133,"category":134,"categories":135,"featuredImage":29,"bgImage":30,"posterImage":137,"relatedSolution":138},181,"alojar-docuseal-en-un-vps",{"fr":126,"en":127,"ar":128,"es":124},"self-host-docuseal-vps","self-host-docuseal-on-a-vps-open-source-e-signature-for-teams","استضافة-docuseal-على-vps-توقيع-إلكتروني-مفتوح-المصدر-للفرق","Alojar DocuSeal en un VPS: firma electrónica de código abierto","Despliegue DocuSeal en su VPS: firma electrónica de código abierto con plantillas PDF de arrastrar y soltar, firma multiparte y auditoría. Sin coste por documento.",6,"2026-07-16T00:00:00+00:00","2026-09-07T11:26:10+00:00",{"id":17,"name":23,"slug":24,"color":25,"icon":26},[136],{"id":17,"name":23,"slug":24,"color":25,"icon":26},"\u002Fblog\u002Fcovers\u002Fself-host-docuseal-vps-poster.svg",{"categorySlug":33,"appSlug":139},"docuseal",{"id":141,"slug":142,"slugs":143,"title":147,"excerpt":148,"readTime":149,"views":109,"isPinned":19,"publishedAt":150,"updatedAt":151,"category":152,"categories":153,"featuredImage":29,"bgImage":30,"posterImage":155,"relatedSolution":156},46,"desplegar-nextjs-en-un-vps",{"fr":144,"en":145,"ar":146,"es":142},"deployer-nextjs-vps","deploy-a-nextjs-application-on-a-vps","نشر-تطبيق-nextjs-على-vps","Desplegar una aplicación Next.js en un VPS","Despliegue Next.js en un VPS: Node.js, PM2, Nginx, SSL y SSR. Guía completa para desarrolladores y agencias que quieren autoalojar.",13,"2026-05-05T00:00:00+00:00","2026-09-11T11:34:12+00:00",{"id":108,"name":113,"slug":114,"color":115,"icon":116},[154],{"id":108,"name":113,"slug":114,"color":115,"icon":116},"\u002Fblog\u002Fcovers\u002Fdeployer-nextjs-vps-poster.svg",{"categorySlug":157,"appSlug":158},"desarrollo","nextjs-stack",1789665008339]