Full Install#
initialize rendering machines#
Install Debian 12 on all machines
In the Installer select or do the following
Language: English
Location: Germany
Locale: en_US.UTF-8
Keyboard: German
Select the correct network interface (you’ll have to find out)
Hostname: kaoruXX for HuFo renderers (renderers)
Domain: the correct domain (empty in H0104/ak.tu-berlin.de in EN325/tu-ctrl at HuFo)
Root password: leave empty for automatic enabling of sudo/adding of the standard user to sudoers group
User: tu-studio
Full name: tu-studio
User password: use a good password here friend
Partitioning method: Manual (Guided partitioning manual)
/dev/nvme0n1
yes new partition table
1.0 MB free space is done automatically
512.0 MB EFI System Partition
Use as: EFI System Partition
Bootable flag: on
850.0 GB brtfs / (root)
mount options: defaults
label: system
Bootable flag: off
32 GB swap
Use as: swap area
Bootable flag: off
Finish partitioning and write changes to disk
wait for install of Base system
mirror country: Germany
select a mirror (deb.debian.org for example)
HTTP proxy: none (or the correct proxy at HuFo)
Participate in package usage survey: No
Software selection: SSH server, standard system utilities, ON PLAYER PC ONLY: choose a desktop environment, currently we use KDE (but that might be overkill)
Reboot
perform installation using ansible#
ansible playbooks for installation are run with this command:
ansible-playbook -i <your_inventory>.yml <playbook_name>.yml.
whenever a install/*.yml file is mentioned in the following, it
should be executed using the command above.
clone this repo
create
vars/vault.ymlfrom thevars/vault.yml.template, fill it in. if regularly switching between locations create multiple vault files, and just symlink them to the currently required one:ln -sf vault_hufo.yml vars/vault.ymlif you use a dante soundcard change the path in
vars/vars.ymlto the correct path to the driver directoryadd host to ansible inventory file, follow the provided inventory files for guidance
hosts should be grouped into the sections
renderer,player,video_playerandinfo_playerhosts should contain the following variables (if used):
ansible_host: hostnameansible_user: usernameservicescontaining a list of services running on this machine, available services areosc-kreuz,jack-connection-manager,audio-matrix,ambisonics,gui,showcontrolandtwonderlocation: the location of this machine for use with the configs, at the moment one ofHUFO,EN325orH0104audiodriver: list of strings or single string ofdanteormadin_twondersonly necessary if services containstwonder, sets up thetwonder.targetwith the correct number of twonders
rollout your ssh key to pcs:
ansible-playbook install/rollout_ssh_key.yml --ask-pass -e "key=<path/to/public/key.pub>". it might be necessary to install thesshpasspackage for your system.change the ssh-key in the ansible.cfg file to point to your private key.
if necessary install sudo:
install/install_sudo.ymlsetup btrfs subvolumes (don’t do this more than once!):
install/setup_btrfs.yml -k. This needs the-koption to ask for the ssh connection password, because the moving around of btrfs subvolumes briefly moves the.sshdirectory somewhere else…when in hufo: run hufo specific scripts:
install/hufo_setup_proxy_server.ymlinstall/hufo_first_run.ymlinstall/hufo_avm_user.ymlstart main install script:
install/full_install.yml
install seamless player#
The seamless player needs a bit more love. first download the x64 linux
version of the SWS extension for REAPER from
here. The REAPER version is specified
in program_versions.yml, consequently it can be overwritten using
-e for both reaper_archive_name and reaper_url
run these playbooks: 1.
install/setup_player_autologin_and_desktop.yml 2.
install/setup_player_reaper.yml -e "sws_archive=<path/to/your/sws-x.xx.x.x-Linux-x86_64.tar.xz>"
3. install/install_player_showcontrol.yml 4.
install/install_player_seamless-plugin-suite.yml 5. only in
H0104: install/setup_player_dante_bridge.yml
should you have problems with nvidia graphics cards and wayland runt the
playbook setup_player_nvidia_drivers
some steps in REAPER need to be performed manually on the GUI:
setup REAPER remote control#
in reaper go to
options->Preferences->Control/OSC/webpress “add” to add a new conrol surface of mode
OSCDevice Name: Showcontrol or something like that
Pattern Config:
select
(open config directory)copy
HufoShowControl.ReaperOSCfrom the Showcontrol repo thereselect
(refresh list)select
HufoShowControl
Mode:
Local port [receive only]local listen port:
8000local ip:
0.0.0.0
setup REAPER#
set number of outputs to 64
setup remote desktop#
vnc with the help of krfb is installed using ansible playbook
install/setup_player_autologin_and_desktop.yml, however not started
automatically.
configure krfb on the desktop: System Settings > Sharing > Desktop
Sharing > Configure
specify program versions#
desired versions are specified in vars/program_versions.yml, these
correspond to github tags/branches/commits
to overwrite the version of a specific program pass it to the
ansible-playbook call as -e "<program>_version=X"
encrypt variable#
ansible-vault encrypt_string --name "variable_name"
additional ansible scripts not run from full_install#
install/install_jack-silence-detector: debugging tool to discover longer silences (was used to debug reaper crashes)install/reboot.yml: used to reboot everything, sometimes used by servicesinstall/remove_apt_cdrom_source.yml: sometimes needed if installation of programs on fresh debian installs fails.install/upgrade_system.yml: performs a system upgrade
maintenance playbooks#
maintain/pull_videos.yml: pulls all videos from the video players to your local machinemaintain/rollout_videos.yml/maintain/rollout_info_text.yml: roll out the video/info video files of the desired piece to all video/info players, has to be modified before use:add video file name to
maintain/templates/playlist.txt.j2, {{ video_id }} will be replaced with the index of this video player (1-6)put the video files into the
project_sourcedirectory (or change theproject_sourcedirectory to your video directory, whatever makes you happy)add a block like this to the tasks in
rollout_videos.yml:
- name: "Copy <new_project> onto the server" copy: src: "{{ project_source }}/<new_project>/cool_filename-0{{ video_id }}.mp4" dest: "{{ target_content_dir }}" owner: kiosk group: avm mode: "u=rwx,g=rwx,o=rx"