Salta ai contenuti

Amministrazione9 ott 20265 minuti di lettura

Configurazione

Mitra si configura interamente tramite variabili d’ambiente. Non c’è nessun file di configurazione da montare: imposti le variabili sul container e Mitra le legge all’avvio. Ogni variabile è facoltativa, e una che non imposti usa il valore predefinito elencato più sotto.

Con Docker Compose vanno nel blocco environment:

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

Vanno bene anche un file .env o i secret di Docker, se preferisci tenere i segreti fuori dal file compose. Una modifica ha effetto al successivo avvio di Mitra:

Terminal window
docker compose up -d

Quasi nulla. Le persone aggiungono da sé, nell’app, i calendari Mitra, CalDAV, Apple Calendar, gli abbonamenti a calendari, Notion e Tempo.

Due cose richiedono credenziali che devi prima registrare presso qualcun altro: Google Calendar (MITRA_GOOGLE_*) e l’accesso con account (MITRA_OIDC_*).

Appena Mitra è raggiungibile da qualsiasi posto che non sia la tua macchina, mettilo dietro un reverse proxy come Caddy, Traefik o nginx, e lascia che sia il proxy a gestire HTTPS. Mitra stesso parla HTTP semplice dentro il container. Alcune funzioni sono disponibili solo tramite HTTPS:

  • I browser permettono i promemoria e l’installazione dell’app solo su indirizzi https:// (e su http://localhost).
  • I cookie dell’accesso con account vengono marcati come sicuri solo su https://, e la maggior parte dei provider di identità pretende un indirizzo di reindirizzamento https://.
  • Google Calendar richiede un indirizzo di reindirizzamento https://.

Poi imposta MITRA_URL sull’indirizzo pubblico.

Con Caddy basta questo:

mitra.example.com {
reverse_proxy localhost:3000
}

Con Traefik, indirizza il traffico a Mitra con le label sul servizio:

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 è l’indirizzo che le persone digitano nel browser per raggiungere Mitra, non quello interno del container:

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

Mitra ne ricava gli indirizzi di ritorno per Google Calendar e per l’accesso con account, e marca i suoi cookie come sicuri quando inizia con https://. Puoi ometterlo finché provi Mitra su http://localhost. Impostalo appena Mitra ha un indirizzo vero, ed è obbligatorio per attivare l’accesso con account.

MITRA_NAME sostituisce «Mitra» nella barra laterale e nella scheda del browser:

environment:
MITRA_NAME: 'Family Calendar'

Fare clic sul nome apre la finestra Informazioni, che mostra la versione e il commit che stai eseguendo. L’app installata mantiene il nome e l’icona «Mitra», perché vengono fissati quando l’app viene compilata.

VariabilePredefinitoDescrizione
MITRA_URL(non impostata)L’indirizzo pubblico a cui le persone raggiungono Mitra, come https://mitra.example.com. Da esso derivano gli indirizzi di ritorno per l’accesso con account e Google Calendar, e se i cookie sono sicuri. Facoltativa finché provi Mitra su localhost, obbligatoria per l’accesso con account, e consigliata per Google Calendar e per qualsiasi server pubblico.
MITRA_NAME(Mitra, nella lingua di ciascuno)Il nome mostrato nella barra laterale e nella scheda del browser. L’app installata resta «Mitra».
MITRA_PORT3000La porta su cui il server è in ascolto. Con Docker, cambia invece il lato host della mappatura delle porte; imposta questa solo quando il processo stesso deve restare in ascolto altrove. L’health check integrato la segue.
MITRA_LOG_LEVELinfoQuanto registra Mitra: error, warn, info, debug o trace. Ogni livello include tutto ciò che è più silenzioso.
MITRA_UPDATE_CHECK(attivo)Impostala su off (o false, 0, no) per disattivare il controllo degli aggiornamenti.
VariabilePredefinitoDescrizione
MITRA_VAPID_SUBJECTmailto:mitra@localhostIl contatto che i servizi push vedono per i promemoria del tuo server, di solito un indirizzo mailto:. Nessuno di chi usa Mitra lo vede. Le chiavi di firma vengono generate automaticamente, quindi non c’è altro da impostare.
VariabilePredefinitoDescrizione
MITRA_PHOTON_URLhttps://photon.komoot.ioIl geocoder Photon dietro il campo del luogo. Puntala alla tua istanza Photon invece di quella pubblica di komoot.

Impostale entrambe per permettere alle persone di collegare Google Calendar. Impostare solo l’ID impedisce l’avvio di Mitra.

VariabilePredefinitoDescrizione
MITRA_GOOGLE_CLIENT_ID(non impostata)L’ID client OAuth dalla console Google Cloud.
MITRA_GOOGLE_CLIENT_SECRET(non impostata)Il segreto client OAuth. Obbligatorio ogni volta che MITRA_GOOGLE_CLIENT_ID è impostata.

Impostare MITRA_OIDC_ISSUER attiva l’accesso con account. Se mancano le variabili di cui ha bisogno, Mitra si rifiuta di avviarsi.

VariabilePredefinitoDescrizione
MITRA_OIDC_ISSUER(non impostata)L’URL dell’issuer del tuo provider OIDC. Richiede MITRA_OIDC_CLIENT_ID e MITRA_URL.
MITRA_OIDC_CLIENT_ID(non impostata)L’ID client registrato presso il tuo provider.
MITRA_OIDC_CLIENT_SECRET(non impostata)Il segreto client. Omettilo per un client pubblico; Mitra usa sempre PKCE.
MITRA_OIDC_SCOPESopenid profile emailGli scope che Mitra richiede, separati da spazi. openid è obbligatorio; profile ed email danno a Mitra nome ed email di ciascuno.

Queste non le imposti su un server. Le imposta la build o l’immagine, oppure servono per lavorare su Mitra stesso.

VariabileImpostata daDescrizione
MITRA_VERSIONBuildLa versione inclusa nell’immagine.
MITRA_COMMITBuildIl commit incluso nell’immagine.
MITRA_DEVSviluppoOffre l’integrazione Demo, un insieme di calendari di esempio, mentre si lavora su Mitra.
NODE_ENVImmagineproduction nell’immagine del container.

Un server con accesso con account, Google Calendar e un proprio geocoder:

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'