Multi-tenant SaaS platform — app.queunir.com on OVH (192.99.145.61)
Nginx serves the SPA statically. API requests proxy through the Gateway to the user's assigned Slice container.
Each user gets an isolated Docker container (slice) with its own WhatsApp session, database, and media storage.
| Resource | Isolation |
|---|---|
| Database | wa_slice_1, wa_slice_2, etc. |
| WhatsApp Session | /data/slices/{n}/session |
| Media Files | /data/slices/{n}/media |
| Network Ports | 5001, 5003, 5005, 5007, 5009, 5011 |
All WhatsApp data extraction reads from the rendered HTML DOM — never WhatsApp's internal window.Store.* APIs. This is a critical anti-detection measure. The DOMReader service (57KB) implements this pattern.
| Property | Value |
|---|---|
| Server | OVH VPS — 192.99.145.61 |
| OS | Ubuntu 25.04 |
| CPU | 16 vCPU |
| RAM | 64GB + 32GB swap |
| Disk | 350GB SSD |
| Cost | $40.40/month |
| Stack | Docker 29.2.1, Node.js 20, PostgreSQL 17.7, Nginx 1.26.3 |
| Security | UFW (22/80/443), fail2ban, SSH key-only |
| Domain | app.queunir.com (Certbot SSL) |