# rpi-zigbee-stack — Docker Compose stack management for RPi 3B+ set export RPI := "root@192.168.9.147" COMPOSE := "/root/compose.yaml" # Default: show stack status default: ssh {{RPI}} "docker compose -f {{COMPOSE}} ps" # ---- Service management ---- # Start all services up: ssh {{RPI}} "docker compose -f {{COMPOSE}} up -d" # Stop all services down: ssh {{RPI}} "docker compose -f {{COMPOSE}} down" # Restart all services restart: ssh {{RPI}} "docker compose -f {{COMPOSE}} restart" # Restart a specific service restart-svc SERVICE: ssh {{RPI}} "docker compose -f {{COMPOSE}} restart {{SERVICE}}" # Pull latest images pull: ssh {{RPI}} "docker compose -f {{COMPOSE}} pull" # ---- Logs ---- # Tail all logs logs: ssh {{RPI}} "docker compose -f {{COMPOSE}} logs --tail 50" # Follow all logs logs-follow: ssh {{RPI}} "docker compose -f {{COMPOSE}} logs -f" # Logs for a specific service logs-svc SERVICE: ssh {{RPI}} "docker compose -f {{COMPOSE}} logs --tail 50 {{SERVICE}}" # ---- Zigbee ---- # Show zigbee2mqtt status zb-status: ssh {{RPI}} "docker logs zigbee2mqtt --tail 10 2>&1" # Permit zigbee joining for 60 seconds zb-permit: ssh {{RPI}} "docker exec mosquitto mosquitto_pub -t zigbee2mqtt/bridge/request/permit_join -m '{\"value\":true,\"time\":60}'" # Disable zigbee joining zb-deny: ssh {{RPI}} "docker exec mosquitto mosquitto_pub -t zigbee2mqtt/bridge/request/permit_join -m '{\"value\":false}'" # List zigbee devices zb-devices: ssh {{RPI}} "docker exec mosquitto mosquitto_pub -t zigbee2mqtt/bridge/request/devices -m ''" # ---- Node-RED ---- # Open Node-RED editor nr-editor: xdg-open http://192.168.9.147:1880 2>/dev/null || open http://192.168.9.147:1880 2>/dev/null # Open Node-RED dashboard nr-dashboard: xdg-open http://192.168.9.147:1880/ui 2>/dev/null || open http://192.168.9.147:1880/ui 2>/dev/null # ---- Maintenance ---- # Sync compose.yaml and configs to RPi sync: scp compose.yaml {{RPI}}:/root/compose.yaml scp mosquitto.conf {{RPI}}:/root/mosquitto/config/mosquitto.conf scp zigbee2mqtt.yaml {{RPI}}:/root/zigbee2mqtt/configuration.yaml @echo "Configs synced to RPi. Run 'just restart' to apply." # Full redeploy: sync configs + restart redeploy: sync restart # Show disk usage on RPi df: ssh {{RPI}} "df -h / /var/lib/docker" # Show Docker disk usage docker-df: ssh {{RPI}} "docker system df" # Prune unused Docker images/volumes prune: ssh {{RPI}} "docker system prune -f" # ---- Snapshots ---- # Backup current RPi configs to local repo backup: ssh {{RPI}} "cat /root/compose.yaml" > compose.yaml ssh {{RPI}} "cat /root/mosquitto/config/mosquitto.conf" > mosquitto.conf ssh {{RPI}} "cat /root/zigbee2mqtt/configuration.yaml" > zigbee2mqtt.yaml @echo "Backed up. Run git diff to see changes."