Deployment guide

How to Self-Host Reactive Resume on a VPS: Build and Share Your Own CV Platform

Deploy on a VPS Cloud →

Self-hosting5 min read

How to Self-Host Reactive Resume on a VPS: Build and Share Your Own CV Platform

Canva Resume, Novoresume and LinkedIn's resume builder harvest your career data, monetise your profile visibility and lock you out of your own content when you stop paying. Reactive Resume (MIT, 38 000+ GitHub stars, v5.2.5 — released July 30 2026) offers a radical alternative: a fully-featured resume builder you self-host on your own VPS, generating PDFs directly in the user's browser with no Chrome or Browserless on the server side. Your career data stays on your infrastructure; no one else has access to it.

Why self-host a resume builder

SaaS resume tools monetise your career history, limit template access or charge for PDF downloads. Self-hosting Reactive Resume inverts the model: your resumes, photos and exports stay in a Docker volume on your VPS, exportable at any time via the UI or REST API, and shareable under your own domain. No template limits, no watermarks, no subscription dependency.

What you get with a self-hosted Reactive Resume

  • Browser-based drag-and-drop visual editor — no app to install, works on any device.
  • Professionally designed ATS-friendly templates — multiple layouts for different industries and experience levels.
  • Client-side PDF export since v5.1.0 — no Chrome, Puppeteer or Browserless server-side.
  • Public resume URL — share your profile on a readable, always-updated link.
  • Multiple resumes per account — maintain separate CVs for different roles or languages.
  • REST API — create and export resumes programmatically for HR tool integration.
  • Local storage — uploads (photos, portfolio images) written to a Docker volume, no S3 needed.

Requirements

A ServOrbit VPS with Ubuntu 24.04 and at least 1 GB RAM. The Node.js application idles around 300 MB and PostgreSQL 16 adds 100–200 MB — a 1 GB VPS handles a personal or small-team deployment comfortably. Docker and Docker Compose are provisioned automatically by AWX at deploy time. A domain name is required: Reactive Resume anchors its authentication URL (APP_URL) at first start and cannot function behind a bare IP address.

Deploy Reactive Resume on your VPS

01

Choose your domain before deploying

Reactive Resume embeds APP_URL in authentication tokens and OAuth callbacks at first start — changing the domain afterwards breaks all sessions and requires deleting the PostgreSQL volume. Create your DNS A record (e.g. cv.yourdomain.com) and wait for propagation before deploying.

02

One-click deploy from the ServOrbit Marketplace

Open your ServOrbit control panel, go to Marketplace → Collaboration & Productivity → Reactive Resume, enter your domain and click Deploy. AWX installs Docker, generates a random auth secret, configures nginx with Let's Encrypt TLS and starts both containers (app + PostgreSQL) in under two minutes.

03

Create your account and verify your email

Navigate to https://cv.yourdomain.com and click Sign Up to create your account with email and password. Without SMTP configured, the verification link is printed to the Docker logs: docker compose logs reactive-resume | grep verify. Click the link to activate your account.

04

Create your first resume

Click the + button to create a new resume. Choose a template from the library, fill in your sections (Summary, Experience, Education, Skills) in the left panel and preview in real time on the right. Click Download to export a PDF — generation is fully client-side, no waiting for a print server.

05

Share your resume publicly

In the resume settings, toggle Public Resume ON. Reactive Resume generates a shareable URL — https://cv.yourdomain.com/r/your-name — that always serves the latest version of your document. Share this link in job applications instead of attaching a static PDF that you'd have to resend after every update.

The v5.1.0 shift: client-side PDF, no print server

Before v5.0, Reactive Resume depended on Browserless or a headless Chromium instance to generate PDFs server-side — adding 700 MB to 1 GB of RAM overhead and a dependency to maintain. Since v5.1.0, PDF generation is handled by @react-pdf/renderer, a JavaScript library running directly in the user's browser. The server only receives a document-save request — no Chrome, no Puppeteer, no print service required. This is what reduces the minimal stack to two lightweight containers.

Backup and data portability

Two Docker volumes hold the entire instance: reactive_resume_db for the PostgreSQL database (accounts, resumes, settings) and reactive_resume_data for uploaded files (profile photos, portfolio images). Minimal backup: docker run --rm -v reactive_resume_db:/data -v $(pwd):/backup alpine tar czf /backup/db.tar.gz /data. For a direct SQL export: docker exec db pg_dump -U postgres postgres > backup.sql. Restore by mounting the volume on a fresh PostgreSQL container configured with the same public URL.

Deploy Reactive Resume on your own server

Self-host Reactive Resume on a ServOrbit VPS — open source, no subscription, all your CV data on your own infrastructure.

Need help?

Browse our help center and FAQ, or write to our team — support in French, English and Arabic.