The dependable way to self-host Reactive Resume is a two-service Docker Compose stack on a Linux VPS: one Reactive Resume container for the web app and API, and one PostgreSQL container on a private network. Use at least 1 vCPU and 1 GB RAM; 2 GB is the practical starting point when PostgreSQL shares the VPS. Set a public HTTPS URL in APP_URL, keep DATABASE_URL and a generated AUTH_SECRET in a private .env file, persist uploads, and place the complete application behind a reverse proxy.
Antihost offers Linux VPS plans with full root access, unlimited traffic on a 1 Gbps port and a 14-day free trial.
What the self-hosted deployment contains
Reactive Resume’s official self-hosting architecture is intentionally small. The published image runs one application container that serves both the web interface and API. A separate PostgreSQL service stores application data. Docker Compose starts and networks these services on the VPS.
As an Amazon Associate I earn from qualifying purchases.
The self-hosted edition has no feature difference from the cloud-hosted version, according to the project’s 2026 quickstart. You are responsible for the server, operating-system updates, database backups, storage, DNS, firewall rules, TLS certificates and upgrades.
- Reactive Resume application: serves the browser UI and API from one container.
- PostgreSQL: runs as a second container and should be reachable only over the private Compose network.
- Persistent file storage: either a local directory such as
./data:/app/dataor an S3-compatible object-storage backend when S3 is enabled. - Reverse proxy: terminates HTTPS and forwards the public hostname to the application container.
For one VPS and one application instance, Redis is not required for the core resume features. Redis becomes a requirement when you run multiple application instances and need shared rate limits, resumable streams, cancellation, notifications and view deduplication.
#1 Best Overall
- BLUE LIGHT BLOCKING GLASSES: Our blue light glasses for women boast UV400 protection, blocking harmful blue rays from computer screens. With these bluelight glasses women, you can enjoy gaming, reading, or watching TV with no worries of eye strain.
- EYE RELIEF: Our blue light glasses are engineered to reduce blurry vision or strain caused by prolonged screen time. These womens blue light glasses aid in better sleep by preventing blue light from disrupting your natural sleep cycle, helping you fall asleep faster and enjoy a more restful night's sleep, making them the perfect christmas present.
- COMFORTABLE: Crafted from durable material, our trendy blue light glasses for woman or blue light glasses men ensure long-lasting comfort. The high-transmittance lenses accessories, gamer gifts for men, help keep your eyes relaxed. Perfect stocking stuffers, gifts for gamers men, christmas gifts for men, halloween costumes.
- LIGHTWEIGHT: These clear blue light glasses feature a lightweight frame, meaning they’ll stay comfy for long-term wear. Perfect as blue blockers glasses for women or mens blue light glasses, these non-prescription fake glasses for men can be worn throughout the day. The blue light blocking glasses women feature polycarbonate HD lenses, which are anti-reflective and restore true color.
- WORRY-FREE PURCHASE: If you experience any issues, our support team is ready to assist you quickly. These are the perfect costume glasses for cosplay dressing up.
VPS requirements and sizing
| Item | Supported or recommended value | Why it matters |
|---|---|---|
| CPU | 1 vCPU minimum | Meets the official minimum for a basic installation; extra CPU gives more headroom during concurrent edits, exports and database work. |
| Memory | 1 GB minimum; 2 GB recommended with PostgreSQL on the same host | Both containers, Docker and the operating system share RAM. |
| Disk | Start with 10–20 GB for PostgreSQL and uploads | The required space grows with the number of accounts, resumes, uploaded assets and backups. |
| Docker Engine | 20.10 or newer | Required by the 2026 Reactive Resume quickstart. |
| Docker Compose | 2.0 or newer | Use the modern Compose plugin with Docker Engine. |
| Network | Public IP, DNS name and a firewall | Users need a stable hostname; the firewall should expose only the services intended for the internet. |
The 1 GB figure is an official minimum, not a promise that every workload will feel comfortable on it. If the VPS also hosts a reverse proxy, monitoring, backups or other applications, choose more than the minimum. Increase storage before the database or upload volume approaches the disk limit; a full filesystem can stop both PostgreSQL and the application.
Prepare the VPS before installing Reactive Resume
1. Provision a Linux server
Choose a Linux VPS with a public IPv4 or IPv6 address, then point a DNS record such as resume.example.com at that address. Create a firewall policy that allows SSH for administration and web traffic for the reverse proxy. Do not plan to expose PostgreSQL directly to the public internet.
PC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchDecide where the project directory will live. It must have enough room for the Compose files, PostgreSQL data, the local upload directory and temporary backup files. Restrict access to the directory because it will contain database credentials and the authentication secret.
2. Install Docker and Compose
Install Docker Engine 20.10 or newer and the Docker Compose plugin 2.0 or newer using the package instructions for your Linux distribution. Confirm the versions before deploying:
docker --version
docker compose version
If your distribution provides an older standalone docker-compose binary, use the newer docker compose plugin instead of mixing both implementations.
3. Create the project layout
Create a private directory containing the Compose definition, environment file and persistent data directory:
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Repair Windows errors before they cause bigger problems3Scan for outdated or missing drivers - takes under a minuteRank #2
- WINDEX GAMING WIPES: effortlessly clean all your gaming gear and gaming electronics in one easy step with our new Windex Gaming Wipes
- AMMONIA FREE: our ammonia-free formula is safe to use on all of your favorite gaming equipment like consoles, headsets, controllers, screens, keyboards, and more
- PRE-MOISTENED WIPES: each wipe instantly removes dust, dirt, and stubborn smudges and fingerprints leaving a streak-free shine
- ANTI-STATIC: great for cleaning and wiping down your gaming gear and electronics leaving behind no visible residue
- COMPACT RESEALABLE PACKAGE: store your pack of Windex Gaming Wipes anywhere in your home for whenever a quick and easy wipedown is needed
mkdir -p ~/reactive-resume/data
cd ~/reactive-resume
touch compose.yml .env
chmod 600 .env
The exact Compose service definitions should follow the current Reactive Resume self-hosting documentation. Keep the application and PostgreSQL services on the same internal Compose network, and publish only the application port needed by your reverse proxy. Do not add a host port mapping for PostgreSQL.
Set the required environment variables
Put deployment settings in .env, not in a publicly readable Compose file or a shell history. Three values are central:
APP_URL: the final public origin, including the scheme. For an HTTPS deployment use a value such ashttps://resume.example.com, not the private container address.DATABASE_URL: a PostgreSQL connection string that uses the Compose service name (for example,postgres) or another private address reachable from the application container. It must include the database user, password, host, port and database name required by your PostgreSQL service.AUTH_SECRET: a long random value used to protect authentication. Generate one on the VPS with:
openssl rand -hex 32
Copy the command’s output into AUTH_SECRET. Keep the same secret when restarting or upgrading an existing installation; replacing it can invalidate authentication data. Never commit .env to a public repository or paste its contents into support requests.
A conceptual environment file looks like this, with your own database credentials and hostname:
APP_URL=https://resume.example.com
DATABASE_URL=postgresql://USER:PASSWORD@postgres:5432/DBNAME
AUTH_SECRET=generated-hex-value
The PostgreSQL username, password and database name in that example must match the values configured for the PostgreSQL service in your Compose file. Use a password that is unique to this installation.
Configure storage and PostgreSQL safely
Keep PostgreSQL private
Reactive Resume needs the application container to reach PostgreSQL, but internet users do not. Compose’s private network provides that boundary when you omit a PostgreSQL ports mapping. A database service with no published host port is still available to the application by its service name, while scanners on the public IP cannot connect to it directly.
Rank #3
- Ergonomic & Adjustable Design: Fight "text neck" and improve your posture. Designed for comfort, it offers an adjustable height (7.1in-8.5in) (1.4in adjustable range) and angle (5°-85°) Please note: cell phone stand is only 9 inches tall—the length of a standard pencil
- Without blocking subtitles Perfect for office desk Tiktok Face Time Zoom video—this is the ultimate kitchen desk essential for phones! Perfect viewing experience while reducing neck back strain, A must-have for gamers streamers desk, and anyone who values both style and support!
- Sleek & Stable Design fits Otterbox Case: Say goodbye to bent cables, tangles, and tip-overs! LISEN’s stylish adjustable desk phone holder features a built-in charging hole and smart cable management, keeping your phone secure and your workspace clutter-free cool gadgets for men
- ANTI-SLIP DESIGN free hands: The under 10.00 items easy gadgets back and the bottom of this kitchen essentials for women are fully covered by anti-skid silicone, which LISEN stand up desk decor can provide maximum protection device from any scratches and slides
- Your Perfect Viewing Companion:If your product arrives damaged or breaks within 365 days, reach out to LISEN for a quick and hassle-free solution. Struggling with assembly, like tightening the screw? We’ve got your back! Your experience matters to us. (Product including: phone Holder stand*1, screw*1, hexagon screwdriver*1, specification*1)
Back up PostgreSQL separately from the VPS filesystem. A snapshot of a running disk is not a substitute for a tested logical database restore.
Persist uploaded files
If S3 storage is disabled, mount a durable host directory into the application at /app/data, commonly as ./data:/app/data. Without that mount, files written inside the container can disappear when the container is recreated. Include the data directory in your backup plan.
Recommended Free Tools
S3-compatible storage is an alternative when you prefer object storage for uploads or need storage independent of the VPS. Whichever option you choose, verify that a newly uploaded image or attachment remains available after an application restart.
Start the Compose stack
- Review
compose.ymland.env. Confirm thatDATABASE_URLpoints to the PostgreSQL service name or another reachable private address, and thatAPP_URLis the hostname users will actually open. - Start both services in detached mode:
docker compose up -d
- Watch the application log while the first boot runs:
docker compose logs -f reactive-resume
- Wait for PostgreSQL to accept connections, for the automatic database migrations to finish and for the application health check to become healthy. The server runs migrations on every start before it serves traffic.
- From the VPS (or an equivalent network context), check the health endpoint:
curl http://127.0.0.1:3000/api/health
- Open the public HTTPS hostname only after the reverse proxy is forwarding to the healthy application container.
The application may take longer on its first start while images are downloaded and PostgreSQL initializes. Do not repeatedly restart it during migration; inspect the logs first if startup appears stuck.
Put Reactive Resume behind HTTPS
Use a reverse proxy in front of the application rather than exposing the container directly as the public service. Configure DNS and a certificate for the final hostname, then forward the complete application to the container’s HTTP listener. The proxy must pass more than the landing page:
- Web application routes and API requests
- Uploaded files
- Fonts and other static assets
- Public resume-sharing pages
Set APP_URL to the external HTTPS origin even though the proxy talks to the container over an internal HTTP connection. A mismatch, such as using http://127.0.0.1:3000 in APP_URL, can produce incorrect links, insecure redirects or authentication failures.
Rank #4
- Easy Installation: Our gaming lights have been designed to enhance your entertainment experience. Simply position the led light bar next to your TV or game console to create a game room environment with ease. They come with USB power and a 60 inch cord for direct mounting and mobility
- Audio Syncing & Extensive Mode: The built-in high-sensitivity music sensor allows you to sync the TV led lights to your favorite music. Lights react and move to the beat of music, film and game audio, creating an incredible immersive sound and light experience – and all without the need for an additional hub. You can choose from 64+ patterns, including strobe, illusion, jump, energy, gradient, running, chasing, fluttering mode etc. Each mode can be applied to different scenes
- 64+ Chasing IC+RGB & W Effect: The independent control design of IC+RGB and white all-in-one multifunctional rgbw led bar lights monitor backlight allows you to easily switch the led lights for desk between IC+RGB and white to enjoy a variety of lighting effects, you can choose white lighting mode with high brightness for better illumination when working, etc. Choose IC+RGB lighting mode when you need to create an entertaining atmosphere for the light show, 16 million colours of Color changing rgb light bar let you dance to the beat and create a dynamic party atmosphere
- Dynamic and Dimmable Lights: 1%-full brightness free brightness adjustment gives you the flexibility to adjust dimmable led light bar for room decorations or a variety of occasions
- USB Powered: USB light bars for room can be powered by powernank, usb charger, TV, Monitor, laptop PC mainframe, making behind TV led lighting bar easy to install in any location.TV led lights are powered by the TV usb interface / PC mainframe, can be turned on/off synchronously with TV / PC
After the certificate is active, test the whole user journey rather than only the home page:
- Register a new account and sign in.
- Create and edit a resume, including a public share link.
- Upload an image or other supported asset, refresh the page and verify it remains visible.
- Export a PDF from the browser.
- Open the site from a second device or private browser window to confirm that HTTPS, cookies and public pages work through the proxy.
PDF generation: Browserless is no longer part of a new setup
Starting with Reactive Resume v5.1.0, PDF generation runs entirely in the browser through @react-pdf/renderer. New deployments therefore do not need a headless-browser service. Remove obsolete PRINTER_* and BROWSERLESS_* variables instead of carrying old examples into a current Compose file.
This change also alters troubleshooting: a failed PDF export should first be investigated in the browser and through the reverse proxy, not by adding a Browserless container. The VPS still needs enough memory for the application and browser tab performing the export.
Free tools Windows power users keep installed
One-click scans. No signup required.
Backups, upgrades and routine operations
Back up both kinds of data
A usable backup covers PostgreSQL and uploaded files. Schedule database dumps or an equivalent PostgreSQL backup, copy the local data directory when local storage is enabled, and retain copies outside the VPS. If you use S3-compatible storage, include the bucket and its configuration in the recovery plan.
Periodically create a test instance or temporary restore and verify that users, resumes, public links and uploaded assets are present. A backup that has never been restored is only an assumption.
Upgrade the application image
Before an upgrade, make a fresh database backup and read the release notes for the target version. Pull the published image and recreate the application service with Compose. The project documents the Docker Hub image amruthpillai/reactive-resume:latest and also publishes an image through GitHub Container Registry.
Best Value
- Compatible with Wide Screens - To ensure compatibility with the dual monitor mount, your each monitor must meet three conditions at the same time: First, computer screens size range: 13 to 32 inches. Second, screen weight range: 4.4 to 19.8 lbs. Third, the back of the monitor screen must have VESA mounting holes with a pitch of 75x75mm or 100x100mm.
- Regarding the compatibility with desks - Your desk must meet three conditions at the same time: First, desk material: Only wooden desks are recommended, plastic or glass desks cannot be used. Second, desk thickness range: 0.59" - 3.54". Third, the bottom of the desk should not have any cross beams or panels, as this will interfere with installation. We recommend carefully checking that your desk and monitors meets all above conditions before purchasing.
- Dual C-Clamp Hold - Worried your dual monitors might wobble or slip? Our upgraded base uses a larger platform plus a dual C-clamp structure to lock the dual monitor arm firmly to your desk. Each arm safely keeps your screens steady while you type, click and game—no shaking, no sliding, just a clean and secure setup you can trust every day. It also provides Grommet Mounting installation choice, both options ensure stable and secure fixation for your 0.59" - 3.54" desk.
- Full-Motion Adjustment For Comfortable View - Pull the screen closer when you’re deep in a spreadsheet, push it back to watch videos, or rotate to portrait for coding — moving everything smoothly with just one hand. The monitor stand offers +85°/-50° tilt, ±90° swivel and 360° rotation. Raise your monitor up to 15.75″ to support a healthy sitting posture. Whether you’re working from home, gaming through the night, or switching between video calls and documents, getting the screens to your natural line of sight helps relieve neck, shoulder and back strain so you can stay focused longer with less fatigue.
- Keep Your Desk Organized: By lifting both screens off the desktop, this dual monitor stand opens up valuable space for your keyboard, notebook, docking station or a simple, clutter-free work area. Built-in cable management guides wires along the arms, keeping cords out of sight and out of the way. Enjoy a tidy, modern workstation that looks as good as it feels to use.
docker compose pull
docker compose up -d
Watch the logs after recreation because migrations run during startup. Keep the previous image reference and a current database backup until you have confirmed login, editing, uploads and PDF export on the new version.
The Tool Desk
Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Use a remote Docker host when administration is separated
Docker supports directing the Compose client at a remote Docker Engine with the DOCKER_HOST, DOCKER_TLS_VERIFY and DOCKER_CERT_PATH environment variables. This can keep deployment commands on a controlled administration machine while the containers run on the VPS. Protect the TLS certificates and restrict access to the remote Docker API; access to that API is effectively control of the host.
When a single VPS is enough—and when to add Redis
Single application instance
One application container plus one PostgreSQL service is the simplest supported arrangement. It avoids cross-instance coordination and is appropriate for a personal site, a small team or a modest public installation. Keep the database private and make sure the VPS has the recommended 2 GB of RAM when both services share it.
Multiple application instances
Horizontal scaling requires shared Redis and a deployment namespace, according to the project documentation. Those shared services coordinate rate limits, resumable streams, cancellation, notifications and view deduplication. Multiple containers without shared coordination can behave inconsistently, so do not add replicas merely because the proxy supports load balancing.
Deployment choices to decide before you build
| Decision | Practical choice for a first deployment | Use the alternative when |
|---|---|---|
| PostgreSQL location | PostgreSQL container on the same private Compose network | You already operate a managed PostgreSQL service and can provide a private, reliable connection. |
| Upload storage | Persistent local mount such as ./data:/app/data |
You need storage independent of the VPS or already operate S3-compatible object storage. |
| Application count | One instance, with no Redis | Traffic and availability requirements justify multiple instances and shared Redis. |
| Administration | Run Compose on the VPS | A controlled deployment machine should manage a remote Docker host through Docker’s TLS environment variables. |
| HTTPS | One reverse proxy for the complete application | You have an existing proxy platform that can forward the API, uploads, fonts and assets as well as the web pages. |
Infrastructure pricing depends on provider, region, storage type and backup policy; the Reactive Resume documentation establishes resource requirements but does not set a universal monthly cost. Compare offers using RAM and CPU headroom, disk growth, managed-database fees, backup automation, restore testing, TLS operations and whether you need Redis for more than one application instance.
Troubleshooting checklist
The application container exits during startup
Inspect the full log:
docker compose logs -f reactive-resume
The most common documented causes are an invalid DATABASE_URL or failure to reach PostgreSQL. Check the service name, credentials, database name, network membership and PostgreSQL startup state. Correct the environment file, then recreate the service with Compose. Because migrations run before traffic is served, a migration error also causes the container to exit.
The health endpoint does not respond
Run curl http://127.0.0.1:3000/api/health on the VPS. If it fails locally, troubleshoot the container and its logs before changing the reverse proxy. If it succeeds locally but the public hostname fails, inspect proxy upstream settings, firewall rules, DNS and the certificate.
Uploads disappear after a restart
Verify that the application service mounts a host directory at /app/data when S3 is disabled. Check that the host path exists, is writable by the container and is included in backups. Recreating a container without a persistent mount removes files stored only in the container layer.
The page loads but actions or shared resumes fail
Confirm that the proxy forwards API requests, public routes and uploaded assets—not just the root HTML page. Recheck APP_URL for the exact HTTPS hostname and repeat the registration, editing, sharing and upload tests from a private browser window.
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Scan for outdated or missing drivers - takes under a minuteDriver Scan →Clear out junk files and repair common Windows errorsFree Scan →Quick Recap
Final go-live checklist
- VPS has at least 1 vCPU and 1 GB RAM; 2 GB RAM is selected when PostgreSQL shares the host.
- Docker Engine is 20.10 or newer and Docker Compose is 2.0 or newer.
- DNS points to the VPS and the firewall does not expose PostgreSQL.
APP_URLis the final public HTTPS origin.DATABASE_URLreaches PostgreSQL over the private network.AUTH_SECRETwas generated withopenssl rand -hex 32and stored privately.- Local uploads use a persistent
./data:/app/datamount, or S3-compatible storage is configured. - Health checks pass and migrations complete before public traffic is enabled.
- The reverse proxy forwards the web app, API, uploads, fonts and assets.
- Registration, login, editing, public sharing, uploads and PDF export have all been tested through HTTPS.
- PostgreSQL and file backups run on a schedule, and a restoration test has succeeded.
- Old
PRINTER_*andBROWSERLESS_*variables are absent on v5.1.0 and later installations.
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




