Gan, Jimmy
ddaf3c6cee
security: Sprint 00 — critical security fixes (OPC WS auth, Transmission creds, SECRET_KEY, passkey rate limit)
...
- Add JWT token auth to OPC WebSocket (unauthenticated → 403, per-user tracking)
- Externalize Transmission RPC credentials to TRANSMISSION_USER/PASS env vars
- Remove hardcoded SECRET_KEY fallback from dev compose
- Rate-limit passkey register options endpoint at 5/minute
- Add PDD (docs/improvement-plan.md) and sprint specs (specs/)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-03 13:31:25 +08:00
Gan, Jimmy
06a75dcaba
fix: add missing networks to dev dashboard service
Deploy Dashboard (Dev) / deploy-dev (push) Failing after 1m30s
Run Tests / Backend Tests (push) Failing after 4m34s
Run Tests / Frontend Tests (push) Failing after 3m23s
Run Tests / Backend Tests (pull_request) Failing after 4m37s
Run Tests / Frontend Tests (pull_request) Failing after 3m17s
Run Tests / Test Summary (push) Failing after 16s
Run Tests / Test Summary (pull_request) Failing after 14s
2026-04-11 21:49:57 +08:00
Gan, Jimmy
d919b46882
fix: update DOCKER_HOST in dev docker-compose.yml
Deploy Dashboard (Dev) / deploy-dev (push) Failing after 1m16s
Run Tests / Backend Tests (push) Failing after 4m8s
Run Tests / Test Summary (push) Has been cancelled
Run Tests / Frontend Tests (push) Has been cancelled
2026-04-11 21:25:11 +08:00
Gan, Jimmy
cc3c56f7df
fix: remove networks from compose, connect manually after
...
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 1m22s
Run Tests / Backend Tests (push) Failing after 16m26s
Run Tests / Frontend Tests (push) Failing after 1m44s
Run Tests / Test Summary (push) Failing after 22s
Docker compose fails to connect to multiple external networks during
container creation. Create container first, then manually connect.
2026-04-06 21:04:54 +08:00
Gan, Jimmy
70a222c1b6
fix: remove resource limits and use host.docker.internal for dashboard
...
Run Tests / Backend Tests (push) Failing after 2m16s
Run Tests / Frontend Tests (push) Failing after 2m13s
Run Tests / Test Summary (push) Failing after 14s
Deploy Dashboard (Dev) / deploy-dev (push) Has been cancelled
- Remove CPU/memory limits that were causing issues
- Switch from docker-socket-proxy to host.docker.internal
- Add nas.jimmygan.com:8443 to WEBAUTHN_ORIGINS for proper auth
2026-04-06 18:17:08 +08:00
Gan, Jimmy
6c7af5dff6
fix: isolate dev deployment and stabilize nas networking
Deploy Dashboard (Dev) / deploy-dev (push) Failing after 5m14s
Run Tests / Frontend Tests (push) Failing after 10m52s
Run Tests / Backend Tests (push) Failing after 11m9s
Run Tests / Test Summary (push) Has been cancelled
2026-04-05 03:07:15 +08:00
Gan, Jimmy
80c964db3f
fix: revert to original working deploy approach
...
Deploy Dashboard (Dev) / deploy-dev (push) Failing after 10m54s
Run Tests / Backend Tests (push) Failing after 4m18s
Run Tests / Frontend Tests (push) Failing after 7m49s
Run Tests / Test Summary (push) Failing after 1m0s
The 'name: nas-dashboard-dev' field added in commit a88f5b9 broke
auto-deployment by causing Docker Compose network connection errors.
Reverting to the original working approach:
- Remove 'name:' field from docker-compose.dev.yml
- Use simple 'docker compose up -d --pull never'
This worked for months before the recent changes.
2026-04-04 08:35:04 +08:00
Gan, Jimmy
a88f5b9c95
fix: set explicit project name for dev compose to avoid conflicts
...
Deploy Dashboard (Dev) / deploy-dev (push) Failing after 5m56s
Run Tests / Frontend Tests (push) Has been cancelled
Run Tests / Test Summary (push) Has been cancelled
Run Tests / Backend Tests (push) Has started running
The dev compose was inheriting 'nas-dashboard' project name, causing
conflicts with the production dashboard when trying to use the same networks.
2026-04-04 01:07:03 +08:00
Gan, Jimmy
4c6bbd974a
fix: use simple 'anything' key for LiteLLM in dev
Deploy Dashboard (Dev) / deploy-dev (push) Has been cancelled
Run Tests / Backend Tests (push) Has been cancelled
Run Tests / Frontend Tests (push) Has been cancelled
Run Tests / Test Summary (push) Has been cancelled
2026-04-02 23:52:57 +08:00
Gan, Jimmy
54bfea16f2
fix: add LITELLM_API_KEY support for authenticated LiteLLM calls
Deploy Dashboard (Dev) / deploy-dev (push) Failing after 7m14s
Run Tests / Backend Tests (push) Failing after 22s
Run Tests / Frontend Tests (push) Failing after 36s
Run Tests / Test Summary (push) Failing after 40s
2026-04-02 22:06:12 +08:00
Gan, Jimmy
7b82f7aa25
fix: add GITEA_DB_PASSWORD env var for OPC database connection
Deploy Dashboard (Dev) / deploy-dev (push) Failing after 1m37s
Run Tests / Backend Tests (push) Successful in 49s
Run Tests / Frontend Tests (push) Failing after 5m32s
Run Tests / Test Summary (push) Failing after 40s
2026-03-31 18:17:00 +08:00
Gan, Jimmy
74100c8882
fix: change WebAuthn RP_ID to jimmygan.com to support all subdomains
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 2m0s
2026-03-11 01:43:19 +08:00
Gan, Jimmy
b98333db36
fix: correct WebAuthn RP_ID to match domain suffix
...
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 1m48s
- Change RP_ID from jimmygan.com to nas.jimmygan.com
- RP_ID must be a valid suffix of the origin domain
- Fixes WebAuthn failing silently on iOS/iPadOS
2026-03-11 01:15:36 +08:00
Gan, Jimmy
42c5693ede
fix: add WebAuthn environment variables to docker-compose
...
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 4m23s
- Set WEBAUTHN_RP_ID=jimmygan.com for both main and dev
- Set WEBAUTHN_ORIGINS to match respective domains
- Fixes passkey registration failing due to origin mismatch
2026-03-11 01:01:14 +08:00
Gan, Jimmy
4f95f0249d
feat: add Mac host to dashboard terminal
...
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 2m15s
Add a dedicated Mac terminal target with separate SSH host/user/key settings and mount a dedicated Mac key file for dashboard containers.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-06 08:32:54 +08:00
Gan, Jimmy
56743d1cf4
fix: make LiteLLM health probe auth-aware
...
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 3m4s
Allow the dashboard health check to include optional LiteLLM auth headers and treat unauthenticated 401 responses as an auth-required healthy state.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-02 03:38:25 +08:00
Gan, Jimmy
9bae5a62a5
fix: attach litellm to shared dashboard network
...
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 2m34s
Connect LiteLLM to nas-dashboard_internal and point dashboard-dev to the litellm container hostname so health probes work without host-loopback routing.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-02 03:31:44 +08:00
Gan, Jimmy
6cabbd6c59
fix: set dev dashboard LiteLLM URL to host gateway
...
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 1m52s
Point dashboard-dev LiteLLM health checks at host.docker.internal so the container can reach the NAS LiteLLM service bound on localhost.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-02 03:23:01 +08:00
Gan, Jimmy
4cef51e15f
fix: dev dashboard shares prod socket proxy network
2026-03-01 10:48:02 +08:00
Gan, Jimmy
4b32929dcc
feat: watchtower tracking, dev environment, security logs page
...
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 1m54s
- watchtower: docker-compose with label filtering, email notifications
- watchtower labels on navidrome, openclaw, immich services
- dev env: docker-compose.dev.yml (port 4001), deploy-dev.yml CI workflow
- dev.nas.jimmygan.com Caddy site block with Authelia forward_auth
- security page: backend router parsing Authelia/Caddy container logs
- security page: frontend with stats cards, timeline, top IPs, event log
- wired security route into App.svelte and Sidebar
2026-03-01 00:40:14 +08:00