9992105b49
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 1m14s
- Add rbac.py with User model, LDAP group-to-role mapping, page/write dependencies - Proxy auth reads Remote-Groups header to resolve role from LDAP groups - JWT tokens carry role claim, /me returns role + allowed pages - Per-router page access control and viewer write protection - Terminal WebSocket RBAC check - Frontend filters sidebar links and routes by allowed pages - Admin-only Settings page and RBAC override endpoints - Mount rbac.json in docker-compose for page config persistence
75 lines
2.1 KiB
YAML
75 lines
2.1 KiB
YAML
services:
|
|
docker-socket-proxy:
|
|
image: tecnativa/docker-socket-proxy
|
|
container_name: docker-socket-proxy
|
|
restart: unless-stopped
|
|
labels:
|
|
- "com.centurylinklabs.watchtower.enable=true"
|
|
environment:
|
|
CONTAINERS: 1
|
|
IMAGES: 1
|
|
INFO: 1
|
|
POST: 1
|
|
volumes:
|
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
|
networks:
|
|
- internal
|
|
logging:
|
|
driver: json-file
|
|
options:
|
|
max-size: "10m"
|
|
max-file: "3"
|
|
|
|
dashboard:
|
|
# build: .
|
|
image: nas-dashboard:latest
|
|
container_name: nas-dashboard
|
|
restart: unless-stopped
|
|
ports:
|
|
- "127.0.0.1:4000:4000"
|
|
environment:
|
|
- DOCKER_HOST=tcp://docker-socket-proxy:2375
|
|
- GITEA_URL=http://gitea:3000
|
|
- GITEA_TOKEN=${GITEA_TOKEN}
|
|
- VOLUME_ROOT=/volume1
|
|
- SSH_HOST=host.docker.internal
|
|
- SSH_USER=zjgump
|
|
- VPS_SSH_HOST=158.101.140.85
|
|
- VPS_SSH_USER=jimmyg
|
|
- SECRET_KEY=${SECRET_KEY}
|
|
- ADMIN_USER=jimmy
|
|
- ADMIN_PASSWORD_HASH=${ADMIN_PASSWORD_HASH}
|
|
- TELEGRAM_BOT_TOKEN=${TELEGRAM_BOT_TOKEN:-}
|
|
- TELEGRAM_CHAT_ID=${TELEGRAM_CHAT_ID:-}
|
|
- TELEGRAM_PROXY=${TELEGRAM_PROXY:-}
|
|
- CORS_ORIGINS=https://nas.jimmygan.com
|
|
volumes:
|
|
- /volume1:/volume1
|
|
- /volume1/docker/nas-dashboard/ssh/dashboard_terminal:/app/ssh/id_ed25519:ro
|
|
- /volume1/docker/nas-dashboard/ssh/vps_terminal:/app/ssh/vps_id_ed25519:ro
|
|
- /volume1/docker/nas-dashboard/ssh/known_hosts:/app/ssh/known_hosts:ro
|
|
- /volume1/docker/chat-summarizer/data:/app/data/chat-summarizer:ro
|
|
- /volume1/docker/nas-dashboard/rbac.json:/volume1/docker/nas-dashboard/rbac.json
|
|
healthcheck:
|
|
test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:4000/api/health')"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
extra_hosts:
|
|
- "host.docker.internal:host-gateway"
|
|
networks:
|
|
- internal
|
|
- gitea_gitea
|
|
depends_on:
|
|
- docker-socket-proxy
|
|
logging:
|
|
driver: json-file
|
|
options:
|
|
max-size: "10m"
|
|
max-file: "3"
|
|
|
|
networks:
|
|
internal:
|
|
gitea_gitea:
|
|
external: true
|