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

5.0 KiB


title: Dynacat created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, dashboard, docker, auto-categorisation, auto-hebergement] confidence: high contested: false sources: [https://selfh.st/apps/?tag=Dashboard, https://github.com/Typ0genius/dynacat]

📊 Dynacat

Dashboard dynamique de services : catégorisation automatique des conteneurs Docker à partir de leurs labels (stack Traefik, monitoring, media, etc.).

📋 Informations Générales

Champ Valeur
Site web
GitHub Typ0genius/dynacat
License MIT
Langage JavaScript (Node.js)
Étoiles GitHub 914
Catégorie cat-dashboard

📝 Description

Dynacat est un dashboard léger dont la particularité est de générer dynamiquement la liste et la catégorisation des services à partir des labels Docker posés sur les conteneurs (notamment ceux utilisés par app-traefik : traefik.enable, routers, services…).

L'idée : au lieu de maintenir à la main un fichier de configuration qui liste chaque service, on demande à Dynacat de scanner le socket Docker et d'inférer l'organisation. Ajouter un nouveau conteneur avec les bons labels = apparition automatique dans le dashboard, sans reconfiguration.

Points clés :

  • 🐳 Découverte automatique via le socket Docker (/var/run/docker.sock)
  • 🏷️ Catégorisation par labels : une stack (par ex. stack=media) devient une section du dashboard
  • 🎨 Templates de groupes : disposition en tuiles, sections pliables
  • 🖼️ Icônes auto (favicon du domaine) ou label.icon personnalisé
  • Léger, Node.js, base SQLite embarquée
  • 🔌 Compatible avec l'écosystème label-first (Traefik, Docker Compose, Swarm, Portainer stacks)

Différence avec app-dashy / app-glance : ces derniers reposent sur une configuration manuelle (YAML ou UI). Dynacat mise sur le zéro-config : tant que les labels sont bons, le dashboard s'auto-organise.

Différence avec app-homepage : Homepage propose aussi la découverte de services mais reste centré sur une bibliothèque statique éditable, là où Dynacat pousse la logique label-driven.

🚀 Installation

Via Docker (recommandé)

# docker-compose.yml
services:
  dynacat:
    image: typ0genius/dynacat:latest
    container_name: dynacat
    restart: unless-stopped
    ports:
      - "5000:5000"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./data:/app/data
    environment:
      - TZ=Europe/Paris
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.dynacat.rule=Host(`dynacat.example.com`)"
      - "traefik.http.routers.dynacat.entrypoints=websecure"
      - "traefik.http.routers.dynacat.tls.certresolver=letsencrypt"

Installation manuelle

git clone https://github.com/Typ0genius/dynacat.git
cd dynacat
npm install
npm start   # http://localhost:5000

Nécessite Node.js 18+ et l'accès au socket Docker de l'hôte.

⚙️ Configuration

  1. Définir des labels homogènes sur ses stacks Docker (ex. dynacat.group=Media, dynacat.icon=https://…).
  2. Pointer Dynacat sur le socket Docker de l'hôte (montage /var/run/docker.sock).
  3. Choisir le mode de catégorisation : par label de groupe, par stack Compose, par réseau.
  4. Personnaliser l'ordre des sections via les labels dynacat.order=N.
  5. Thème clair/sombre + couleurs par groupe pour une lecture rapide.

🔗 Alternatives

  • app-dashy — Référence des dashboards self-hosted, configuration YAML riche, widgets
  • app-homepage — Dashboard moderne très populaire, services + bookmarks + monitoring
  • app-glance — Widgets multiples, lecture rapide, pas d'auto-découverte
  • app-heimdall — Fiable, mature, configuration manuelle
  • app-fenrus — Voir fiche dédiée : single-user, smart home + apps

🔒 Sécurité

  • 🔐 Mettre Dynacat derrière un reverse-proxy authentifié : le socket Docker exposé donne un accès complet à l'hôte.
  • 🚫 Ne jamais exposer le port 5000 directement sur Internet sans authentification.
  • 🛡️ Privilèges : montage du socket en read-only (ro) suffit pour la découverte, ne pas ajouter privileged: true.
  • 🔍 Auditer les labels des conteneurs : un service mal étiqueté apparaîtra dans le dashboard.

📚 Ressources

🔗 Pages Liées