Initial vault setup

This commit is contained in:
2026-06-09 18:40:21 +02:00
commit bda02d587f
3692 changed files with 402457 additions and 0 deletions
@@ -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)