Mail: Outlook.com inside the app through Microsoft Graph (folders, reader, compose, reply, unread badge); Cypht webmail removed

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
nmemmertandClaude Sonnet 5.5 committed 2026-10-22 08:09:11 -04:00
1 parent 1564941ea5
commit a9c277b497
23 files changed
+637 -405

No files matched your search

+2 -31
View File
@@ -19,10 +19,8 @@ services:
AUDIOBOOKS_SSO_SECRET: ${AUDIOBOOKS_SSO_SECRET:-}
AUDIOBOOKS_SSO_URL: ${AUDIOBOOKS_SSO_URL:-}
VERSE_URL: ${VERSE_URL:-https://versebyversewithnate.us/admin}
WEBMAIL_URL: ${WEBMAIL_URL:-} # optional: a webmail elsewhere; leave empty to use the bundled Cypht below
WEBMAIL_BACKEND_URL: http://127.0.0.1:80 # the bundled webmail (Cypht, below, shares this container's network); the hub shows it at /webmail/
CYPHT_USER: ${CYPHT_USER:-hub} # the webmail's login; the Mail tab signs in with it for you
CYPHT_PASSWORD: ${CYPHT_PASSWORD:-}
MS_CLIENT_ID: ${MS_CLIENT_ID:-} # Outlook.com mail (Microsoft app registration, see README -> Mail); leave empty to switch Mail off
MS_CLIENT_SECRET: ${MS_CLIENT_SECRET:-}
LYRICS_API_URL: http://127.0.0.1:9999 # the bundled lyrics service (Lyrica, below, shares this container's network); remove this line and the service to skip it
SIGNAL_API_URL: http://127.0.0.1:8085 # the bundled Signal bridge (below, shares this container's network); remove this line and the service to skip Signal
PODCAST_URL: ${PODCAST_URL:-https://podcast.necloud.us/}
@@ -34,31 +32,6 @@ services:
volumes:
- hub-data:/data # passkeys, calendar links and the session secret live here
# Webmail shown inside the Mail tab (Cypht: several mail accounts in one place). Only the hub can reach it (no published port),
# so it sits behind the passkey sign-in. Add your accounts once inside it (Gmail, iCloud, Outlook.com, Office365, Yahoo and others are presets).
cypht:
image: git.necloud.us/nate/hub-cypht:latest # built by the Gitea workflow from ./cypht; `docker compose build` builds locally instead
build: ./cypht
restart: unless-stopped
# Shares the hub's network, so the hub reaches it at 127.0.0.1 whatever network mode or DNS the host uses, and nothing else can reach it.
network_mode: "service:hub"
depends_on:
- hub
environment:
AUTH_USERNAME: ${CYPHT_USER:-hub}
AUTH_PASSWORD: ${CYPHT_PASSWORD:?Choose a password for the webmail and set CYPHT_PASSWORD} # the hub also uses it to sign you in
PUBLIC_URL: ${PUBLIC_URL:-}
# Sign in with Google / Microsoft instead of an app password (optional, see README -> Mail). Leave empty to skip.
GMAIL_CLIENT_ID: ${GMAIL_CLIENT_ID:-}
GMAIL_CLIENT_SECRET: ${GMAIL_CLIENT_SECRET:-}
OUTLOOK_CLIENT_ID: ${OUTLOOK_CLIENT_ID:-} # personal Outlook.com / Hotmail
OUTLOOK_CLIENT_SECRET: ${OUTLOOK_CLIENT_SECRET:-}
OFFICE365_CLIENT_ID: ${OFFICE365_CLIENT_ID:-} # work or school Microsoft 365
OFFICE365_CLIENT_SECRET: ${OFFICE365_CLIENT_SECRET:-}
M365_TENANT: ${M365_TENANT:-}
volumes:
- cypht-data:/var/lib/hm3 # the webmail's database: your accounts and settings
# Signal messages (the Signal tab). This links to your Signal account as one more linked device (like Signal Desktop) through the community
# signal-cli-rest-api bridge. Not an official Signal product; its link to your account (keys) is kept in the signal-data volume. See README -> Signal.
signal:
@@ -88,7 +61,5 @@ services:
volumes:
hub-data:
name: nehub-data # fixed name so the data survives redeploys and renamed stacks
cypht-data:
name: nehub-cypht
signal-data:
name: nehub-signal