{"id":15132806,"url":"https://github.com/heaven-waves/central-node","last_synced_at":"2026-01-05T03:08:46.567Z","repository":{"id":255545978,"uuid":"850929628","full_name":"Heaven-Waves/central-node","owner":"Heaven-Waves","description":"Configuration and code to be setup on a Raspberry Pi 4B board as a central node 📡","archived":false,"fork":false,"pushed_at":"2024-09-20T16:00:37.000Z","size":67,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-30T17:38:19.357Z","etag":null,"topics":["ansible","audio","central","configuration","debian","docker","raspberry-pi","streaming"],"latest_commit_sha":null,"homepage":"","language":"Jinja","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Heaven-Waves.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-02T05:29:09.000Z","updated_at":"2024-09-24T14:07:57.000Z","dependencies_parsed_at":"2024-09-16T11:59:56.593Z","dependency_job_id":"e07e7668-2658-44da-be0b-3935f7c37fe9","html_url":"https://github.com/Heaven-Waves/central-node","commit_stats":null,"previous_names":["heaven-waves/central-node"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Heaven-Waves%2Fcentral-node","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Heaven-Waves%2Fcentral-node/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Heaven-Waves%2Fcentral-node/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Heaven-Waves%2Fcentral-node/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Heaven-Waves","download_url":"https://codeload.github.com/Heaven-Waves/central-node/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237807437,"owners_count":19369595,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ansible","audio","central","configuration","debian","docker","raspberry-pi","streaming"],"created_at":"2024-09-26T04:40:27.733Z","updated_at":"2026-01-05T03:08:46.553Z","avatar_url":"https://github.com/Heaven-Waves.png","language":"Jinja","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Central Node 📡\n\n### Project that build entire custom Raspberry Pi OS Lite bootable image 💿\n\nThis image is intended to be used on [Raspberry Pi 4B](https://www.raspberrypi.com/products/raspberry-pi-4-model-b/specifications/) with 4G RAM 🍓 to turn this machine into a central node / server that accepts audio from Bluetooth\n\n\u003e Yes, you read it, you can connect your phone to it\n\nand streams it via RTP multicast to multiple [ESP32-LyraT V4.3](https://docs.espressif.com/projects/esp-adf/en/latest/design-guide/dev-boards/get-started-esp32-lyrat.html) [`peripheral-node`s](https://github.com/Heaven-Waves/peripheral-node) in your local network.\n\n## Raspberry Pi 4 model B\n\n\u003e You know it well\n\n\u003cp align=\"center\"\u003e\n\u003cimg\n     alt=\"Raspberry Pi 4 model B\"\n     src=\"https://raw.githubusercontent.com/Heaven-Waves/assets/main/img/RaspberryPi-4-model-B.png\"\n     width=\"500\"\n     \u003e\n\u003c/p\u003e\n\n## Dependencies\n\nVerry simple because the only actually required dependancy is\n\n### 🐋 Docker\n\nBecause everything in this repository (configurations, environments, etc.) is dockerized, making things easily portable.\n\n## How to use\n\nRunning this command within your `bash` shell:\n\n```bash\ndocker compose up\n```\n\nwill build the docker containers that will run it's task to create the `*.img` file.\n\nThere are provided default variable for:\n\n- new default user credentials\n- password to `root` user\n- Wi-Fi SSID and password to connect to\n\nNavigating to `config/vars` the default values could be **overriden** by creating files and variables with the same.\n\nExample configuration:\n\n`config/vars/credentials.yml`:\n\n```yml\nuser_name: thesis\nuser_password: thesis\n\nroot_password: very_strong_root_password_here\n```\n\n`config/vars/wifi.yml`:\n\n```yml\nwifi_ssid: My_Router_SSID\nwifi_password: My_Router_Password\n```\n\n### ⌛ This will take some time\n\nYou can use [Docker Desktop](https://www.docker.com/products/docker-desktop/) to watch the logs from the containers to see the process going\nor you can type\n\n```bash\n# for the emulator output\ndocker logs -f central-node-pi-emulator-1\n\n# for the configuration of the image\ndocker logs -f central-node-ansible-1\n```\n\n## Software used\n\n- 🍓 [Raspberry Pi OS Lite](https://downloads.raspberrypi.com/raspios_lite_arm64/images/raspios_lite_arm64-2024-07-04/)\n  - Release: 2024-07-04 (July 4th 2024)\n  - Based on: Debian 12 (Bookworm)\n- 🅰 Ansible\n- 🐋 Docker\n- 🎵 PipeWire - Audio/video server (from Debian Bullseye backports)\n- 🔊 WirePlumber - Session/policy manager for PipeWire\n- 🎬 GStreamer - Multimedia framework for RTP streaming\n\n## Expectations\n\nThe freshly created image is located in `dist` folder and i called `distro.img` by default:\n\n```\n.\n└── dist/\n    ├── distro.qcow2\n    ├── distro.img    \u003c-- the output bootable image\n    └── kernel.img\n```\n\nYou are free to use you software of choice (for example [`balenaEtcher`](https://etcher.balena.io/) or [`Pi Imager`](https://www.raspberrypi.com/software/)) or any other way (for example with `dd` or using [`Gnome Disk`](https://apps.gnome.org/DiskUtility/)) to flash the `distro.img` file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fheaven-waves%2Fcentral-node","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fheaven-waves%2Fcentral-node","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fheaven-waves%2Fcentral-node/lists"}