Retour aux outils
MonitoringIntermédiaireOpen sourceAuto-hébergeable

Mafl

**Dashboard minimaliste horizontal** : une **barre supérieure** façon launcher/terminal, regroupant

MAJ 2026-06-14
Mafl
Site officiel Code source★ 0

Mafl prend le contre-pied des dashboards verticaux classiques (Dashy, Heimdall…) : au lieu d'une grille, on a une barre horizontale unique listant les services. Inspiré de l'esthétique des pages d'accueil orientées terminal/hacker, il mise sur l'efficacité visuelle et la sobriété.

Description

Mafl prend le contre-pied des dashboards verticaux classiques (Dashy, Heimdall…) : au lieu d'une grille, on a une barre horizontale unique listant les services. Inspiré de l'esthétique des pages d'accueil orientées terminal/hacker, il mise sur l'efficacité visuelle et la sobriété.

Philosophie :

  • 🧭 Une seule barre horizontale : pas de scrolling infini, pas de widgets
  • 🔤 Typographie monospace + couleurs sobres
  • 🖼️ Icônes claires : une icône par service, libellé court
  • 🌑 Mode sombre par défaut
  • ⚡ Très léger : peu de JS, peu de CSS, rendu instantané
  • 📐 Layout responsive : la barre s'adapte aux écrans larges (TV, écrans 4K, ultra-wide)

Cas d'usage idéal :

  • 🖥️ Page d'accueil navigateur sur grand écran
  • 📺 Dashboard TV/homelab affiché en permanence sur un écran mural
  • 🧪 Public cible « power users » : on veut la liste, pas la déco

Différence avec [[app-glance]] : Glance verticalise en colonnes, Mafl horizontalise en une ligne.

Différence avec [[app-dashy]] : Dashy = riche et configurable, Mafl = minimal et rapide.

Limites assumées : pas de widgets, pas de météo, pas de monitoring — c'est un lanceur, pas un portail d'information.

Installation

Via Docker (recommandé)

# docker-compose.yml
services:
  mafl:
    image: hhftechnology/mafl:latest
    container_name: mafl
    restart: unless-stopped
    ports:
      - "3000:3000"
    volumes:
      - ./config.yaml:/app/config.yaml:ro
    environment:
      - TZ=Europe/Paris
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.mafl.rule=Host(`mafl.example.com`)"
      - "traefik.http.routers.mafl.entrypoints=websecure"
      - "traefik.http.routers.mafl.tls.certresolver=letsencrypt"

Installation manuelle

git clone https://github.com/hhftechnology/Mafl.git
cd Mafl
npm install
npm run build
npm start

Prérequis : Node.js 18+, fichier config.yaml à la racine.

Configuration

  1. Écrire config.yaml : liste des services (name, url, icon, category).
  2. Choisir le mode d'icônes : URL externe, favicon auto, ou icône Lucide locale.
  3. Définir un thème : couleurs de fond, accent, typo.
  4. Optionnel : grouper les services en sections (Work, Perso, Smart Home).
  5. Définir comme page d'accueil navigateur : chrome://settings → onglet « Au démarrage ».

Exemple de config.yaml

title: Mon Homelab
theme: dark
services:
  - name: Traefik
    url: https://traefik.example.com
    icon: https://.../traefik.png
  - name: Portainer
    url: https://portainer.example.com
  - name: Grafana
    url: https://grafana.example.com

Alternatives

  • [[app-glance]] — Widgets read-only, multi-pages, vertical
  • [[app-dashy]] — Dashboard complet, riche, vertical
  • [[app-homepage]] — Moderne, services + bookmarks + monitoring
  • [[app-heimdall]] — Léger, mature, vertical
  • [[app-dashlit]] — Concurrent minimaliste (autre fiche du batch)

Sécurité

  • 🔐 Reverse-proxy + auth : Mafl n'a pas d'authentification native, à protéger via [[app-traefik]] + Authelia/Authentik.
  • 📁 config.yaml sensible : contient la liste de TOUS les services internes — ne pas le versionner en public.
  • 🌐 Pas d'API publique exposée : l'app reste un portail read-only, surface d'attaque très faible.
  • 🛡️ Montage en ro : le fichier de config peut être monté en lecture seule.

Ressources