Ports et services¶
Référence des ports réseau utilisés par gitrust et ses dépendances.
Tableau des ports¶
| Port | Protocole | Service | Processus | Binding par défaut | Configurable |
|---|---|---|---|---|---|
| 4000 | TCP/HTTP | Interface web + API REST | gitrust (axum) |
SERVER_HOST:SERVER_PORT |
Oui |
| 2222 | TCP/SSH | Serveur Git SSH | gitrust (Russh) |
SSH_LISTEN_ADDR:SSH_PORT |
Oui |
| 5432 | TCP | PostgreSQL | postgres |
127.0.0.1:5432 |
Via PG config |
| 6379 | TCP | Redis (sessions) | redis-server |
127.0.0.1:6379 |
Via Redis config |
| 25 | TCP/SMTP | Envoi e-mail sortant (non chiffré) | Client SMTP gitrust | Outbound seulement | Via SMTP_PORT |
| 465 | TCP/SMTPS | Envoi e-mail sortant (TLS natif) | Client SMTP gitrust | Outbound seulement | Via SMTP_PORT |
| 587 | TCP/SMTP+STARTTLS | Envoi e-mail sortant (recommandé) | Client SMTP gitrust | Outbound seulement | Via SMTP_PORT |
Détail par service¶
Port 4000 — Interface web et API REST (HTTP)¶
gitrust expose son interface web HTMX et son API REST v1 sur ce port via le framework axum.
Configuration :
En production : gitrust écoute sur 127.0.0.1:4000 et un reverse-proxy (Nginx, Caddy, Traefik) termine TLS et proxifie vers ce port. Les clients n'accèdent jamais directement au port 4000.
Règle firewall (si reverse-proxy sur la même machine) :
# Aucune ouverture nécessaire depuis l'extérieur — le proxy écoute sur 443
# Bloquer le port 4000 depuis l'extérieur :
sudo ufw deny 4000/tcp
En développement : gitrust peut écouter sur 0.0.0.0:4000 pour un accès depuis le LAN.
Port 2222 — Serveur Git SSH (Russh)¶
gitrust intègre son propre serveur SSH via la bibliothèque Russh — ce n'est pas le démon sshd du système d'exploitation. Les deux peuvent coexister sans conflit.
Configuration :
SSH_PORT=2222
SSH_LISTEN_ADDR=0.0.0.0 # accès direct
# ou
SSH_LISTEN_ADDR=127.0.0.1 # derrière nginx stream proxy
Accès direct (recommandé pour la simplicité) : ouvrir le port 2222 dans le firewall.
URL de clone : ssh://git@VOTRE_DOMAINE:2222/owner/repo.git
Via nginx stream proxy (port 22) : si vous souhaitez que les utilisateurs clonent sur le port standard 22, configurez nginx comme proxy de flux TCP :
# Dans nginx.conf, section stream (hors section http)
stream {
upstream gitrust_ssh {
server 127.0.0.1:2222;
}
server {
listen 22;
proxy_pass gitrust_ssh;
}
}
Dans ce cas, SSH_LISTEN_ADDR=127.0.0.1 et SSH_PUBLIC_HOST=VOTRE_DOMAINE (sans port dans les URLs de clone).
Attention : si le port 22 est déjà utilisé par
sshdpour l'administration du serveur, déplacezsshdsur un autre port avant de configurer le proxy nginx.
Règle firewall :
Port 5432 — PostgreSQL¶
PostgreSQL doit toujours écouter sur 127.0.0.1 (ou un réseau privé), jamais sur 0.0.0.0 en production.
Vérification :
Règle firewall : aucune ouverture vers l'extérieur.
Pour une architecture multi-serveurs (gitrust et PostgreSQL sur des machines distinctes), utilisez un réseau privé ou un tunnel SSH — jamais une exposition directe sur Internet.
Port 6379 — Redis (sessions multi-instances)¶
Redis n'est nécessaire que si SESSION_BACKEND=redis dans .env. Par défaut, gitrust utilise PostgreSQL pour les sessions.
Configuration Redis (dans /etc/redis/redis.conf) :
Règle firewall : aucune ouverture vers l'extérieur.
Ports SMTP sortants (25, 465, 587)¶
Ces ports sont utilisés en sortant uniquement : gitrust se connecte au serveur SMTP configuré dans SMTP_HOST. Gitrust n'héberge pas de serveur SMTP.
| Port | Usage | Recommandation |
|---|---|---|
| 25 | SMTP non chiffré | Interdit en production, souvent bloqué par les FAI et hébergeurs |
| 465 | SMTPS (TLS natif) | Recommandé avec SMTP_USE_TLS=true |
| 587 | SMTP + STARTTLS | Recommandé avec SMTP_USE_STARTTLS=true |
Aucune règle firewall entrante nécessaire pour SMTP.
Architecture réseau par topologie¶
Développement local¶
Tous les ports en 0.0.0.0, COOKIE_SECURE=false, APP_DEBUG=true.
Production mono-machine (recommandé)¶
Internet → :443 (HTTPS) → nginx → 127.0.0.1:4000 (gitrust HTTP)
Internet → :2222 (SSH) → gitrust directement
Internet ← SMTP sortant → smtp.prestataire.com:587
Règles firewall :
sudo ufw allow 443/tcp # HTTPS via nginx
sudo ufw allow 2222/tcp # Git SSH
sudo ufw deny 4000/tcp # Masqué derrière nginx
sudo ufw deny 5432/tcp # PostgreSQL interne uniquement
Production avec proxy SSH sur port 22¶
URL de clone : git@gitrust.votre-domaine.com:owner/repo.git