Requirements
Server requirements for self-hosting Owlmetry — OS, Node.js, PostgreSQL, and hardware.
Server requirements for self-hosting Owlmetry.
Operating system
Ubuntu 24.04 LTS is the tested and recommended OS. Other Linux distributions will likely work but are not officially supported. The automated setup script targets Ubuntu specifically.
Hardware
| Resource | Minimum | Recommended |
|---|---|---|
| RAM | 1 GB | 2 GB |
| Disk | 10 GB | 25 GB |
| CPU | 1 vCPU | 2 vCPU |
The setup script creates a 2 GB swap file if one does not already exist, which helps on 1 GB RAM machines during pnpm install and Next.js builds.
Disk usage depends on event volume. The MAX_DATABASE_SIZE_GB environment variable enables automatic pruning of old event partitions when the database exceeds a size threshold.
If you plan to use event attachments (SDK file uploads like logs or screenshots), budget additional disk for OWLMETRY_ATTACHMENTS_PATH (default /opt/owlmetry-attachments). Attachment bytes live on disk, not in Postgres, and are governed by per-project and per-user quotas — default 5 GB per project ceiling and 250 MB per user bucket.
Software dependencies
| Dependency | Version | Notes |
|---|---|---|
| Node.js | 22 LTS | Installed via NodeSource repository by the setup script |
| pnpm | Latest | Installed globally via npm install -g pnpm |
| pm2 | Latest | Installed globally via npm install -g pm2. Process manager for the owlmetry-api and owlmetry-web services |
| PostgreSQL | 16 | Installed from the Ubuntu 24.04 apt repository |
| nginx | Latest | Reverse proxy for the API and web dashboard |
| git | Latest | Required to clone the repository onto the VPS |
All dependencies are installed automatically by the setup script (see Installation).
Domain and DNS
You need a domain with DNS control. Three A records are required, all pointing to your VPS public IP:
yourdomain.com(or@)api.yourdomain.comingest.yourdomain.com
SSL
Two options:
- Cloudflare (recommended): Put your domain behind Cloudflare with proxy enabled (orange cloud). Cloudflare handles SSL termination. nginx listens on port 80 only. Set Cloudflare SSL mode to "Full."
- Let's Encrypt: Use certbot to obtain and auto-renew certificates directly on the VPS. No Cloudflare required.
Email (optional)
Owlmetry uses email to send verification codes for passwordless authentication. You have two options:
- Resend API key: Set
RESEND_API_KEYin your environment to send real emails via Resend. - Console mode: If no Resend key is configured, verification codes are printed to the server console. This is fine for single-user or development setups.
Network
The VPS needs outbound internet access for:
aptpackage installationpnpm install(npm registry)- Resend API (if configured for email)
Inbound, only ports 80 and 443 need to be open (or just port 80 if Cloudflare handles SSL). SSH access should be restricted to a VPN or trusted IP range.
