197 lines
7.3 KiB
Markdown
197 lines
7.3 KiB
Markdown
---
|
|
title: Litlyx
|
|
created: 2026-06-07
|
|
updated: 2026-06-07
|
|
type: app
|
|
tags: [catalogue, web-analytics, privacy, self-hosted, analytics, typescript, nextjs, postgresql, simple, modern]
|
|
confidence: medium
|
|
contested: false
|
|
sources: [https://selfh.st/apps/?tag=web-analytics]
|
|
---
|
|
|
|
# ⚡ Litlyx
|
|
|
|
> Solution d'analytics web **simple et moderne** écrite en TypeScript, avec un **script de 1 Ko** et une expérience développeur soignée.
|
|
> Source : [selfh.st](https://selfh.st/apps/?tag=web-analytics)
|
|
|
|
## 📋 Métadonnées
|
|
|
|
| Métadonnée | Valeur |
|
|
| :--- | :--- |
|
|
| **Site web** | [litlyx.com](https://litlyx.com/) |
|
|
| **GitHub** | [github.com/Litlyx/litlyx](https://github.com/Litlyx/litlyx) |
|
|
| **License** | AGPL-3.0 |
|
|
| **Langage** | TypeScript / Next.js / Node.js |
|
|
| **Étoiles** | 112 |
|
|
| **Dernière MAJ** | 2026-04 |
|
|
| **Catégorie** | [[cat-web-analytics]] |
|
|
|
|
## 📝 Description
|
|
|
|
**Litlyx** est une solution d'**analyse web moderne** qui mise sur la **simplicité radicale** et la **qualité de l'expérience développeur**. L'objectif affiché : fournir un outil aussi **rapide à installer** qu'un Google Tag Manager, mais avec la **souveraineté** du self-hosted et le **respect de la vie privée**.
|
|
|
|
Le **script de tracking** pèse moins d'1 Ko et se charge de manière asynchrone, sans impacter les **Core Web Vitals**. L'**API publique** est volontairement simple et bien documentée : une seule méthode `litlyx.event('nom_evenement', { props })` permet de tracker n'importe quelle interaction personnalisée. Litlyx s'inscrit dans la mouvance **"track what matters"** — pas une débauche de rapports, mais l'essentiel visible rapidement.
|
|
|
|
Fonctionnalités principales : **dashboard temps réel**, **événements personnalisés** illimités, **funnels** simples, **sessions** et **utilisateurs uniques**, **géolocalisation** par IP, **intégrations** natives (webhooks, Zapier, Make), **API REST**, **multi-sites** depuis une seule instance, **rôles** basiques (admin / user), **export CSV**.
|
|
|
|
Litlyx se distingue aussi par son **setup en 30 secondes** : une commande `npx litlyx` (en mode cloud) ou un `docker compose up` (en self-hosted) suffit pour démarrer. Le projet est plus **jeune** que [[app-umami]] ou [[app-plausible]], mais l'équipe livre **régulièrement** des mises à jour et la communauté grandit.
|
|
|
|
Idéal pour les **startups**, **petits SaaS**, **portfolios** et **projets personnels** qui veulent un analytics **fiable, simple et rapide** à mettre en place.
|
|
|
|
## 🚀 Installation
|
|
|
|
### Option 1 : Docker Compose (recommandé)
|
|
|
|
```yaml
|
|
# docker-compose.yml
|
|
version: '3.8'
|
|
|
|
services:
|
|
litlyx:
|
|
image: ghcr.io/litlyx/litlyx:latest
|
|
container_name: litlyx
|
|
restart: unless-stopped
|
|
ports:
|
|
- "3030:3000"
|
|
environment:
|
|
LITLYX_SECRET_KEY: changez-cette-cle-aleatoire
|
|
LITLYX_API_KEY: votre-api-key-publique
|
|
DATABASE_URL: mongodb://litlyx:***@mongo:27017/litlyx
|
|
JWT_SECRET: changez-jwt-secret
|
|
LITLYX_PUBLIC_URL: https://litlyx.example.com
|
|
depends_on:
|
|
mongo:
|
|
condition: service_healthy
|
|
networks:
|
|
- litlyx-net
|
|
healthcheck:
|
|
test: ["CMD", "wget", "--spider", "-q", "http://localhost:3000/"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
|
|
mongo:
|
|
image: mongo:6
|
|
container_name: litlyx-mongo
|
|
restart: unless-stopped
|
|
environment:
|
|
MONGO_INITDB_ROOT_USERNAME: litlyx
|
|
MONGO_INITDB_ROOT_PASSWORD: litlyx
|
|
MONGO_INITDB_DATABASE: litlyx
|
|
volumes:
|
|
- ./mongo-data:/data/db
|
|
networks:
|
|
- litlyx-net
|
|
healthcheck:
|
|
test: ["CMD", "mongosh", "--eval", "db.adminCommand('ping')"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
networks:
|
|
litlyx-net:
|
|
driver: bridge
|
|
```
|
|
|
|
> Variante : support natif **PostgreSQL** via `DATABASE_URL=postgresql://...` selon la version de l'image.
|
|
|
|
Lancement :
|
|
|
|
```bash
|
|
docker compose up -d
|
|
# Accéder à http://localhost:3030
|
|
# Créer le compte initial et le premier projet depuis l'UI
|
|
```
|
|
|
|
### Option 2 : Installation manuelle (Node.js + MongoDB)
|
|
|
|
```bash
|
|
git clone https://github.com/Litlyx/litlyx.git
|
|
cd litlyx
|
|
pnpm install
|
|
# Configurer .env (DATABASE_URL, LITLYX_SECRET_KEY, JWT_SECRET)
|
|
pnpm build
|
|
pnpm start
|
|
```
|
|
|
|
Prérequis : **Node.js 20+**, **MongoDB 6+** (ou **PostgreSQL 14+** selon la version), **pnpm 9+**.
|
|
|
|
## ⚙️ Configuration
|
|
|
|
- **LITLYX_SECRET_KEY** : clé secrète pour signer les tokens JWT, 32+ caractères.
|
|
- **LITLYX_API_KEY** : clé publique distribuée aux clients.
|
|
- **DATABASE_URL** : MongoDB (`mongodb://...`) ou PostgreSQL (`postgresql://...`).
|
|
- **JWT_SECRET** : clé secrète pour la session utilisateur, distincte de LITLYX_SECRET_KEY.
|
|
- **LITLYX_PUBLIC_URL** : URL publique, utilisée pour CORS et les liens.
|
|
- **Snippet de tracking** :
|
|
|
|
```html
|
|
<script defer src="https://litlyx.example.com/cdn/litlyx.js"></script>
|
|
<script>
|
|
window.lit = window.lit || [];
|
|
lit.push(['init', 'votre-project-id']);
|
|
lit.push(['event', 'pageview']);
|
|
// événement custom :
|
|
// lit.push(['event', 'signup', { plan: 'pro' }]);
|
|
</script>
|
|
```
|
|
|
|
- **API serveur** : endpoint POST `/api/v1/event` pour ingérer des événements depuis vos apps.
|
|
- **Multi-sites** : créer un projet par domaine, regroupé par workspace.
|
|
- **Thèmes** : clair/sombre selon préférences utilisateur.
|
|
- **Langues** : interface traduite en EN/FR/ES (parfois partiel, projet jeune).
|
|
|
|
## 🔄 Alternatives
|
|
|
|
**Open source** :
|
|
- [[app-umami]] — plus mature, base PostgreSQL
|
|
- [[app-plausible]] — privacy-first, Elixir
|
|
- [[app-ackee]] — minimaliste Node.js
|
|
- [[app-goatcounter]] — Go ultra-léger
|
|
- [[app-matomo]] — analytics PHP complet
|
|
- [[app-open-web-analytics]] — PHP traditionnel
|
|
- [[app-rybbit]] — TypeScript moderne
|
|
- [[app-swetrix]] — TypeScript Plausible-like
|
|
- [[app-vince]] — Go minimaliste
|
|
|
|
**Propriétaire (SaaS)** :
|
|
- **Google Analytics 4** — leader, RGPD complexe
|
|
- **Litlyx Cloud** — offre officielle (à venir / bêta)
|
|
- **Plausible Cloud** — payant
|
|
- **Fathom Analytics** — simple
|
|
- **Simple Analytics** — design
|
|
- **Umami Cloud** — service officiel
|
|
- **Pirsch** — allemand RGPD
|
|
- **PostHog** — product analytics managé
|
|
|
|
## 🔒 Sécurité
|
|
|
|
- **LITLYX_SECRET_KEY** et **JWT_SECRET** : générer via `openssl rand -base64 64`, **jamais committé**.
|
|
- Changer **LITLYX_API_KEY** régulièrement, ne pas la partager publiquement.
|
|
- **HTTPS obligatoire** : Traefik, Caddy ou Nginx avec Let's Encrypt.
|
|
- **MongoDB** : ne **jamais** exposer le port 27017 sur Internet, bind sur réseau Docker interne.
|
|
- Activer l'**authentification MongoDB** (root user + DB user, c'est le cas dans le compose).
|
|
- **Sauvegardes** : `mongodump` quotidien, ou snapshots volumes.
|
|
- Configurer **CORS strictement** via `LITLYX_PUBLIC_URL` (pas de wildcard).
|
|
- Mettre à jour régulièrement — projet jeune, **suivre les breaking changes**.
|
|
- **Rate limiting** sur `/api/v1/event` recommandé en amont (Nginx, Traefik).
|
|
- Restreindre l'accès admin via **2FA** et **IP allowlist** si possible.
|
|
- **fail2ban** sur l'API admin.
|
|
|
|
## 📚 Ressources
|
|
|
|
- [Site officiel](https://litlyx.com/)
|
|
- [Documentation](https://docs.litlyx.com/)
|
|
- [GitHub Litlyx/litlyx](https://github.com/Litlyx/litlyx)
|
|
- [Démo live](https://litlyx.com/dashboard-demo)
|
|
- [API reference](https://docs.litlyx.com/api)
|
|
- [Roadmap](https://github.com/Litlyx/litlyx/projects)
|
|
|
|
## 🔗 Pages Liées
|
|
|
|
- [[cat-web-analytics]]
|
|
- [[recettes-docker-compose]]
|
|
- [[app-umami]]
|
|
- [[app-plausible]]
|
|
- [[app-rybbit]]
|