A fast port scanner written in Rust that finds open ports quickly and can pipe results into Nmap or custom scripts.
dsgnr/portchecker.io
Open-source TCP port checker with a REST API and web UI, self-hostable via Docker and built on Litestar.
- Stars
- 198
- Forks
- 10
- Open issues
- 1
- Last commit
- 6 days ago
What is it?
portchecker.io checks whether a TCP port is reachable on a given hostname or IP address. It is useful for troubleshooting network setups, verifying firewall rules, and seeing which ports are exposed to the outside.
The project has two parts: a static React front end served by Nginx, and a Python API built with Litestar and run under gunicorn with uvicorn workers. Both can be run standalone for development or brought up together with Docker Compose, using prebuilt images published to GitHub Container Registry.
By default the API refuses to check private IP addresses from the IANA special-purpose ranges; setting the ALLOW_PRIVATE option enables them. The API also exposes a Prometheus /metrics endpoint for response times and status codes, and includes smoke and Playwright browser tests in CI.
Key features
- 01Checks TCP port availability for any hostname or IP address.
- 02Exposes a REST API with documented routes at /docs.
- 03Includes a web UI served by Nginx.
- 04Runs in Docker, with prebuilt images and Docker Compose files.
- 05Provides a Prometheus metrics endpoint for API monitoring.
- 06Can optionally allow checks against private IP ranges.
Use cases
- Checking whether a service's port is open after changing firewall rules.
- Verifying from outside a network that a server's ports are exposed as intended.
- Integrating port checks into scripts or monitoring via the REST API.
- Self-hosting a port checker on your own infrastructure.
Quick start
- 1
Start the production stack with Docker Compose (front-end on port 8080, API on port 8000)
docker-compose up
Things to know
- Licensed under GPL-3.0, a copyleft license that requires derivative works to be open-sourced under the same terms.
- Standalone development needs Python 3.13 with Poetry and Node 26 or newer, so Docker is the simpler route.
In collections
Topics
FAQ
- What is portchecker.io?
- Open-source TCP port checker with a REST API and web UI, self-hostable via Docker and built on Litestar. portchecker.io checks whether a TCP port is reachable on a given hostname or IP address. It is useful for troubleshooting network setups, verifying firewall rules, and seeing which ports are exposed to the outside.
- Is portchecker.io free to use? What license does it have?
- portchecker.io is open source under the GPL-3.0 license. Check the license terms before using it in commercial products.
- Is portchecker.io still maintained?
- Actively maintained. The last commit to portchecker.io was on Nov 1, 2026.
- What can I use portchecker.io for?
- Checking whether a service's port is open after changing firewall rules. Verifying from outside a network that a server's ports are exposed as intended. Integrating port checks into scripts or monitoring via the REST API. Self-hosting a port checker on your own infrastructure.
- How do I install portchecker.io?
- Start the production stack with Docker Compose (front-end on port 8080, API on port 8000): docker-compose up
- Where can I get portchecker.io?
- The source code and installation instructions are on GitHub: https://github.com/dsgnr/portchecker.io
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A self-hosted web UI for creating, editing, and running Docker Compose stacks from compose.yaml files.
Deploys and scales containerised apps across your own Docker hosts over a WireGuard mesh, without Kubernetes or Swarm.
A Docker management tool that works directly on your Docker Compose files for homelab users.
Open-source firewall and router platform based on FreeBSD, providing the GUI, API and system backend for OPNsense.
A CLI tool for defining and running multi-container Docker applications from a single Compose file.