Help Centre

Getting started & FAQ

Everything you need to use Portpeek effectively — how it works, what the results mean, and what it cannot do yet.

Getting started

  1. Enter a hostname — Type a domain name (e.g. example.com) or IP address (e.g. 203.0.113.1) into the hostname field on the App page.
  2. Select ports — Check the boxes for the common ports you care about, or enter a custom port number (1–65535). You can check up to 8 ports at once.
  3. Click "Check ports" — Portpeek opens a real TCP connection to each selected port from outside your network and measures the result.
  4. Read the result — Each port gets one of three statuses:
    ● Open — service is listening and reachable.
    ● Refused — the host answered but nothing is listening on that port.
    ● Timed out — no response at all (firewall is dropping traffic or host is unreachable).
  5. Troubleshoot based on the status — The action hint below your results tells you which direction to investigate next.

Frequently asked questions

Answer

What's the difference between "refused" and "timed out"? Why does it matter?

This is the core question Portpeek was built to answer. Most tools blur the two, but they have completely different fixes:

Refused means your host sent back a TCP RST (reset) packet. The host is reachable over the internet, your firewall is permitting traffic to that port, but no application is bound to it. Check whether your service started, is listening on the correct interface (0.0.0.0 vs 127.0.0.1), and the port in your config file matches.

Timed out means no response came back within 5 seconds. The packet was dropped somewhere — likely by a firewall, security group, iptables rule, or the host itself is offline. Check your cloud provider's security group settings, your host firewall (iptables -L, ufw status), and whether the host is actually running.

Answer

Can I check a range of ports or scan my whole server?

No. Portpeek is a reachability checker, not a port scanner. You must type explicit port numbers. You can check up to 8 ports in a single request using the preset checkboxes (80, 443, 22, 3306, 5432, 6379, 8080) plus one custom port. If you need to test a specific port not in the list, enter it as a custom port number.

This limit exists by design — Portpeek connects to each port individually with a real TCP handshake, and bulk scanning would defeat the purpose of giving clear, measured answers for each port.

Answer

Why can't I check port 25 (SMTP)?

Outbound port 25 is blocked on the platform Portpeek runs on (Cloudflare Workers). A check to port 25 would always fail, and the result would be misleading — it would look like your host is unreachable when the problem is actually our platform, not your network. Rather than give you a false negative, we disallow the check entirely.

If you need to verify SMTP reachability, you will need to test from a different environment that permits outbound port 25.

Answer

Does the tool actually work right now? The app page says "Backend API pending deployment".

The App page is honest about its current state: the front-end UI is built and functional, but the server-side API that performs the actual TCP connections is not yet deployed to the live site. Once the backend is deployed, the page will perform real checks. The design, status semantics (open / refused / timed out), port selection, all measurement logic, and the 8-port limit are as described on the home page and in this Help Centre — these are not speculative features, they are implemented and ready for the deployment step.

Answer

Do you log or store the hostnames I check? What about my IP address?

No. Portpeek is stateless by design. No accounts exist, no data is stored, no logs of individual checks are kept, and no analytics scripts or cookies are used. The hostname and ports you enter are sent to the server as a single HTTP POST request, processed immediately, and not written to any persistent storage.

See the Privacy Policy for the full details.

Answer

Can I use Portpeek from a script or CI pipeline?

Yes. The /api/check endpoint accepts a JSON POST body with {"hostname": "example.com", "ports": [80, 443]} and returns a JSON response. There are no API keys, no authentication, and no rate limits (beyond the 8-port-per-request limit). You can integrate it into deployment scripts, monitoring dashboards, or CI pipelines that need to verify a service is reachable after a deploy.

Example using curl:

curl -s -X POST https://portpeek-u1.agen2ic.ai/api/check -H 'Content-Type: application/json' -d '{"hostname":"example.com","ports":[80,443]}'

Note: This endpoint is not yet deployed. It will work once the backend is live.

Answer

Is there a rate limit? Can I run as many checks as I want?

There is no daily, hourly, or per-IP rate limit in the current design. Each request is capped at 8 ports and each port connection has a 5-second timeout. The service is provided as best-effort with no SLA. If usage patterns change significantly, rate limiting may be introduced, but there are no concrete plans for it.

Answer

Why do hosts behind Cloudflare show as "timed out"?

Because Portpeek runs on Cloudflare Workers, and a Cloudflare Worker cannot complete a TCP handshake to another Cloudflare-proxied host — Cloudflare does not forward raw TCP from one Worker to another proxied origin. The check will appear as a timeout even when the host is perfectly reachable over the internet. This is a platform limitation, not a problem with your network or your service.

Known limitations

Portpeek is an early-stage tool. These are the things it cannot do yet, or cannot do at all. We are honest about them so you can decide whether Portpeek fits your use case.

Contact us

We want to hear about bugs, feature requests, and anything else you'd like to share.

Status: Email support not yet configured

No email support is available at this time. The Portpeek deployment does not have a mailbox, so any email address published here would be unreachable. We will not ask you to send mail to an address that does not exist.

If you found this tool through a deployment channel, repository, or platform (such as Cloudflare Workers or a GitHub repo), that channel is the best way to reach the operator. Bugs and feature requests documented there are the most likely to be seen.

This is a known gap. When email support is configured, this page will be updated with a working contact address and the owner will be notified.