Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
c3tracker:setup [2022/09/04 19:44] – kunsi | c3tracker:setup [2025/01/31 20:59] (current) – kunsi | ||
---|---|---|---|
Line 7: | Line 7: | ||
* Compare project properties with previous instalment of the same event | * Compare project properties with previous instalment of the same event | ||
- | optimal properties from current project | ||
- | ``` | + | ==== optimal properties from current project ==== |
- | Project | + | |
- | Project.Slug eh19 | + | Replace |
- | Processing | + | |
- | Processing.Loudnorm.Enable yes | + | Meta.Acronym |
- | Processing.BasePath /video | + | |
- | Processing.Path.Intros / | + | Meta.License |
- | Processing.Path.Outro / | + | Meta.Year |
- | Publishing | + | |
- | Publishing.Path / | + | Processing.Auphonic.Enable |
- | Publishing.Upload.SkipSlaves speedy, | + | Processing.BasePath |
- | Publishing.UploadOptions -i / | + | Processing.MasterMe.Enable |
- | Publishing.UploadTarget upload@releasing.c3voc.de:/ | + | Processing.Path.Intros |
- | Publishing.Voctoweb.Enable yes | + | Processing.Path.Outro |
- | Publishing.Voctoweb.Path / | + | |
- | Publishing.Voctoweb.Thumbpath / | + | Publishing.Upload.SkipSlaves |
- | Publishing.Voctoweb.Slug eh19 | + | Publishing.UploadTarget |
- | Publishing.Voctoweb.Tags easterhegg, | + | |
- | Publishing.Voctoweb.Url https:// | + | |
- | Publishing.YouTube.Category 27 | + | Publishing.Voctoweb.Path |
- | Publishing.YouTube.Enable yes | + | Publishing.Voctoweb.Slug |
- | Publishing.YouTube.Privacy public | + | Publishing.Voctoweb.Thumbpath |
- | Publishing.YouTube.Tags easterhegg, Wien, bun intended, Chaos Computer Club Wien, c3w | + | Publishing.YouTube.Category |
- | Publishing.YouTube.TitlePrefix Easterhegg 2019 - | + | Publishing.YouTube.Enable |
- | Publishing.YouTube.Token 1/ | + | Publishing.YouTube.Playlists |
- | Publishing.Mastodon.Enable yes | + | Publishing.YouTube.Privacy |
- | Publishing.Twitter.Enable yes | + | Publishing.YouTube.Token |
- | Record | + | |
- | Record.Container TS | + | Record.Container |
- | Record.Slides yes | + | |
- | ``` | + | |
+ | | ||
=== Worker Filter Examples | === Worker Filter Examples | ||
- | ``` | ||
- | EncodingProfile.IsMaster=no | ||
- | EncodingProfile.IsMaster=yes | ||
- | EncodingProfile.IsMaster= | ||
- | Fahrplan.Room=Servus.at Lab | ||
- | ``` | ||
+ | EncodingProfile.IsMaster=no | ||
+ | EncodingProfile.IsMaster=yes | ||
+ | EncodingProfile.IsMaster= | ||
+ | Fahrplan.Room=Servus.at Lab | ||
+ | |||
+ | |||
+ | Please note that the conditions in the " | ||
+ | Specifying a property with an empty value, which is often done for `EncodingProfile.IsMaster`, | ||
== Pipeline setup during event | == Pipeline setup during event | ||
During event setup of the pipeline, you have to decide if you want leave the MPEG TS snippets only on the [[hardware: | During event setup of the pipeline, you have to decide if you want leave the MPEG TS snippets only on the [[hardware: | ||
+ | |||
+ | === Simple: single-room setup (Variant 2) | ||
+ | |||
+ | {{drawio> | ||
+ | |||
+ | |||
+ | This variant is only practical if you have only one room, or at least one release encoder (aka [[hardware: | ||
+ | When using this variant with multiple rooms in one Tracker project (like at JEV22), you also have to set room filters in the tracker worker queues. | ||
+ | |||
+ | For every worker: | ||
+ | * set `EncodingProfile.IsMaster = yes` to avoid encoding all sub formats | ||
+ | * (set room filters in tracker e.g. `Fahrplan.Room = Foobar`, but this cannot be used at the same times as the above, see the warning below) | ||
+ | |||
+ | For every recoding cube: | ||
+ | * start tracker worker: `sudo systemctl start crs-worker.target` | ||
+ | |||
+ | For each minion: | ||
+ | * mount filesystems from encoder cube: `sudo crs-mount <storage location> | ||
+ | * start tracker scripts for encoding: `sudo systemctl start crs-encoding.service` | ||
+ | |||
+ | |||
+ | <panel type=" | ||
=== centralised storage (rsync) (Variant 1) | === centralised storage (rsync) (Variant 1) | ||
+ | |||
+ | {{drawio> | ||
+ | |||
The first variant is typically used for events with more than one room. For bigger events we use the dedicated [[hardware: | The first variant is typically used for events with more than one room. For bigger events we use the dedicated [[hardware: | ||
Line 62: | Line 90: | ||
For each encoderX start rsync on the central storage: `sudo systemctl start rsync-from-encoder@encoderX.lan.c3voc.de` | For each encoderX start rsync on the central storage: `sudo systemctl start rsync-from-encoder@encoderX.lan.c3voc.de` | ||
- | Then, start tracker workers on storage: `sudo systemctl start crs-worker.target` | + | Then, start tracker workers on storage: `sudo systemctl start crs-worker.target` |
==== Minion setup | ==== Minion setup | ||
Line 69: | Line 97: | ||
After mounting, you can start the tracker encoding workers: `sudo systemctl start crs-encoding.service` | After mounting, you can start the tracker encoding workers: `sudo systemctl start crs-encoding.service` | ||
+ | |||
+ | The minion VMs running inside our event colo case automatically mount `storage.lan.c3voc.de` via cifs and start their worker scripts. You usually do not need to touch them. | ||
| | ||
==== Cube as worker setup | ==== Cube as worker setup | ||
Line 78: | Line 108: | ||
The rest is very similar to above, but with different mounts so `/ | The rest is very similar to above, but with different mounts so `/ | ||
- | ```bash | + | |
- | sudo mount -t cifs -o uid=voc, | + | sudo mount -t cifs -o uid=voc, |
- | sudo mount -t cifs -o uid=voc, | + | sudo mount -t cifs -o uid=voc, |
- | sudo mount -t cifs -o uid=voc, | + | sudo mount -t cifs -o uid=voc, |
- | sudo mount -t cifs -o uid=voc, | + | sudo mount -t cifs -o uid=voc, |
- | ``` | + | |
| | ||
- | === decentralised classic (Variant 2) | ||
- | The second variant is only practical if you have at least one release encoder (aka [[hardware: | + | === decentralised pipeline |
- | For every worker: | + | <panel type=" |
- | * set room filters in tracker | + | |
- | For every recoding cube: | + | Similar to variant 2, but extended to work with multiple rooms. Instead of using rsync, recorded snippets remain on the encoding cubes and ''/ |
- | * start tracker | + | |
- | For each minion: | + | Tracker filters have to be set only for the recording cubes, minions do not require any filters (but on smaller events without many minions, a '' |
- | * mount filesystems from encoder cube: `sudo crs-mount <storage location> | + | |
- | * start tracker scripts | + | |
- | === decentralised pipeline (Variant 3) | + | On recording cubes: start the followin systemd units: |
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
- | <panel type=" | + | On all minions, including |
- | Similar to variant 2, but the release encoder (minion) only mounts the / | + | mkdir -p / |
+ | | ||
+ | mount.cifs -o uid=voc, | ||
+ | ... | ||
- | You have to set the room filters only for the recording cubes, the minions can process talks independently. | + | On all minions except |
- | Modify '' | + | mount.cifs -o uid=voc, |
- | * On recording cubes: comment out steps '' | + | |
- | * On release encoders: comment out steps '' | + | |
- | After modification, start the workers via the main screenrc on both recording cubes and release encoders: | + | Finally on all minions, including the one acting as storage, start the following systemd units: |
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
- | sudo ./start screenrc-pipeline | + | ==== Old example with systemd units and case 1 and 5, which was used during jev22 in Munich: |
+ | {{drawio> | ||
- | ==== Example with case 5 and 6: | + | optional: configure `10.73.0.2` (aka `storage.lan.c3voc.de`) on the master minion as secondary ip |
- | on recording cube, without intros either copy or mount the intros from their source | + | on recording cubes, mount or copy the intros from their source – here `storage.lan.c3voc.de` |
+ | |||
+ | sudo mount -t cifs -o password= {// | ||
+ | sudo systemctl start crs-recording-scheduler | ||
+ | sudo systemctl start crs-mount4cut | ||
+ | sudo systemctl start crs-cut-postprocessor | ||
+ | |||
+ | # check if everything is running as expected – you might have to disable/ | ||
+ | sudo systemctl status -n 0 crs-* | ||
+ | |||
+ | on master minion (in this example `storage.lan.c3voc.de`) | ||
+ | |||
+ | |||
+ | mkdir -p / | ||
+ | mount -t cifs -o password= {// | ||
+ | mount -t cifs -o password= {// | ||
+ | |||
+ | sudo systemctl start crs-encoding | ||
+ | sudo systemctl start crs-postencoding | ||
+ | sudo systemctl start crs-postprocessing | ||
+ | |||
+ | # check if everything is running as expected – you might have to disable/ | ||
+ | sudo systemctl status -n 0 crs-* | ||
+ | |||
+ | |||
+ | //(ensure that samba is installed on this master minion aka storage)// | ||
+ | |||
+ | |||
+ | on other minions | ||
+ | |||
+ | mkdir -p / | ||
+ | mount -t cifs -o uid=voc, | ||
+ | mount -t cifs -o uid=voc, | ||
+ | mount -t cifs // | ||
+ | mount -t cifs -o password= // | ||
+ | mount -t cifs -o password= // | ||
+ | mount -t cifs -o password= {// | ||
+ | |||
+ | |||
+ | |||
+ | ==== Old example with custom screenrc and case 5 and 6: | ||
+ | |||
+ | on recording cube, without intros either copy or mount the intros from their source | ||
sudo mount -t cifs -o password= {// | sudo mount -t cifs -o password= {// | ||
Line 126: | Line 203: | ||
on master minion (in this example minion5) | on master minion (in this example minion5) | ||
- | ``` | ||
- | mount -t cifs -o password= // | ||
- | mount -t cifs -o password= // | ||
- | mount -t cifs -o password= // | ||
- | cd / | ||
- | sudo ./start screenrc-pipeline # with steps D, E, F | ||
- | ``` | + | mount -t cifs -o password= // |
+ | mount -t cifs -o password= // | ||
+ | mount -t cifs -o password= // | ||
+ | cd / | ||
+ | sudo ./start screenrc-pipeline # with steps D, E, F | ||
//(ensure that samba is installed on this master minion)// | //(ensure that samba is installed on this master minion)// | ||
on other minions | on other minions | ||
- | ``` | ||
- | mount -t cifs -o password= {// | ||
- | mount -t cifs -o password= {// | ||
- | mount -t cifs // | ||
- | mount -t cifs -o password= // | ||
- | mount -t cifs -o password= // | ||
- | mount -t cifs -o password= {// | ||
- | cd / | ||
- | sudo ./start screenrc-encoding-only # only step E | ||
- | ``` | ||
+ | mount -t cifs -o password= {// | ||
+ | mount -t cifs -o password= {// | ||
+ | mount -t cifs // | ||
+ | mount -t cifs -o password= // | ||
+ | mount -t cifs -o password= // | ||
+ | mount -t cifs -o password= {// | ||
+ | cd / | ||
+ | sudo ./start screenrc-encoding-only # only step E |