Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| c3tracker:setup [2024/08/28 16:37] – kunsi | c3tracker:setup [2026/09/18 11:08] (current) – kunsi | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | == Project setup | + | ## Project setup |
| * Create tracker project (you can also clone a matching project to have prefilled properties) | * Create tracker project (you can also clone a matching project to have prefilled properties) | ||
| 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 | ||
| + | |||
| + | Replace `camp2023` with your chosen tracker project slug. | ||
| ``` | ``` | ||
| Line 14: | Line 17: | ||
| Meta.License | Meta.License | ||
| Meta.Year | Meta.Year | ||
| + | | ||
| Processing.Auphonic.Enable | Processing.Auphonic.Enable | ||
| Processing.BasePath | Processing.BasePath | ||
| Line 20: | Line 23: | ||
| Processing.Path.Intros | Processing.Path.Intros | ||
| Processing.Path.Outro | Processing.Path.Outro | ||
| - | + | | |
| - | Publishing.Path | + | Publishing.UploadTarget |
| - | Publishing.Upload.SkipSlaves | + | |
| - | Publishing.UploadTarget | + | |
| Publishing.Tags | Publishing.Tags | ||
| Publishing.Voctoweb.Enable | Publishing.Voctoweb.Enable | ||
| Line 34: | Line 35: | ||
| Publishing.YouTube.Privacy | Publishing.YouTube.Privacy | ||
| Publishing.YouTube.Token | Publishing.YouTube.Token | ||
| + | | ||
| Record.Container | Record.Container | ||
| Record.EndPadding | Record.EndPadding | ||
| Line 41: | Line 42: | ||
| ``` | ``` | ||
| - | === Worker Filter Examples | + | ### Worker Filter Examples |
| - | ``` | + | |
| - | EncodingProfile.IsMaster=no | + | # get all non-master tickets |
| - | EncodingProfile.IsMaster=yes | + | |
| - | EncodingProfile.IsMaster= | + | |
| - | Fahrplan.Room=Servus.at Lab | + | # get all master tickets |
| - | ``` | + | |
| + | |||
| + | # get all recording tickets | ||
| + | | ||
| + | |||
| + | # get all tickets in this room. | ||
| + | | ||
| - | Please note that the conditions in the " | ||
| - | Specifying a property with an empty value, which is often done for EncodingProfile.IsMaster, | + | Please note that the conditions in the " |
| - | == Pipeline setup during event | + | |
| + | Specifying a property with an empty value, which is often done for `EncodingProfile.IsMaster`, will match if this property does not exist at all on a ticket. So for `EncodingProfile.IsMaster`, specifying an empty filter will match on recording tickets which never have this property. | ||
| + | |||
| + | |||
| + | {{.: | ||
| + | ## 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: | + | ### Simple: |
| {{drawio> | {{drawio> | ||
| - | This variant is only practical if you have only one room, or at least one release encoder (aka [[hardware: | + | This variant is 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. | 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: | For every worker: | ||
| - | * set room filters in tracker e.g. `Fahrplan.Room = Foobar` | + | * 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: | For every recoding cube: | ||
| Line 77: | Line 89: | ||
| - | === centralised storage (rsync) (Variant | + | <panel type=" |
| + | |||
| + | ### centralised storage (rsync) (Variant | ||
| {{drawio> | {{drawio> | ||
| - | The first variant is typically used for events with more than one room. For bigger events we use the dedicated [[hardware: | + | This variant is typically used for events with more than one room. |
| - | For each encoderX start rsync on the central | + | Each recording encoder exposes the files via rsyncd, which are pulled by an rsync process running |
| - | Then, start tracker workers on storage: `sudo systemctl start crs-worker.target` (only needed if you don't use `storage.lan.c3voc.de` - worker scripts get started automatically) | ||
| - | ==== Minion setup | + | For each encoderX start rsync on the storage machine: |
| - | To allow the encoding workers to do their job, they need to mount the storage first: `sudo crs-mount <storage location> | + | |
| - | After mounting, you can start the tracker | + | If you use a minion as storage machine, you have start the tracker |
| - | The minion VMs running inside our event colo case automatically mount `storage.lan.c3voc.de` via cifs and start their worker | + | sudo systemctl |
| | | ||
| - | ==== Cube as worker setup | + | which starts |
| - | At small events, when the talks are finished for today, you can use the recording | + | - crs-recording-scheduler (A) |
| + | - crs-mount4cut.service | ||
| + | - crs-cut-postprocessor | ||
| + | - crs-encoding0, | ||
| + | - crs-postencoding | ||
| + | - crs-postprocessing | ||
| + | |||
| + | |||
| + | |||
| + | #### Minion setup | ||
| + | |||
| + | To allow get additional release encoding workers on the (other) minions, you need to connect to these an mount the storage machine first: | ||
| + | |||
| + | ssh minionX.lan.c3voc.de | ||
| + | sudo crs-mount <storage location> | ||
| + | |||
| + | After mounting, you can start the tracker encoding workers: | ||
| + | |||
| + | sudo systemctl start crs-encoding0.service | ||
| + | |||
| + | The virtual minion' | ||
| + | |||
| + | |||
| + | #### Encoder PCs as release encoding workers | ||
| + | |||
| + | At small events, when all talks are finished for today, you can use the recording | ||
| + | |||
| + | First – stop voctocore: | ||
| + | |||
| + | sudo systemctl stop voctomix2-voctocore | ||
| - | First: Stop voctocore. | ||
| 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 pipeline (Variant | + | ### decentralised pipeline |
| + | |||
| + | <panel type=" | ||
| + | |||
| + | Similar to variant B, but extended to work with multiple rooms. Instead of using rsync, recorded snippets remain on the encoding cubes and ''/ | ||
| + | |||
| + | 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 '' | ||
| + | |||
| + | On recording encoder PCs start the following 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 |
| - | | + | |
| - | | + | mount.cifs |
| + | | ||
| + | Finally on all minions, including the one acting as storage, start the following systemd units: | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| - | ==== New example with systemd units and case 1 and 5: | + | #### Old example with systemd units and case 1 and 5, which was used during jev22 in Munich: |
| {{drawio> | {{drawio> | ||
| optional: configure `10.73.0.2` (aka `storage.lan.c3voc.de`) on the master minion as secondary ip | optional: configure `10.73.0.2` (aka `storage.lan.c3voc.de`) on the master minion as secondary ip | ||
| + | |||
| + | sudo ip a add dev br0 10.73.200.24/ | ||
| on recording cubes, mount or copy the intros from their source – here `storage.lan.c3voc.de` | on recording cubes, mount or copy the intros from their source – here `storage.lan.c3voc.de` | ||
| Line 140: | Line 203: | ||
| # check if everything is running as expected – you might have to disable/ | # check if everything is running as expected – you might have to disable/ | ||
| sudo systemctl status -n 0 crs-* | sudo systemctl status -n 0 crs-* | ||
| + | |||
| on master minion (in this example `storage.lan.c3voc.de`) | 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 | + | mkdir -p / |
| - | sudo systemctl start crs-postencoding | + | mount -t cifs -o password= {// |
| - | sudo systemctl start crs-postprocessing | + | mount -t cifs -o password= {// |
| + | |||
| + | | ||
| + | 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-* | ||
| - | # 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)// | //(ensure that samba is installed on this master minion aka storage)// | ||
| Line 161: | Line 224: | ||
| on other minions | 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= {// | ||
| - | ``` | + | 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: | + | #### Old example with custom screenrc and case 5 and 6: |
| on recording cube, without intros either copy or mount the intros from their source | on recording cube, without intros either copy or mount the intros from their source | ||
| Line 184: | Line 245: | ||
| 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 | ||