Setting up this repository is easy:
pip3 install -r requirements.txt
You do not need to set up Keepass or a bundlewrap .secrets.cfg for basic encoder setup.
If you have access to the c3voc keepass file, you may want to set up keepass and the .secrets.cfg:
export BW_KEEPASS_FILE=$HOME/whereever/the/voc/keepass/lives.kdbx
export BW_KEEPASS_PASSWORD=reallysecure
The contents of the .secrets.cfg file can be found in the keepass file,
too. If you need access to the .secrets.cfg file, but don't have keepass
access, please let us know.
The .secrets.cfg file should be deployed in the same directory as this
README file.
You want to set up ssh multiplexing for fast runs:
Host *
ControlPath ~/.ssh/cm-%r@%h:%p
ControlMaster auto
ControlPersist 10m
These are just some examples, please refer to the bundlewrap documentation for more information.
# apply configuration to system(s), restarting services as needed
$ bw apply <system or group>
# apply configuration to system(s), skipping all restarts that would
# interrupt a stream or recording
$ bw apply -s tag:causes-downtime -- <system or group>
# apply configuration to system(s), but ask before doing any change, so
# you can decide if you really want to do the change
$ bw apply -i <system or group>
# dry-run, show all changes an apply would do, without doing any actual
# changes on the system
$ bw verify <system or group>
# verify configuration for a system locally
# if you don't have keepass access, you have to append -i flag
$ bw test <system or group>
<system or group> can be a single system name, like encoder1 or
a group of systems, like saal1. The saal groups contain all systems
in that case (encoder, minion, mixer, all tally pis).
To set up a new event, do the following steps, add yourevent.toml to
the groups directory in this repository. That file should contain the
basic information about your event:
subgroups = ["saal1", "saal2"]
members = ["releasing"]
[metadata.event]
name = "ZYXcon"
slug = "XYZ"The event slug must match the Project.Slug property in our ticket
tracker.
Please add the rooms used in your event to the subgroups list of the
file.
Available room setups:
- saal1
- saal2
- saal3
- saal4
- saal5
- saal6
- saal23 (CCCB)
- saal28 (realraum Graz / Grazer Linuxtage)
- saal80 (muccc)
- saal81 (hacc)
- saal96 (kunsi)
- saal98 (derpeter)
- saal191 (seibert)
- servercase
To set a room name, simply edit the room_name value in nodes/yourencoder.toml:
[metadata.event]
room_name = "myroom"It is important that you never commit yourevent.toml to the main branch
of this repository. Instead, please create a branch named events/XYZ,
replacing XYZ with your event slug.
If you want to use overlays ("Bauchbinden" in German), you have to add
the key overlays to yourevent.toml. The value of this key should be
a full-blown URL pointing to a .tar.gz-Archive containing the overlays
themselves. You can create it using tar -czf overlays.tar.gz *.png.
If the event uses a schedule.json file, you can add it to the config
using the schedule_json key. This needs to be a URL, too.
If the event does not use a schedule, you can specify
filename-to-title-Mappings yourself. You can do so using the
event/overlay_mapping metadata key.
If you provide a schedule.xml and event/overlay_mapping, the schedule
will take preference.
[metadata.event]
schedule_json = "https://example.com/schedule.json"
overlays = "https://example.com/overlays.tar.gz"
[metadata.event.overlay_mappings]
# Omit ".png" from filename here
graphic1 = "Alice"
graphic2 = "Bob"
graphic3 = "Alice and Bob"Using this repository, you can deploy room-specific or event-specific (or a mixture of both) artwork to the encoders.
Place your artwork into data/voctocore-artwork/files/<event_slug>/
for event-specific artwork, into
data/voctocore-artwork/files/<event_slug>/saal<number>/ for
room-specific artwork.
Room-specific artwork will take preference over event-specific artwork. In case neither is found, bundlewrap will use the generic VOC artwork.
Bundlewrap will deploy pygtk-atem-switcher to each mixer laptop.
If your ATEM is not reachable at 10.73.<room>.40, please set the
metadata pygtk-atem-switcher/atem/ip to the correct ip address.
pygtk-atem-switcher will enforce some settings on startup to ensure
smooth operation in all cases. To change these settings, add the
following metadata to the nodes/yourmixer.toml file.
If you wish to hide an input from the software, set its name to empty
or x.
# All those values represent the defaults set by bundlewrap, you only
# need to copy what you want to change.
[metadata.pygtk-atem-switcher.atem]
video_mode = "1080p25"
[metadata.pygtk-atem-switcher.atem.settings.inputs]
# use "x" to hide the button in the UI
input1 = "Laptop"
input2 = "x"
input3 = "x"
input4 = "info-beamer"Provisioning of a new system is relatively straightforward, but mentioned here for completeness.
- Boot the debian installer of the desired debian version
- During installation, ensure you create the user
vocinstead of your own user. - Log in to the system and set up the following:
- Log in for user
vocwithout a password sudofor uservocwithout a password- Add all mounts to
/etc/fstaband mount the filesystems.
- Log in for user
- Ensure you can run
ssh yoursystem.lan.c3voc.de 'sudo date'without issues. Use the hostname set in the node file to verify (the default is{nodename}.lan.c3voc.de). - Ensure you have both keepass access and access to the bundlewrap
.secrets.cfg - Run
BW_SSH_ARGS="-l voc" bw apply -P4 {nodename}- using-P4will ensure you don't run into "too many startups" issues with the debian default sshd config.