Skip to content

deploy

Everything that sets up and configures the box, the package of the library for the NAS and the Docker image.

Path Content
install/ the installer of a box (install.sh, built into one file by ../scripts/build_installer.sh), the setup after its reboot and the launcher of rfid-reader (rfid-reader-launcher, box.md, section 7); test/run.sh tries it on a stand-in for a box
ansible/ the Ansible playbook of the developer's box: site.yaml, inventory.yaml, group_vars/, roles/; it runs the installer
docker/ the image of the library and of a box without hardware: Dockerfile (its base image pinned to a digest), entrypoint.sh, compose.yaml with its two passwords as files next to it (admin-password, bootstrap-password, not in git) and example.env
config/tinyjukebox.yaml config of the box
config/asound.conf /etc/asound.conf of the box (software volume control Softmaster)
config/tinyjukebox-sim.yaml, config/library-sim.yaml configs for box and library on the PC (../start_sim.sh, ../start_library.sh)
slot/ what decides which version of the box software runs: tinyjukebox-slot, the start script tinyjukebox-start, tinyjukebox-functions, and the systemd unit that starts the start script
release.pub public key that a box verifies the slot archive of a release with
scripts/tinyjukebox.service systemd unit of a box without slots
scripts/backup_json.sh backup of the JSON files before every start of the service, on a box without slots
scripts/install_service.sh installs the unit by hand; not used by the playbook
synology/ the package of the library for the Synology NAS: INFO, conf/, WIZARD_UIFILES/ (the installation dialog), scripts/ (called by DSM) and package/ (what lands on the NAS)

Run from the root of the clone:

./update_box.sh                    # the playbook: runs the installer of the clone and brings the config of the box
scripts/build_installer.sh         # the installer in dist/install.sh
scripts/build_image.sh --load      # the image for this computer, from the wheel in dist/ (uv build --out-dir dist)
./fetch_release.sh                 # the files of a release into dist/: slot archive for a box, package for the NAS
./build_package.sh                 # builds the package for the NAS in dist/; installed by hand in DSM
./update_library.sh NAS            # installs the package of the newest release on the NAS, through the web API of DSM;
                                   # the first time it asks whether the certificate of DSM is the right one
./release.sh NAS                   # checks, pushes, moves master forward, waits for the release, update_library.sh

Documentation:

  • Deployment: how software and setup reach the box, playbook, roles, variables, first setup, updates, changes on the box, data of the previous box, acceptance checklist
  • The box: the system the installer produces, with reasons
  • Operations: service, logs, users, diagnostics
  • Configuration: all keys of tinyjukebox.yaml
  • Library: the package for the NAS (section 3.2), how a package is written (section 3.6) and its first installation (section 3.7); slots and self-update of a box (section 6)