---
title: Portall
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, docker, ports, reseau, organisation, typescript]
confidence: high
contested: false
sources: [https://selfh.st/apps/?tag=Docker, https://github.com/need4swede/Portall]
---

# 🐳 Portall

> **L'annuaire de vos ports Docker** : générez, organisez et partagez la cartographie des ports exposés sur tous vos conteneurs. Fini les conflits 3000/8080 et les onglets oubliés.

## 📋 Informations Générales

| Champ | Valeur |
| :--- | :--- |
| **Site web** | (GitHub) |
| **GitHub** | [need4swede/Portall](https://github.com/need4swede/Portall) |
| **License** | MIT |
| **Langage** | TypeScript |
| **Étoiles GitHub** | 838 ⭐ |
| **Dernière MAJ** | 2026-05 |
| **Catégorie** | [[cat-docker\|Docker]] |

## 📝 Description

**Portall** répond à une question que tout homelabber s'est posée : *« sur quel port tourne cette satanée app ? »*. L'outil génère, suit et organise la **cartographie complète des ports** de vos conteneurs Docker à travers **plusieurs hôtes**. Vous importez un `docker-compose.yml`, il en extrait tous les ports publiés, les catégorise, et vous permet de les suivre dans le temps.

- ✅ **Parsing automatique** des fichiers `docker-compose.yml` et `docker run`
- ✅ **Multi-hôtes** : agrège les ports de plusieurs machines
- ✅ **Détection de conflits** : alerte si deux stacks utilisent le même port externe
- ✅ **Catégorisation** par service, hôte, protocole (TCP/UDP)
- ✅ **Notes et tags** personnalisés sur chaque port
- ✅ **Historique** : qui a ouvert quoi et quand
- ✅ **Recherche full-text** dans la base
- ✅ **Export** CSV, JSON, Markdown
- ✅ **API REST** pour intégrations
- ✅ **Authentification** intégrée

**Public cible** : homelabbers qui jonglent avec **plusieurs serveurs** et **50+ conteneurs** (VPS, NAS, Raspberry Pi, etc.). Le débutant avec 3 services n'en a pas besoin ; l'utilisateur de [[app-dockpeek]] y verra un complément d'inventaire.

**Différence avec Dockpeek** : [[app-dockpeek]] scanne les ports **exposés en temps réel** sur un hôte. Portall est un **annuaire statique** (parse de configs), plus adapté à la **planification** et à la **documentation** qu'au scan live.

## 🚀 Installation

### Docker Compose

```yaml
# docker-compose.yml
version: '3.8'
services:
  portall:
    image: ghcr.io/need4swede/portall:latest
    container_name: portall
    restart: unless-stopped
    environment:
      - DATABASE_URL=file:/data/portall.db
      - JWT_SECRET=changez-ce-secret
    volumes:
      - portall-data:/data
      - /chemin/vers/stacks:/stacks:ro  # optionnel : import auto
    ports:
      - "7777:3000"

volumes:
  portall-data:
```

### Docker run

```bash
docker run -d \
  --name portall \
  -p 7777:3000 \
  -v portall-data:/data \
  -e JWT_SECRET=changez-ce-secret \
  ghcr.io/need4swede/portall:latest
```

## ⚙️ Configuration Initiale

1. **Accéder à l'UI** : `http://IP:7777`
2. **Créer le compte admin** au premier démarrage
3. **Ajouter un hôte** : Hosts > New (nom, adresse, type)
4. **Importer un `docker-compose.yml`** : Stacks > Import > drag & drop
5. **Réviser la cartographie** générée et corriger les conflits éventuels
6. **Exporter** en CSV ou Markdown pour partager avec votre équipe

## 🔄 Alternatives

### Open Source

- [[app-dockpeek]] — Dashboard live des ports **exposés** (complémentaire)
- **Portainer** — Inclut une vue des ports, mais pas d'agrégation multi-hôte
- **Heimdall** — Page d'accueil avec liens vers vos services (pas de gestion de ports)
- **Portward** — Annuaire statique similaire, projet plus petit

### Comparaison Portall vs alternatives

| Critère | Portall | Dockpeek | Heimdall | Portward |
| :--- | :--- | :--- | :--- | :--- |
| Source des données | Compose files | Runtime Docker | Manuel | Compose files |
| Temps réel | ❌ | ✅ | ❌ | ❌ |
| Multi-hôte | ✅ | ❌ | ❌ | ❌ |
| Détection conflits | ✅ | ❌ | ❌ | Limité |
| Auth | ✅ | ❌ | Optionnel | ❌ |
| Export | CSV/JSON/MD | ❌ | ❌ | ❌ |

**Verdict** : Portall est **le seul** outil dédié à la **planification** des ports. À utiliser en complément de [[app-dockpeek]] (temps réel) et de [[app-portainer]] (runtime).

### Propriétaires (ce que Portall remplace)

- **Manuels Confluence / Notion** — Qu'on finit par ne plus maintenir
- **Tableurs maison** — Fonctionnent, mais ne parsent pas les Compose
- **Fichiers README** oubliés au fond d'un repo

## 🔐 Sécurité

- ⚠️ **Exposition de la topologie** : Portall révèle les ports internes de votre infra. **Ne jamais l'exposer** sans HTTPS ni auth
- **Changez `JWT_SECRET`** : valeur par défaut = porte ouverte
- **HTTPS obligatoire** via [[app-traefik]]
- **Volume `/stacks` en read-only** (`:ro`) : Portall n'a pas besoin d'écrire dedans

## 📚 Ressources

- [GitHub need4swede/Portall](https://github.com/need4swede/Portall)
- [Issue tracker et démos](https://github.com/need4swede/Portall/issues)

## Pages Liées

- [[cat-docker]] — Catégorie Docker
- [[app-portainer]] — Runtime Docker
- [[app-dockge]] — Compose manager
- [[app-yacht]] — Templates Docker
- [[app-traefik]] — Reverse proxy HTTPS
- [[recettes-docker-compose]] — Stacks
- [[securisation-home-lab]] — Sécurité
