Skip to content

← Firmware Downloads

Post-install setup · Rondo · Y1

Setting up a Rondo server

A lightweight, custom audio operating system for the Innioasis Y1.

Instructions published by the project, shown here word for word.

Setting up a Rondo server

Your music card and the FM radio work without a server. YouTube Music and YouTube need one: a small service that browses YouTube for the Y1 and passes the audio and video through in a form Android 4.2 can play. You run it yourself, so it uses your own YouTube account (or none), and nothing goes through anyone else's computer.

One server serves one Y1. It needs Docker with Compose, about 1 GB of disk, and has to stay on while you listen.

It runs on regular PCs and servers (x86-64) and on 64-bit ARM, such as a Raspberry Pi 4 or 5 with the 64-bit Raspberry Pi OS, or most NAS boxes. 32-bit systems don't work, because the tools it uses to reach YouTube aren't made for them. So far it has been tested on x86-64 only.

Where to run it

At homeOn a VPS
Runs ona computer, NAS or Raspberry Pi on your Wi-Fi (see below)a rented server, with a domain name
The Y1 can use iton your home Wi-Fianywhere it has Wi-Fi
Addresshttp://192.168.1.10:3000https://music.example.com
Compose fileinfra/compose.home.yamlinfra/compose.vps.yaml

At home is simplest. Pick a VPS if you want YouTube on the Y1 away from home too.

At home

Install Docker, then in a terminal:

git clone https://github.com/jarvissax/rondo.git
cd rondo
docker compose -f infra/compose.home.yaml up -d

Docker downloads the ready-made server (for regular PCs and 64-bit ARM like a Raspberry Pi 4 or 5) and starts it, with a small companion that installs its updates later. When it's running, get the one-time setup code:

docker logs rondo | grep "Rondo setup"

You'll also need this computer's address on your network (something like 192.168.1.10). Give it a fixed address in your router's settings, often called a "DHCP reservation". Otherwise it can change one day and the Y1 loses the server.

Your server's address is http://<that address>:3000. Carry on with [Finish the setup](#finish-the-setup).

On a VPS

You need:

git clone https://github.com/jarvissax/rondo.git
cd rondo
echo "RONDO_DOMAIN=music.example.com" > infra/.env
docker compose -f infra/compose.vps.yaml up -d
docker logs rondo | grep "Rondo setup"

This starts the server and Caddy in front of it. Caddy gets a certificate from Let's Encrypt and speaks the older kind of HTTPS that Android 4.2 still understands (see the comments in infra/Caddyfile). You can check that from any computer:

openssl s_client -connect music.example.com:443 -tls1_2 -cipher ECDHE-RSA-AES128-SHA </dev/null

It should print a certificate chain and Verify return code: 0 (ok).

Two things that break the Y1's connection:

Your server's address is https://music.example.com.

Finish the setup

  1. Admin page: open <your server's address>/admin in a browser. Enter the setup code from

    the log and choose an admin password.

  2. Connect the Y1: on the admin page, go to Device and press Connect a Rondo. It shows

    a 6-digit code, good for 10 minutes.

  3. On the Y1, open Settings › Server › Connect to a server. Type your server's address and,

    on the next screen, the code from step 2. (Typing is quicker in the dashboard: open **Settings › Dashboard on the Y1, the address it shows on your phone or computer, then its Server** page.)

Settings › Server on the Y1 now says it's connected; Connection test checks it. YouTube Music and YouTube are ready.

The admin page

The server's admin page

Open <your server's address>/admin any time to see how things are going. A sign-in lasts 12 hours.

Your YouTube account (optional)

Without an account you can still search and play anything, open artists, albums and public playlists, and see a general home page. Rondo hides Library, Subscriptions and History until an account is connected.

No accountSign in with a codePlus cookies.txt
Search, play, artists, albums, public playlistsyesyesyes
YouTube homegeneralyoursyours
YouTube subscriptions and historyhiddenyesyes
YouTube Music playlists and liked songshiddenyesyes
YouTube Music home and historygeneralgeneralyours

Sign in with a code works like signing in a smart TV. On the admin page, go to **YouTube account and press Get a code**. Open google.com/device on your phone, enter the code and allow access. It renews itself and keeps working when you use the same account in a browser. **Sign out** on the admin page undoes it, at Google too.

cookies.txt adds YouTube Music's own home and history. YouTube only gives those to a browser session:

  1. Open a private window and sign in at youtube.com. A separate Google account for Rondo is

    the safest choice, because YouTube sometimes flags accounts used by servers.

  2. Export the cookies with a "cookies.txt" browser extension (Netscape format).
  3. Close the private window right away. If the browser keeps using that session, Google

    replaces it and the server gets signed out.

  4. On the admin page, press Upload cookies.txt. It says who's signed in when it worked, and

    Activity warns you if the cookies stop working later.

Keeping it running

  cd rondo
  git pull
  docker compose -f infra/compose.home.yaml pull           # or compose.vps.yaml
  docker compose -f infra/compose.home.yaml up -d

A server set up before 1.0.2 built itself and has no updater yet; those four lines move it to the ready-made images, with Update from then on. Your admin password, account and connected Y1 are kept on a Docker volume and survive updates either way.

  docker exec rondo node -e 'const f="/data/config.json",fs=require("fs"),d=JSON.parse(fs.readFileSync(f));delete d.adminHash;fs.writeFileSync(f,JSON.stringify(d,null,2))'
  docker restart rondo
  docker logs rondo | grep "Rondo setup"

Privacy

The server doesn't store audio or video; it passes streams through as they play. Your cookies and the code sign-in stay on the server's Docker volume, readable only by the server, and are never shown or written to the logs. The Y1 talks only to your server, never to Google.

How the server works, and its API, are described in docs/dev/server-api.md.

Published by the jarvissax/rondo project [1] [3]