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:
docker compose up -dCosa va configurato sul server
Section titled “Cosa va configurato sul server”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_*).
Metterlo dietro HTTPS
Section titled “Metterlo dietro HTTPS”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 suhttp://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 reindirizzamentohttps://. - 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'Impostare l’URL pubblico
Section titled “Impostare l’URL pubblico”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.
Dare un nome alla tua istanza
Section titled “Dare un nome alla tua istanza”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.
Tutte le variabili
Section titled “Tutte le variabili”| Variabile | Predefinito | Descrizione |
|---|---|---|
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_PORT | 3000 | La 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_LEVEL | info | Quanto 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. |
Promemoria
Section titled “Promemoria”| Variabile | Predefinito | Descrizione |
|---|---|---|
MITRA_VAPID_SUBJECT | mailto:mitra@localhost | Il 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. |
| Variabile | Predefinito | Descrizione |
|---|---|---|
MITRA_PHOTON_URL | https://photon.komoot.io | Il geocoder Photon dietro il campo del luogo. Puntala alla tua istanza Photon invece di quella pubblica di komoot. |
Google Calendar
Section titled “Google Calendar”Impostale entrambe per permettere alle persone di collegare Google Calendar. Impostare solo l’ID impedisce l’avvio di Mitra.
| Variabile | Predefinito | Descrizione |
|---|---|---|
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. |
Single sign-on
Section titled “Single sign-on”Impostare MITRA_OIDC_ISSUER attiva l’accesso con account. Se mancano le variabili di cui ha bisogno, Mitra si rifiuta di avviarsi.
| Variabile | Predefinito | Descrizione |
|---|---|---|
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_SCOPES | openid profile email | Gli scope che Mitra richiede, separati da spazi. openid è obbligatorio; profile ed email danno a Mitra nome ed email di ciascuno. |
Impostate dalla build
Section titled “Impostate dalla build”Queste non le imposti su un server. Le imposta la build o l’immagine, oppure servono per lavorare su Mitra stesso.
| Variabile | Impostata da | Descrizione |
|---|---|---|
MITRA_VERSION | Build | La versione inclusa nell’immagine. |
MITRA_COMMIT | Build | Il commit incluso nell’immagine. |
MITRA_DEV | Sviluppo | Offre l’integrazione Demo, un insieme di calendari di esempio, mentre si lavora su Mitra. |
NODE_ENV | Immagine | production nell’immagine del container. |
Esempio
Section titled “Esempio”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'