142 lines
4.9 KiB
Markdown
142 lines
4.9 KiB
Markdown
---
|
|
title: Mafl
|
|
created: 2026-06-07
|
|
updated: 2026-06-07
|
|
type: app
|
|
tags: [catalogue, dashboard, minimaliste, horizontal, terminal-aesthetic]
|
|
confidence: high
|
|
contested: false
|
|
sources: [https://selfh.st/apps/?tag=Dashboard, https://github.com/hhftechnology/Mafl]
|
|
---
|
|
|
|
# 📊 Mafl
|
|
|
|
> **Dashboard minimaliste horizontal** : une **barre supérieure** façon launcher/terminal, regroupant tous ses services en **tuiles discrètes**. Look « Hacker News » rencontre les pages d'accueil custom.
|
|
|
|
## 📋 Informations Générales
|
|
|
|
| Champ | Valeur |
|
|
| :--- | :--- |
|
|
| **Site web** | — |
|
|
| **GitHub** | [hhftechnology/Mafl](https://github.com/hhftechnology/Mafl) |
|
|
| **License** | MIT |
|
|
| **Langage** | TypeScript (Next.js) |
|
|
| **Étoiles GitHub** | 737 ⭐ |
|
|
| **Catégorie** | [[cat-dashboard]] |
|
|
|
|
## 📝 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é)
|
|
|
|
```yaml
|
|
# 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
|
|
|
|
```bash
|
|
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`
|
|
|
|
```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
|
|
|
|
- [GitHub — hhftechnology/Mafl](https://github.com/hhftechnology/Mafl)
|
|
- [selfh.st — Apps Dashboard](https://selfh.st/apps/?tag=Dashboard)
|
|
- [Démo en ligne](https://demo.mafl.app) (selon disponibilité)
|
|
|
|
## 🔗 Pages Liées
|
|
|
|
- [[cat-dashboard]]
|
|
- [[app-glance]] — alternative la plus proche
|
|
- [[app-dashy]] — concurrent riche
|
|
- [[app-homepage]] — concurrent moderne
|
|
- [[app-dashlit]] — autre fiche du batch
|
|
- [[app-traefik]] — reverse-proxy
|
|
- [[securisation-home-lab]] — auth, isolation
|
|
- [[recettes-docker-compose]] — stack type
|