4.4 KiB
title: Luna created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, calendar, python, flask, simple, events] confidence: medium contested: false sources: [https://selfh.st/apps/?tag=calendar, https://github.com/lunacalendar/luna]
Luna 🌙
Application calendrier minimaliste en Python/Flask : créer des événements, partager des liens publics, c'est tout. Pensée pour l'auto-hébergement léger.
| Métadonnée | Valeur |
|---|---|
| Site web | https://github.com/lunacalendar/luna |
| GitHub | https://github.com/lunacalendar/luna |
| License | MIT |
| Langage | Python (Flask) |
| Étoiles | 10 ⭐ |
| Dernière MAJ | 2023 |
| Catégorie | cat-calendar |
Description
Luna est un projet d'application calendrier volontairement minimaliste, écrit en Python avec le micro-framework Flask. La philosophie est à l'opposé des suites complètes type Nextcloud ou des UIs design type FluidCalendar : Luna ne fait qu'une chose, et la fait simplement — afficher et éditer un calendrier partagé.
Fonctionnalités :
- Vue mensuelle classique avec création/édition d'événements (titre, début, fin, description).
- Liens publics : chaque calendrier a une URL partageable en lecture seule, utile pour publier un planning d'événements, un calendrier de réservation, un agenda associatif.
- Multi-utilisateurs simples (compte + mot de passe hashé en bcrypt).
- Import/export iCal (
.ics), pour interoperer avec n'importe quel client CalDAV ou application mobile. - i18n : interface traduite en français, anglais, et quelques autres langues.
L'app n'essaie pas de rivaliser avec un app-radicale côté fonctionnalités CalDAV : c'est plutôt un « calendrier clé en main » pour quelqu'un qui veut juste un agenda web sans configurer un serveur CalDAV. Parfait pour un petit foyer, un club, ou un serveur familial.
Le projet est jeune (10 étoiles) et peu maintenu récemment, à surveiller.
Installation
Docker Compose (recommandé)
services:
luna:
image: ghcr.io/lunacalendar/luna:latest
container_name: luna
restart: unless-stopped
environment:
- SECRET_KEY=*** - DATABASE_URL=sqlite:...data/luna.db
- TZ=Europe/Paris
- DEFAULT_LANG=fr
volumes:
- luna-data:/data
ports:
- "8093:5000"
volumes:
luna-data:
Manuelle (Python)
git clone https://github.com/lunacalendar/luna.git
cd luna
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt
export FLASK_APP=luna
flask init-db
flask run --host 0.0.0.0 --port 5000
Configuration
- Créer le premier compte admin via
flask create-user admin@example.com. - Configurer la langue par défaut et le fuseau horaire.
- Activer ou non les inscriptions publiques (à désactiver en prod).
- Définir un thème (clair, sombre, auto).
- Le
SECRET_KEYFlask est critique : doit être long et unique.
Alternatives
- Open Source : app-radicale (serveur CalDAV complet, plus complexe), app-baikal (CalDAV/CardDAV), Nextcloud Calendar (intégré, lourd), Etebase (E2E sync)
- Minimaliste : icalendar (lib Python, pas une app), Baïkal (flat-file, ultra-léger)
- Propriétaire : Google Calendar, Fruux (calendrier partagé, fermé)
- Mobile : n'importe quel client CalDAV (DAVx⁵, Apple Calendar) lit les
.icsexportés
Sécurité
- SECRET_KEY : obligatoire pour les sessions Flask,
python -c "import secrets; print(secrets.token_hex(32))". - Hash de mot de passe : bcrypt par défaut, bon choix.
- HTTPS : obligatoire, surtout si on active l'inscription.
- Liens publics : ils sont en lecture seule par défaut, mais attention à ce qu'on y met (pas d'infos privées).
- Pas d'E2E : les événements ne sont pas chiffrés côté serveur. À considérer pour des données sensibles.
- Projet jeune : peu de releases, peu de communauté, à surveiller côté CVEs.
Ressources
Pages Liées
- cat-calendar
- recettes-docker-compose
- app-radicale — serveur CalDAV complet (plus puissant)