Installation
Rondo is deployed to your Raspberry Pi using an Ansible playbook. The playbook handles everything — installing Docker, copying files, generating your config, and starting the container.
Prerequisites
Before running the playbook, make sure you have:
- Ansible installed on your control node
- SSH access to your Raspberry Pi(s)
- Your Pi running Raspberry Pi OS (Debian Bookworm+)
- The
piuser account available on each Pi
1. Clone the repository
git clone https://github.com/TheQuib/Rondo.git
cd Rondo2. Configure your variables
Copy or edit config.yml with your environment’s values. At minimum, you need to set your API endpoint and key:
token_url: "https://api.example.com/token"
token_headers:
accept: "application/json"
x-api-key: "{{ api_key }}:"
api_url: "https://api.example.com"
payload:
payload-1: "your-payload-data"
payload-2: "your-payload-data"
#led_enabled: true
#led_pin: 23
#button_pin: 17The config.yml is processed as a Jinja2 template when deployed, so variables like {{ api_key }} will be substituted from your Ansible environment variables. See Configuration for a full breakdown of all available options.
config.yml. Pass them through Ansible environment variables or, if using Semaphore, use its built-in secret manager.3. Set up your Ansible inventory
Add your Pi(s) to an inventory file. A basic static inventory looks like:
[pis]
pi1 ansible_host=192.168.1.101 ansible_user=pi
pi2 ansible_host=192.168.1.102 ansible_user=piIf you’re using Ansible Semaphore to manage your inventory, see the Semaphore section instead.
4. Run the playbook
ansible-playbook -i inventory deploy-rondo.ymlThe playbook will:
- Install Docker and its dependencies on the Pi
- Create the
/home/pi/rondoproject directory - Copy
docker-compose.ymlto the Pi - Generate
config.ymlfrom the Jinja2 template - Pull the latest Rondo container image
- Start the container with
--force-recreate - Ensure the container is set to restart automatically
Verifying the deployment
Once the playbook completes, SSH into your Pi and confirm the container is running:
docker psYou should see the rondo container listed with a status of Up. If you have led_enabled: true in your config, the LED should be solid — indicating Rondo is running and waiting for a button press.