Aller au contenu

Administration9 oct. 20266 minutes de lecture

Configuration

Mitra se configure entièrement par des variables d’environnement. Il n’y a pas de fichier de configuration à monter : vous définissez des variables sur le conteneur, et Mitra les lit au démarrage. Chaque variable est facultative, et une variable que vous ne définissez pas prend la valeur par défaut indiquée plus bas.

Avec Docker Compose, elles se placent dans le bloc environment :

services:
mitra:
image: ghcr.io/a11delavar/mitra:latest
environment:
MITRA_URL: 'https://mitra.example.com'
MITRA_NAME: 'Family Calendar'

Un fichier .env ou des secrets Docker fonctionnent tout aussi bien, si vous préférez garder les secrets hors du fichier compose. Une modification prend effet au prochain démarrage de Mitra :

Terminal window
docker compose up -d

Presque rien. Les utilisateurs ajoutent eux-mêmes, dans l’application, les calendriers Mitra, CalDAV, Apple Calendar, les abonnements à des calendriers, Notion et Tempo.

Deux choses demandent des identifiants que vous devez d’abord enregistrer auprès d’un tiers : Google Calendar (MITRA_GOOGLE_*) et la connexion (MITRA_OIDC_*).

Dès que Mitra est accessible depuis autre chose que votre propre machine, placez-le derrière un proxy inverse comme Caddy, Traefik ou nginx, et laissez le proxy gérer HTTPS. Mitra lui-même parle en HTTP simple à l’intérieur du conteneur. Certaines fonctionnalités ne marchent qu’en HTTPS :

  • Les navigateurs n’autorisent les rappels et l’installation de l’application que sur des adresses https:// (et sur http://localhost).
  • Les cookies de connexion ne sont marqués comme sécurisés que sur https://, et la plupart des fournisseurs d’identité exigent une adresse de redirection en https://.
  • Google Calendar exige une adresse de redirection en https://.

Définissez ensuite MITRA_URL avec l’adresse publique.

Avec Caddy, c’est tout ce qu’il faut :

mitra.example.com {
reverse_proxy localhost:3000
}

Avec Traefik, dirigez le trafic vers Mitra avec des labels sur le service :

services:
mitra:
image: ghcr.io/a11delavar/mitra:latest
restart: unless-stopped
volumes:
- ~/mitra:/app/data
labels:
- "traefik.enable=true"
- "traefik.http.routers.mitra.rule=Host(`mitra.example.com`)"
- "traefik.http.services.mitra.loadbalancer.server.port=3000"
environment:
MITRA_URL: 'https://mitra.example.com'

MITRA_URL est l’adresse que les gens saisissent dans le navigateur pour atteindre Mitra, et non l’adresse interne du conteneur :

environment:
MITRA_URL: 'https://mitra.example.com'

Mitra en déduit les adresses de retour pour Google Calendar et la connexion, et marque ses cookies comme sécurisés quand elle commence par https://. Vous pouvez l’omettre tant que vous essayez Mitra sur http://localhost. Définissez-la dès que Mitra a une vraie adresse ; elle est obligatoire pour activer la connexion.

MITRA_NAME remplace « Mitra » dans la barre latérale et dans l’onglet du navigateur :

environment:
MITRA_NAME: 'Family Calendar'

Cliquer sur le nom ouvre la boîte de dialogue À propos, qui indique la version et le commit que vous exécutez. L’application installée garde le nom et l’icône « Mitra », car ils sont fixés lors de la construction de l’application.

VariableValeur par défautDescription
MITRA_URL(non définie)L’adresse publique à laquelle on atteint Mitra, par exemple https://mitra.example.com. Les adresses de retour pour la connexion et Google Calendar, et le caractère sécurisé des cookies, en découlent. Facultative tant que vous essayez Mitra sur localhost, obligatoire pour la connexion, et recommandée pour Google Calendar et tout serveur public.
MITRA_NAME(Mitra, dans la langue de chacun)Le nom affiché dans la barre latérale et dans l’onglet du navigateur. L’application installée reste « Mitra ».
MITRA_PORT3000Le port sur lequel le serveur écoute. Avec Docker, modifiez plutôt le côté hôte du mappage de port ; ne le définissez que si le processus lui-même doit écouter ailleurs. La vérification d’état intégrée le suit.
MITRA_LOG_LEVELinfoLe niveau de détail des journaux de Mitra : error, warn, info, debug ou trace. Chaque niveau inclut tout ce qui est plus discret que lui.
MITRA_UPDATE_CHECK(activée)Réglez sur off (ou false, 0, no) pour désactiver la vérification des mises à jour.
VariableValeur par défautDescription
MITRA_VAPID_SUBJECTmailto:mitra@localhostLe contact que voient les services push pour les rappels de votre serveur, en général une adresse mailto:. Personne parmi les utilisateurs de Mitra ne le voit. Les clés de signature sont générées automatiquement : il n’y a rien d’autre à définir.
VariableValeur par défautDescription
MITRA_PHOTON_URLhttps://photon.komoot.ioLe géocodeur Photon derrière le champ de lieu. Faites-la pointer vers votre propre instance Photon plutôt que vers celle, publique, de komoot.

Définissez les deux pour permettre de connecter Google Calendar. Ne définir que l’ID empêche Mitra de démarrer.

VariableValeur par défautDescription
MITRA_GOOGLE_CLIENT_ID(non définie)L’ID client OAuth de la console Google Cloud.
MITRA_GOOGLE_CLIENT_SECRET(non définie)Le secret client OAuth. Obligatoire dès que MITRA_GOOGLE_CLIENT_ID est défini.

Définir MITRA_OIDC_ISSUER active la connexion. Si les variables nécessaires manquent, Mitra refuse de démarrer.

VariableValeur par défautDescription
MITRA_OIDC_ISSUER(non définie)L’URL de l’émetteur de votre fournisseur OIDC. Exige MITRA_OIDC_CLIENT_ID et MITRA_URL.
MITRA_OIDC_CLIENT_ID(non définie)L’ID client enregistré auprès de votre fournisseur.
MITRA_OIDC_CLIENT_SECRET(non définie)Le secret client. Omettez-le pour un client public ; Mitra utilise toujours PKCE.
MITRA_OIDC_SCOPESopenid profile emailLes scopes que Mitra demande, séparés par des espaces. openid est obligatoire ; profile et email donnent à Mitra le nom et l’e-mail de chacun.

Vous ne les définissez pas sur un serveur. La construction ou l’image les définit, ou elles servent à travailler sur Mitra lui-même.

VariableDéfinie parDescription
MITRA_VERSIONConstructionLa version intégrée à l’image.
MITRA_COMMITConstructionLe commit intégré à l’image.
MITRA_DEVDéveloppementPropose l’intégration Demo, un ensemble de calendriers d’exemple, pendant le travail sur Mitra.
NODE_ENVImageproduction dans l’image du conteneur.

Un serveur avec connexion, Google Calendar et son propre géocodeur :

services:
mitra:
image: ghcr.io/a11delavar/mitra:latest
restart: unless-stopped
ports:
- '3000:3000'
volumes:
- ~/mitra:/app/data
environment:
MITRA_URL: 'https://mitra.example.com'
MITRA_NAME: 'Family Calendar'
# Sign-in
MITRA_OIDC_ISSUER: 'https://auth.example.com'
MITRA_OIDC_CLIENT_ID: 'mitra'
MITRA_OIDC_CLIENT_SECRET: '…'
# Google Calendar
MITRA_GOOGLE_CLIENT_ID: '….apps.googleusercontent.com'
MITRA_GOOGLE_CLIENT_SECRET: '…'
# Your own geocoder
MITRA_PHOTON_URL: 'https://photon.internal.example.com'