Files
dashboard/docker-compose.yml
T
fegger dfe246b7ca Add Outlook unread-mail widget with device-code login
- outlook-auth.js: one-time device-code flow against Microsoft login;
  stores the refresh token in the outlook-tokens compose volume
- update-outlook.js: per-minute cron fetching the unread count and the
  latest unread messages via Microsoft Graph; caches access tokens and
  persists rotated refresh tokens
- Widget is hidden until the mailbox is actually authorized, so it
  stays out of sight while (admin) consent is pending
- New external card for Outlook (Office 365) with the official icon
- compose: pass OUTLOOK_CLIENT_ID/OUTLOOK_TENANT/GITEA_TOKEN from .env
- README: Entra ID app registration steps and the tenant-ID hint for
  directories not resolvable via the organizations endpoint
2026-09-04 17:38:17 +02:00

66 lines
2.2 KiB
YAML

services:
dashboard:
build:
context: .
dockerfile: Dockerfile
image: homelab-dashboard:latest
container_name: homelab-dashboard
ports:
- "8888:80"
restart: unless-stopped
environment:
# Timezone used for the "Today" calendar widget.
- TZ=Europe/Vienna
# Secrets live in .env (gitignored) — compose reads it automatically.
- OPENWEBUI_TOKEN=${OPENWEBUI_TOKEN:-}
- GITEA_TOKEN=${GITEA_TOKEN:-}
# Outlook unread-mail widget (see README for the Entra ID app registration
# and the one-time device login).
- OUTLOOK_CLIENT_ID=${OUTLOOK_CLIENT_ID:-}
- OUTLOOK_TENANT=${OUTLOOK_TENANT:-organizations}
# Optional API tokens for live stats / git integration.
# Uncomment and fill in to enable private git stats.
# - GITLAB_TOKEN=
# - NETBIRD_TOKEN=
# GPU stats upstream; defaults to the gpu-stats service below.
# To run gpu_stats.py on the host instead, use:
# http://host.docker.internal:9101/stats
# (and add: extra_hosts: ["host.docker.internal:host-gateway"])
# - GPU_STATS_URL=http://gpu-stats:9101/stats
# Ollama instance for the loaded-model stats in the GPU widget.
# - OLLAMA_URL=http://100.103.83.12:11435
volumes:
# Persists the Outlook OAuth refresh token across container updates.
- outlook-tokens:/opt/dashboard/tokens
logging:
driver: json-file
options:
max-size: "1m"
max-file: "2"
# AMD GPU stats via rocm-smi (gpu_stats.py).
# Needs the host's ROCm install + GPU device nodes passed through.
gpu-stats:
image: python:3.12-slim
container_name: homelab-gpu-stats
restart: unless-stopped
environment:
# rocm-smi can't read the device name without libdrm; set it explicitly.
- GPU_NAME=AMD Radeon AI PRO R9700
# - ROCM_SMI_PATH=/opt/rocm/bin/rocm-smi
volumes:
- ./gpu_stats.py:/app/gpu_stats.py:ro
- /opt/rocm:/opt/rocm:ro
devices:
- /dev/kfd
- /dev/dri
command: python3 /app/gpu_stats.py
logging:
driver: json-file
options:
max-size: "1m"
max-file: "2"
volumes:
outlook-tokens: