2.0 KiB
2.0 KiB
NAS Tools Project
Architecture
- Synology DS224+ (x86_64, 18GB RAM), Tailscale IP:
100.78.131.124, LAN:192.168.31.221 - Docker:
/volume1/@appstore/ContainerManager/usr/bin/docker, compose dirs:/volume1/docker/* - Caddy VPS (
161.33.182.109, Tailscale:100.109.198.126): reverse proxy fornas.jimmygan.com→ NAS:4000,music.jimmygan.com→ NAS:4533 - Build VPS (server2,
158.101.140.85, Tailscale:100.70.115.1): podman, fast network for pulling images
Dashboard
- Backend: Python FastAPI (
dashboard/backend/) - Frontend: Svelte 5 + Tailwind CSS (
dashboard/frontend/) - Svelte 5 runes: use
$state,$props,$bindable(not legacyexport let) - Sidebar: categorized as Main (Overview, Docker, Files, Terminal), Media (Navidrome, Jellyfin, Audiobookshelf, Immich), Tools (OpenClaw, Repos, Gitea Web, Stirling PDF, Vaultwarden, Speedtest)
- New pages: create route in
src/routes/, import inApp.svelte, add to appropriate category inSidebar.svelte
Build & Deploy
- Build images on Mac:
docker build --platform linux/amd64 - Transfer:
docker save <image> | ssh zjgump@100.78.131.124 "/volume1/@appstore/ContainerManager/usr/bin/docker load" - Deploy:
git pushtriggers Gitea Actions CI (docker compose up -d --pull never) — do NOT manually restart - CI workflow
deploy.ymlis stored in Gitea, not in this repo
Synology Quirks
- No
crontab— edit/etc/crontabwithsudo+printf, restart crond - No
scpsubsystem — usecat file | ssh ... 'cat > dest' - ACLs override Unix perms — use
sudo chmod 777+synoacltool -enforce-inheritfor bind mounts
DNS
- dnsmasq on NAS resolves
*.jimmygan.com→161.33.182.109(Caddy VPS) - Tailscale split DNS:
jimmygan.com→ NAS (queries hit dnsmasq) - All paths (LAN, Tailscale, public) route through Caddy for TLS
Proxy API
- URL:
https://www.bytecatcode.org - Models:
claude-opus-4-6,claude-sonnet-4-6,claude-haiku-4-5-20251001(no date-suffixed names)