---
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é)

```yaml
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)

```bash
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_KEY` Flask est critique : doit être long et unique.

## Alternatives

- **Open Source** : [[app-radicale]] (serveur CalDAV complet, plus complexe), [[app-baikal]] (CalDAV/CardDAV), [Nextcloud Calendar](https://nextcloud.com/calendar/) (intégré, lourd), [Etebase](https://github.com/etesync/etesync-server) (E2E sync)
- **Minimaliste** : [icalendar](https://github.com/collective/icalendar) (lib Python, pas une app), [Baïkal](https://github.com/sabre-io/Baikal) (flat-file, ultra-léger)
- **Propriétaire** : Google Calendar, Fruux (calendrier partagé, fermé)
- **Mobile** : n'importe quel client CalDAV (DAVx⁵, Apple Calendar) lit les `.ics` exporté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

- [selfh.st — Calendar](https://selfh.st/apps/?tag=calendar)
- [GitHub lunacalendar/luna](https://github.com/lunacalendar/luna)
- [Flask documentation](https://flask.palletsprojects.com/)

## Pages Liées

- [[cat-calendar]]
- [[recettes-docker-compose]]
- [[app-radicale]] — serveur CalDAV complet (plus puissant)
