# casa Welcome to my home server repository, where Home Assistant and other services are hosted. This repository is dedicated to documenting and maintaining the server configuration and workflows. The primary goal is to establish a Docker-based server capable of isolating services and communications related to home automation at the network level. The server operates within its own VLAN (`homesrv`) but requires controlled communication with other VLANs, such as `IOT Vlan` ## Table of Contents - [Services](#services) - [myInfra stack](#myinfra-stack) - [docker](#docker) - [rclone plugin](#rclone-plugin) - [nginx](#nginx) - [Home Assistant](#home-assistant) - [Lyrion Music Server (LMS)](#lyrion-music-server-lms) - [Mosquitto](#mosquitto) - [Wyoming](#wyoming) - [Zigbee2mqtt](#zigbee2mqtt) - [Host](#host) - [Proxmox - container](#proxmox---container) - [OS](#os) - [logs](#logs) - [Development, Maintenance and Deployment](#development-maintenance-and-deployment) - [Docker context](#docker-context) ## Services ### myInfra stack docker, promtail and telegraf configuration [maintained on myInfra repo](/marcio.fernandes/myInfra). ### docker #### rclone plugin [https://rclone.org/docker/](https://rclone.org/docker/) ```bash # execute on server sudo apt-get -y install fuse docker plugin install rclone/docker-volume-rclone:amd64 args="-v" --alias rclone --grant-all-permissions docker plugin list ``` [ansible role for plugin configuration](./rclone.docker-plugin.playbook.yaml) ### nginx [Docker Compose](./services/nginx/docker-compose.yaml) All sites configurations set during docker build. ### Home Assistant [Git Repo](https://git.limbosolutions.com/marcio.fernandes/homeAssistant) ### Lyrion Music Server (LMS) For instructions on setting up the Lyrion Music Server Docker container, refer to the [LMS Git Repository](/marcio.fernandes/lms). For information on integrating Lyrion Music Server with Home Assistant, visit the [Home Assistant Git Repository](/marcio.fernandes/homeassistant#squeezebox-lyrion-music-server). Using [Docker Rclone plugin](https://rclone.org/docker/) for accessing the bucket where music is stored. Configuration is managed via [Ansible playbook](./rclone.docker-plugin.playbook.yml). ```sh #configure access to s3 bucket ansible-playbook ./rclone.docker-plugin.playbook.yml ``` ### Mosquitto [Git Repo](https://git.limbosolutions.com/marcio.fernandes/mosquitto) ### Wyoming A peer-to-peer protocol for voice assistants (basically JSONL + PCM audio) ```json { "type": "...", "data": { ... }, "data_length": ..., "payload_length": ... } ``` Used in Rhasspy and Home Assistant for communication with voice services. This is an open standard of the Open Home Foundation. For more information about home assistant integration [check home assistant repo](/marcio.fernandes/homeassistant#wyoming). [docker compose file](./services/wyoming/docker-compose.yaml). Links: - [https://github.com/home-assistant/addons/blob/master/whisper/DOCS.md](https://github.com/home-assistant/addons/blob/master/whisper/DOCS.md) - [https://github.com/rhasspy/wyoming-faster-whisper](https://github.com/rhasspy/wyoming-faster-whisper) - [https://exitcode0.net/posts/wyoming-whisper-docker-compose/](https://exitcode0.net/posts/wyoming-whisper-docker-compose/) - [https://exitcode0.net/posts/wyoming-piper-docker-compose/](https://exitcode0.net/posts/wyoming-piper-docker-compose/) ### Zigbee2mqtt Zigbee to MQTT bridge, get rid of your proprietary Zigbee bridges SONOFF Universal Zigbee 3.0 USB Dongle Plus attached on [proxmox host](#proxmox---lxc-container). Patch security on [proxmox host](#proxmox---lxc-container). (usb passthrough to [lxc container](#proxmox---lxc-container)) ```yaml #on proxmox hosting server chown 100000:100020 /dev/ttyUSB0 chown 100000:100020 /dev/serial/by-id/usb-ITead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_c0e8eeb4b38ded118e7c06f6b86ce6f8-if00-port0 ``` [docker compose](./services/zigbee2mqtt/docker-compose.yaml) Links - [https://www.zigbee2mqtt.io/](https://www.zigbee2mqtt.io/) - [Home assistant integration](/marcio.fernandes/homeassistant#Zigbee2mqtt) - [Continuos Deploy - git action](./.gitea/workflows/services.zigbee2mqtt.yml) ## Host ### Proxmox - container Currently hosted on a proxmox ubuntu container. ```bash # cat /etc/pve/lxc/105.conf arch: amd64 cmode: shell cores: 2 features: fuse=1,keyctl=1,nesting=1 hostname: homesrv01 memory: 1500 net0: name=eth0,bridge=vmbr0,firewall=1,ip6=dhcp,...,type=veth onboot: 1 ostype: ubuntu protection: 1 rootfs: local-lvm:vm-105-disk-0,size=32G swap: 1500 unprivileged: 1 lxc.cgroup2.devices.allow: c 189:* rwm lxc.mount.entry: usb-ITead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_c0e8eeb4b38ded118e7c06f6b86ce6f8-if00-port0 dev/serial/by-id/usb-ITead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_c0e8eeb4b38ded118e7c06f6b86ce6f8-if00-port0 none bind,optional,create=file lxc.cgroup2.devices.allow: c 188:* rwm lxc.mount.entry: /dev/ttyUSB0 dev/ttyUSB0 none bind,optional,create=file ``` lxc.cgroup2.devices.allow and lxc.mount.entry identification ```bash # identify usb pen lsusb # example # Bus 001 Device 008: ID 10c4:ea60 Silicon Labs CP210x UART Bridge #replace with bus and device id ls -l /dev/bus/usb/001/008 #example result # crw-rw-r-- 1 root root 189, 7 May 17 15:56 /dev/bus/usb/001/008 # so #lxc.cgroup2.devices.allow: c 189:* rwm #lxc.mount.entry: usb-ITead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_c0e8eeb4b38ded118e7c06f6b86ce6f8-if00-port0 dev/serial/by-id/usb-ITead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_c0e8eeb4b38ded118e7c06f6b86ce6f8-if00-port0 none bind,optional,create=file ls -l /dev/serial/by-id/ # example result #lrwxrwxrwx 1 root root 13 May 17 15:56 usb-ITead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_c0e8eeb4b38ded118e7c06f6b86ce6f8-if00-port0 -> ../../ttyUSB0 ls -l /dev/ttyUSB0 #example result #crw-rw---- 1 root dialout 188, 0 May 17 15:56 /dev/ttyUSB0 #so #lxc.cgroup2.devices.allow: c 188:* rwm #lxc.mount.entry: /dev/ttyUSB0 dev/ttyUSB0 none bind,optional,create=file ``` ### OS ```bash # lsb_release -a Distributor ID: Ubuntu Description: Ubuntu 24.04 LTS Release: 24.04 Codename: noble # uname -r 6.8.4-3-pve ``` ### logs ```bash # check auto update scripts logs journalctl -r -t auto-update ``` ## Development, Maintenance and Deployment Using visual studio code, docker, ansible and gitea actions. ### Docker context ```bash # create context to homesrv01 docker on development devices docker context create homesrv01 --docker host=ssh://admin@homesrv01.dev.lan ```