Files
2026-06-09 18:40:21 +02:00

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, netcat dans 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