feat(stack): replace Organizr with Tatlock UI, remove Netdata

Remove Organizr dashboard and Netdata monitoring:
- Delete stacks/organizr.yml and stacks/netdata.yml
- Delete organizr-widgets/ directory and npm forward-auth config
- Remove organizr database references from postgres-shared docs

Promote Tatlock UI as primary dashboard:
- Move from port 8092 to 9999 (Organizr's port)
- Enable external access at home.schweitz.net
- Update all documentation references

Update service counts: 26 containers across 20 stacks

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-03 11:23:45 +01:00
co-authored by Claude Opus 4.5
parent d647a2e005
commit ba0aa5ef3d
13 changed files with 39 additions and 1000 deletions
+2 -9
View File
@@ -22,13 +22,7 @@ review the http://core-api/docs openapi documentation for infrastructure managem
|-------|------|-------|-----|-------------|
| **Headscale** | `headscale.yml` | 8085, 9090 | No | Self-hosted Tailscale control server |
### Phase 3: Monitoring
| Stack | File | Ports | GPU | Description |
|-------|------|-------|-----|-------------|
| **Netdata** | `netdata.yml` | 19999 | No | Real-time system performance monitoring |
### Phase 4: Optimization
### Phase 3: Optimization
| Stack | File | Ports | GPU | Description |
|-------|------|-------|-----|-------------|
@@ -62,9 +56,8 @@ review the http://core-api/docs openapi documentation for infrastructure managem
- 2222: Gitea SSH
- 3002: Gitea HTTP
### Monitoring Services (19000-19999)
### Backup Services
- 8200: Duplicati
- 19999: Netdata
### ML/API Services (11000+)
- 11434: Ollama
-61
View File
@@ -1,61 +0,0 @@
version: '3.8'
# Netdata - Real-Time System Performance Monitoring
# Phase 3: Monitoring & Management
# Ports: 19999
# GPU: No
# Storage: Minimal (reads from host /proc and /sys)
services:
netdata:
image: netdata/netdata:latest
container_name: netdata
restart: unless-stopped
hostname: tower-of-joy
ports:
- "19999:19999"
cap_add:
- SYS_PTRACE # Required for process monitoring
security_opt:
- apparmor:unconfined
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
- TZ=Europe/Amsterdam
# Optional: Claim to Netdata Cloud for remote access
# - NETDATA_CLAIM_TOKEN=your-claim-token
# - NETDATA_CLAIM_URL=https://app.netdata.cloud
healthcheck:
test: ["CMD-SHELL", "curl -fSs http://localhost:19999/api/v1/info || exit 1"]
interval: 30s
timeout: 10s
retries: 3
start_period: 30s
networks:
- docker-dataplane
networks:
docker-dataplane:
external: true
name: docker-dataplane
# After Deployment:
# 1. Access http://localhost:19999
# 2. Explore dashboard sections:
# - CPU usage
# - RAM usage
# - Disk I/O
# - Network traffic
# - Docker containers
# - GPU monitoring (if configured)
# 3. Set up alerts (optional)
# 4. Configure alarm notifications
#
# Features:
# - Real-time graphs (1s granularity)
# - Per-container metrics
# - System health monitoring
# - Historical data
# - Low resource overhead
-79
View File
@@ -1,79 +0,0 @@
version: '3.8'
# Organizr - Unified Dashboard with Tabbed Interface
# "One page to rule them all" - Tabs for all services in single interface
# Phase 3.5: Unified Access Layer
# Ports: 9999 (Web UI)
# GPU: No
# Storage: SSD (configs and user data)
services:
organizr:
image: organizr/organizr:latest
container_name: organizr
restart: unless-stopped
ports:
- "9999:80"
volumes:
# SSD storage for configs and user data
- /home/jpmschweitzer/docker-data/organizr:/config
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Amsterdam
- fpm=true # Enable PHP-FPM for better performance
- DB_TYPE=pgsql
- DB_HOST=postgres-shared
- DB_PORT=5432
- DB_NAME=organizr
- DB_USER=organizr_user
- DB_PASS=${ORGANIZR_DB_PASSWORD}
healthcheck:
test: ["CMD-SHELL", "curl -fSs http://localhost:80/ || exit 1"]
interval: 30s
timeout: 10s
retries: 3
start_period: 30s
networks:
- docker-dataplane
networks:
docker-dataplane:
external: true
name: docker-dataplane
# Setup Instructions:
# 1. Ensure tower-of-joy is connected to Headscale mesh (get mesh IP)
# 2. Deploy this stack: make deploy-organizr
# 3. Access via mesh IP: http://10.99.0.1:9999 (or local: http://192.168.86.149:9999)
# 4. Complete setup wizard
# 5. Add tabs using MESH IPs for VPN access:
# - Portainer: http://10.99.0.1:8001
# - Netdata: http://10.99.0.1:19999
# - Jellyfin: http://10.99.0.1:8096 (when deployed)
# - Nextcloud: http://10.99.0.1:8082 (when deployed)
#
# Access Pattern (Option B - Hybrid):
# VPN Access (Primary - Admin Tools):
# - Connect to Headscale VPN
# - Access Organizr: http://10.99.0.1:9999
# - All tabs use mesh IPs (10.99.0.x)
# - Secure, no public exposure
#
# Public Access (Media/Files Only):
# - https://home.schweitz.net → Organizr (optional public)
# - https://media.schweitz.net → Jellyfin
# - https://cloud.schweitz.net → Nextcloud
# - Admin tools NOT accessible without VPN
#
# Mesh IP Benefits:
# - Works from anywhere (VPN connected)
# - No complex proxy rewrites needed
# - Secure by default
# - Easy device addition
#
# Important Notes:
# - Use mesh IPs (10.99.0.x) instead of local IPs (192.168.86.x)
# - Some services may block iframe embedding (X-Frame-Options header)
# - Organizr authentication secures public access
# - See docs/mesh-access-strategy.md for complete guide
+6 -6
View File
@@ -1,9 +1,9 @@
version: '3.8'
# Tatlock UI - Home Lab Dashboard (Flutter Web)
# Port: 8092 (HTTP)
# Port: 9999 (HTTP)
# GPU: No
# External: home.schweitz.net (future, replacing Organizr)
# External: home.schweitz.net
# Storage: None (stateless static web app)
#
# Container image built from: git.schweitz.internal/jpmschweitzer/tatlock-ui
@@ -15,7 +15,7 @@ services:
container_name: tatlock-ui
restart: unless-stopped
ports:
- "8092:80"
- "9999:80"
networks:
- docker-dataplane
labels:
@@ -39,6 +39,6 @@ networks:
name: docker-dataplane
# Access:
# - Internal: http://tower-of-joy:8092
# - Mesh VPN: http://10.99.0.1:8092
# - Future: https://home.schweitz.net (after NPM switch from Organizr)
# - Internal: http://tower-of-joy:9999
# - Mesh VPN: http://10.99.0.1:9999
# - External: https://home.schweitz.net