PocketHost 3.0 — SFTP file access, scoped account keys, trusted IPs, phio deploy, and more. Flounder lifetime ends July 1 (6 days left) . What's changing
PocketHost enforces several limits to keep hosting fair and reliable. For trusted proxy setup and conference planning, see Trusted IPs.
PocketHost implements multiple layers of rate limiting.
Cloudflare restricts requests to 50 requests per 10 seconds per IP at the edge, before traffic reaches PocketHost infrastructure.
These limits reset every hour. File routes (/api/files/...) consume less of the hourly budget than API routes. See weighted rate limits for how weighting works.
Once a request completes, the slot becomes available for new requests.
Connecting from an address on your Trusted IPs list uses the higher numbers above. Manage the list under Account → Trusted IPs.
If you make many requests from the client, use the Bottleneck NPM package to throttle efficiently.
Exceeding rate limits often indicates a coding issue. Consider JS Hooks for bulk fetching server-side instead of tight client polling.
If traffic comes from a shared server IP, see Trusted IPs or Server-Side PocketBase is an Anti-Pattern.
Every request through the PocketHost firewall (success or 429) includes X-PocketHost-RateLimit-* headers with your current budget on that edge. Inspect them with browser devtools, curl -i, or your HTTP client.
| Header | Meaning |
|---|---|
X-PocketHost-RateLimit-Ip-Hourly-Limit | Per-IP hourly cap (API-weighted; see below) |
X-PocketHost-RateLimit-Ip-Hourly-Remaining | Budget left this hour for your client IP on this instance |
X-PocketHost-RateLimit-Ip-Hourly-Reset | Unix timestamp when the per-IP hourly window resets |
X-PocketHost-RateLimit-Instance-Hourly-Limit | Per-instance hourly cap |
X-PocketHost-RateLimit-Instance-Hourly-Remaining | Budget left this hour for the instance hostname |
X-PocketHost-RateLimit-Instance-Hourly-Reset | Unix timestamp when the per-instance hourly window resets |
X-PocketHost-RateLimit-Ip-Concurrent-Limit | Max simultaneous requests from your IP on this instance |
X-PocketHost-RateLimit-Ip-Concurrent-Remaining | Concurrent slots left (while the request is in flight) |
X-PocketHost-RateLimit-Instance-Concurrent-Limit | Max simultaneous requests for the instance |
X-PocketHost-RateLimit-Instance-Concurrent-Remaining | Instance concurrent slots left |
Limit and Remaining numbers use the same API request weights as the caps above (1,000 / 10,000 per hour, etc.). /api/files/... routes consume less budget, so file-heavy traffic can show higher Remaining than a naive request count would suggest.
Example:
curl -sI "https://your-subdomain.pockethost.io/api/health" Look for the X-PocketHost-RateLimit-* lines in the response headers. On 429 Too Many Requests, the same headers reflect the bucket that blocked you, plus Retry-After.
These headers reflect the edge firewall that handled the request, not a global dashboard aggregate. Cloudflare edge limits (above) are separate and are not included in these headers.
PocketHost instances may enter hibernation during inactivity. They wake on the next request, but the first request after hibernation may be slower.
PocketHost enforces Pay Per PocketBase storage and powered-on caps:
We also monitor bandwidth, storage, and CPU under fair use. We think fair means using about the same resources as the average active app on the platform. See Pricing Ethos for how we balance scale and indie-friendly hosting.
We operate under a Fair Use Policy in our Terms of Service. If usage significantly exceeds typical levels, we may contact you to discuss a resolution.
In extreme cases, if the issue cannot be resolved and it negatively impacts other users, your instance may be suspended. In severe cases, we may delete data without providing a backup. This is rare (it has only happened once due to an abusive situation).
Our Terms of Service outline restrictions on prohibited content and usage. Review those guidelines to ensure your instance complies with our policies.