3.9 KiB
title: PortChecker created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, networking, monitoring, ports, go, low-resource] confidence: medium contested: false sources: [https://selfh.st/apps/?tag=networking, https://github.com/portsails/portchecker]
PortChecker 🔌
Microservice Go ultra-léger pour vérifier en continu la disponibilité de ports TCP/UDP distants et alerter en cas d'indisponibilité.
| Métadonnée | Valeur |
|---|---|
| Site web | https://github.com/portsails/portchecker |
| GitHub | https://github.com/portsails/portchecker |
| License | MIT |
| Langage | Go |
| Étoiles | 9 ⭐ |
| Dernière MAJ | 2023 |
| Catégorie | cat-networking |
Description
PortChecker est un service minimaliste écrit en Go dont l'unique mission est de pinger régulièrement des ports réseau (TCP ou UDP) sur des hôtes distants et de notifier quand un port devient inaccessible. C'est l'équivalent ultra-simplifié d'app-uptime-kuma focalisé exclusivement sur la couche transport plutôt que sur des URLs HTTP.
L'app se configure via un fichier YAML listant les couples hôte:port à surveiller, avec un intervalle de sondage et un timeout par cible. Elle expose une petite interface web (HTML/JS vanille, pas de framework lourd) qui affiche l'état de chaque cible sous forme de tableau avec historique récent. Les alertes partent par webhook (Ntfy, Gotify, Discord, Slack) ou email.
Le binaire Go est statique, sans dépendance C, et consomme très peu de RAM (≈10 Mo) — parfait pour tourner sur un petit VPS, un routeur OpenWrt, ou un container sidecar qui supervise d'autres services du même hôte. Le projet est jeune et peu étoilé, à considérer comme expérimental mais fonctionnel.
Installation
Docker Compose (recommandé)
services:
portchecker:
image: ghcr.io/portsails/portchecker:latest
container_name: portchecker
restart: unless-stopped
environment:
- TZ=Europe/Paris
- CONFIG=/data/config.yml
volumes:
- ./config.yml:/data/config.yml:ro
- portchecker-data:/data
ports:
- "8088:8080"
volumes:
portchecker-data:
Manuelle (binaire Go)
git clone https://github.com/portsails/portchecker.git
cd portchecker
go build -o portchecker .
./portchecker --config ./config.yml
Configuration
Exemple de config.yml :
interval: 60s
timeout: 5s
targets:
- name: "Web principal"
host: "example.com"
port: 443
protocol: tcp
- name: "Base PostgreSQL"
host: "db.internal"
port: 5432
protocol: tcp
- name: "VPN WireGuard"
host: "vpn.example.com"
port: 51820
protocol: udp
notifications:
webhook: "https://ntfy.example.com/portchecker"
Alternatives
- Open Source : app-uptime-kuma (plus complet, HTTP/TCP/PING/DNS), Uptime (alternative), checkmk (enterprise, lourd)
- CLI only :
tcpping,ncat -z,netcatdans un cron (script bash minimal) - Propriétaire : Pingdom TCP checks, UptimeRobot (limité à quelques ports en gratuit)
- Nmap : pour des scans ponctuels, pas du monitoring continu
Sécurité
- Cibles surveillées : l'app ne fait que des handshakes TCP/SYN ou probes UDP sortants — pas d'intrusion, comportement passif.
- Exécution privilégiée : pas besoin de root, l'app n'écoute que sur le port web configuré.
- Webhook : utiliser HTTPS pour les destinations Ntfy/Discord (le secret peut fuiter dans les logs).
- Binaire Go : signer ou reconstruire depuis les sources pour vérifier l'intégrité (projet jeune).
Ressources
Pages Liées
- cat-networking
- recettes-docker-compose
- app-uptime-kuma — monitoring plus large (HTTP, ping, DNS)