Commit Graph

13 Commits

Author SHA1 Message Date
fegger 7451a6b96b Add Outlook work calendar (ICS) to the calendar feeds 2026-09-07 10:08:53 +02:00
fegger b2101dfa00 Show terminal glyph in the page logo tile 2026-09-07 10:08:53 +02:00
fegger e7ea91211e Add terminal-style favicon (feathericon) and fix missing COPY in Dockerfile 2026-09-07 09:51:47 +02:00
fegger e41e2f928f Route GitLab stats and health checks through a configurable proxy 2026-09-07 09:51:47 +02:00
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
fegger c15cfc51a9 Fall back to public Gitea stats when the API token is rejected
Tokens without scopes (Gitea >= 1.19) or revoked tokens get 403 on
/api/v1/user/repos; catch that and retry anonymously via /repos/search
so the Git widget keeps showing public stats instead of an error.
2026-09-04 17:38:13 +02:00
fegger 012eee6c45 Add server-side health checks for service online status
- update-health.js: pings every service URL from script.js (single
  source of truth) in parallel every minute via cron and writes
  health.json; any HTTP response below 500 counts as online, 5xx as
  error, timeouts/DNS failures as offline; TLS validity ignored
- Card badges now show real state instead of a static Online label:
  grey Checking, green Online (with latency tooltip), amber Error
  (HTTP code), red Offline (reason); refreshed every 30 s
- Entrypoint runs a first sweep at boot; nginx serves /health.json
  with no-cache; README documents the behavior
2026-09-04 14:15:08 +02:00
fegger e766fcd95c Add themed widgets, calendar, and Open WebUI chat to the dashboard
- Apply GTK-like color scheme (dark greys, #f76b2f accent) across
  cards, buttons, glows and category colors
- Service cards use the official logo icons; Netbird card shows live
  reachability + latency instead of a separate top widget
- Top widgets: Today (calendar events with in-progress highlighting),
  Git activity (3 rows visible, scrollable), GPU with live ROCm stats
  and loaded Ollama models incl. GPU/CPU split
- Open WebUI card: inline prompt line with model selection
- Calendar section grouping events by day below the services
- data.json fetch with boot retry; GPU/Ollama poll every 5 s
- Today entries wrap long titles; README documents widgets,
  environment variables and the .env secrets pattern
2026-09-04 14:07:22 +02:00
fegger 55e871bd4f Add backend data aggregator and API proxy services
- update-data.js: cron job that aggregates Google Calendar ICS feeds
  (today + upcoming, node-ical), Netbird reachability, Gitea/GitLab
  commit stats and Open WebUI models into data.json
- server.js: small Node proxy behind nginx exposing /api/chat
  (Open WebUI completions), /api/gpu-stats and /api/ollama
- gitlab-relay.js: prepared HTTP relay for GitLab over a Netbird VPN
  (not wired up yet; the setup key was rejected by vpn.ixsol.at)
- docker-entrypoint.sh: starts updater in the background, API proxy,
  cron (15 min refresh) and nginx without blocking startup
- nginx: proxy locations + no-cache for data.json
- compose: TZ, token env wiring from .env, gpu-stats service
  (python + rocm-smi with device passthrough)
- dockerignore: keep .env out of the build context
2026-09-04 14:07:01 +02:00
fegger 9c3eba55db Add GPU stats server for AMD ROCm
Small dependency-free HTTP server that exposes rocm-smi metrics
(utilization, VRAM, temperature, power) as JSON on port 9101.
Runs as the gpu-stats compose service with /opt/rocm mounted and
/dev/kfd + /dev/dri passed through.
2026-09-04 14:06:49 +02:00
fegger 859af3c389 Add service logo icons
Official SVG logos for Open WebUI, ComfyUI, Gitea, Jellyfin, Immich,
Home Assistant, Nextcloud, Vaultwarden, Netbird, GitLab, Odoo (gem360)
and the Dubplate turntable, replacing the emoji placeholders.
2026-09-04 14:06:42 +02:00
fegger a0f4edb7af Add .gitignore for build artifacts and secrets
Ignore node_modules, npm tarballs, logs, and the .env secrets file
used by docker compose.
2026-09-04 14:06:35 +02:00
fegger a168fb3b46 Add static homelab dashboard with Docker and nginx setup 2026-09-04 11:22:17 +02:00