Requirements and Preparation
PWA Hub is deployed on your own server. Before running the installer, prepare a few things - a clean server and a couple of accounts with external services. It takes 15-30 minutes, but in return the installation itself goes smoothly and without surprises.
What you'll need - checklist
- ✅ A clean VPS (Ubuntu or Debian) - a completely empty server.
- ✅ A domain - for example, one registered with Namecheap.
- ✅ A Cloudflare account - for DNS and SSL.
- ✅ A Namecheap account - for registering and managing domains.
- ✅ A Filter Account (Adspect, TrafficArmor or FraudFilter) - anti-bot traffic protection.
- ✅ A PWA Hub license key - from the vendor.
Let's go through each item.
1. Server (VPS)
Clean server only
PWA Hub needs a completely empty server - with no other sites, panels, or running services. Ports 80 and 443 must be entirely free. On a server where something is already running, the installation will conflict. Use a fresh, newly created machine.
Mandatory requirements (the installer checks these - it will stop if they aren't met):
- OS: Ubuntu 20.04 or newer, or Debian 12, 13.
- Architecture: x86_64 or aarch64.
- CPU: at least 2 vCPUs.
- RAM: at least 4 GB.
- Disk: at least 20 GB of free space.
- Access: root (run via
sudo). - Ports: 80 and 443 free (web server).
Recommended resources by plan. PWA Hub is a full stack (a database, analytics, an event queue, a cache, websockets, storefront rendering, and an anti-bot filter), so take a VPS with headroom even on the entry plan. A guide for the PWA Hub plans:
| Plan | Seats | Domains | vCPU | RAM | Disk (NVMe SSD) |
|---|---|---|---|---|---|
| Free | 1 | 1 | 2 | 4 GB | 20 GB |
| Solo | 1 | 5 | 4 | 8 GB | 40 GB |
| Team | 5 | 50 | 6 | 16 GB | 80 GB |
| Agency | 10 | 200 | 8 | 32 GB | 160 GB |
Traffic is unlimited on every plan
A plan caps seats and domains, but not traffic - visits aren't limited anywhere. So the numbers above are a starting point, not a ceiling. Real needs are driven by peak traffic (visits per second) and the volume of analytics: if you drive a lot, scale vCPU and disk first, regardless of plan.
What affects what:
- RAM - the database and analytics keep data and indexes in memory; a shortage hurts speed the most. Don't go below 8 GB even on Solo.
- CPU - storefront rendering and the anti-bot check on every visit; add vCPUs when load stays above 70-80%.
- Disk - NVMe/SSD only - visits and conversions are stored in full, so it grows over time. History compresses well, so gigabytes accumulate slowly, but keep at least 30% free and expand as you grow.
Scaling up is easy
Start from the baseline and add resources when CPU/RAM stays maxed out or latency rises. Vertical scaling (adding vCPU/RAM/disk at your provider) usually takes a couple of minutes and one restart.
Where to get a VPS
Any VPS provider will do (Hetzner, DigitalOcean, Vultr, etc.). When creating one, choose a clean Ubuntu or Debian image - with no preinstalled panels or web servers.
2. Domain
You need a domain on which the system will run. The control panel lives on the host you pick when activating the license: a subdomain such as admin.<your-domain> or a separate domain. You can register a domain with Namecheap (see below) or with any other registrar - the key requirement is that you can manage its DNS through Cloudflare.
3. Cloudflare account
Cloudflare handles the DNS for your domains and the encryption of your traffic. The free plan is enough.
- Sign up at cloudflare.com.
- Later you'll create an API Token with permissions for zones and DNS - you'll enter it in the panel, and the system will manage domain records on its own.
- You'll need to set the encryption mode to SSL/TLS = Full.
The detailed setup order is covered in the "Domains and Cloudflare" section.
4. Namecheap account
Namecheap is used to register and manage domains directly from the panel. You'll need an account with API access enabled:
- API Key and API User - in the API section of your Namecheap profile.
- Whitelist IP - in the API settings, you need to add your server's IP (without this, requests will not go through).
TIP
API access in Namecheap is enabled on request and once their conditions are met (for example, a minimum balance/number of domains). Set it up in advance so you don't have to wait during the setup stage.
5. Filter Account (anti-bot)
PWA Hub runs every visitor through an anti-bot filter: a real person sees your application (PWA), while a bot sees a white page. For this you need an account with a filtering service.
- Adspect, TrafficArmor or FraudFilter will do. Create an account with one of them and take the access key - you'll enter it in the panel in the filter accounts section. Which key each service needs is covered in the "Filter accounts" section.
Without a filter, traffic is blocked
Until the filter is configured, the system treats all visitors as bots by default (fail-closed) and shows a white page. This is a safeguard: it prevents "raw" traffic from accidentally reaching your offer.
6. License key
To run PWA Hub you need a license key. Get it from the vendor (the license service is pwahub.org). The installer asks for the key first thing and won't install anything without an active license - see "Installation".
Ready?
Once the clean server is up and the accounts are created, move on to the "Installation" section. Everything is deployed with a single command.