Deploy Node.js + React Project on VPS

Job ID: 40399839

Budget: $10 – $30 USD

Hi,

I have a ready Node.js + React project running locally. I need it deployed to my Contabo VPS in production.

═══ PROJECT ═══
- Backend: Node.js (Express + Socket.io) + Prisma ORM
- Frontend: React (built with Vite)
- Database: PostgreSQL
- Real-time: WebSocket (Socket.io)
- Email: Nodemailer (SMTP)
- Purpose: Embeddable chat widget for client websites + admin dashboard

═══ SERVER ═══
- Provider: Contabo Cloud VPS 10 (4 vCPU / 8 GB RAM / 75 GB NVMe)
- OS: Ubuntu 22.04 LTS
- Control panel: CloudPanel already installed and working
- Domain: chatmesaj.cc (DNS on Cloudflare)
- Other sites already running on the VPS (PHP/Node/Python) — must NOT be touched

═══ SCOPE ═══
1. Create 2 sites in CloudPanel:
- chatmesaj.cc → STATIC (React build)
- api.chatmesaj.cc → Node.js (backend + WebSocket)

2. Install PostgreSQL, create DB and user

3. Apply Prisma migrations (schema ready) + run FTS setup SQL

4. Run backend with PM2, configure auto-restart on reboot

5. Configure Nginx reverse proxy (via CloudPanel UI) — WebSocket support REQUIRED

6. Issue Let's Encrypt SSL for both domains

7. Add A records on Cloudflare for api subdomain

8. Production .env config (DATABASE_URL, JWT_SECRET, SMTP, FRONTEND_ORIGIN)

9. Configure CORS / WIDGET_ORIGINS correctly

10. End-to-end testing:
- Admin login
- New site registration
- Widget loading on a test client site
- Real-time messaging
- Email delivery

11. Simple daily backup script (pg_dump cron)

12. Deploy doc (README.md) so I can self-update later

═══ REQUIREMENTS ═══
- CloudPanel experience (mandatory)
- Node.js production deployment experience
- PM2 + Nginx WebSocket configuration
- PostgreSQL administration
- Prisma ORM familiarity (preferred)
- Linux server hardening basics

═══ DELIVERABLES ═══
- Working production site (admin + widget)
- SSH/SFTP access instructions
- Backup & update guide
- All credentials handed over securely
Related categories: PHP JavaScript Linux Nginx Node.js PostgreSQL Ubuntu SSL