Initial vault setup
This commit is contained in:
@@ -0,0 +1,113 @@
|
||||
---
|
||||
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é)
|
||||
|
||||
```yaml
|
||||
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)
|
||||
|
||||
```bash
|
||||
git clone https://github.com/portsails/portchecker.git
|
||||
cd portchecker
|
||||
go build -o portchecker .
|
||||
./portchecker --config ./config.yml
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
Exemple de `config.yml` :
|
||||
|
||||
```yaml
|
||||
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](https://github.com/ybizeul/uptime) (alternative), [checkmk](https://github.com/Checkmk/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
|
||||
|
||||
- [selfh.st — Networking](https://selfh.st/apps/?tag=networking)
|
||||
- [GitHub portsails/portchecker](https://github.com/portsails/portchecker)
|
||||
|
||||
## Pages Liées
|
||||
|
||||
- [[cat-networking]]
|
||||
- [[recettes-docker-compose]]
|
||||
- [[app-uptime-kuma]] — monitoring plus large (HTTP, ping, DNS)
|
||||
Reference in New Issue
Block a user