Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revisionBoth sides next revision
c3tracker:setup [2022/12/28 20:31] andic3tracker:setup [2024/10/19 16:50] – better document the "decentralised samba" setup stuebinm
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 ==== 
 + 
 + 
 +  Meta.Acronym                    camp2023 
 +  Meta.Album                      Chaos Communication Camp 2023 
 +  Meta.License                    Licensed to the public under http://creativecommons.org/licenses/by/4.0 
 +  Meta.Year                       2023 
 +   
 +  Processing.Auphonic.Enable      no 
 +  Processing.BasePath             /video/ 
 +  Processing.MasterMe.Enable      yes 
 +  Processing.Path.Intros          /video/intros/camp2023 
 +  Processing.Path.Outro           /video/intros/camp2023/outro.ts 
 +   
 +  Publishing.Upload.SkipSlaves    speedy,tweety,blade1,blade2,blade3,blade4 
 +  Publishing.UploadTarget         releasing.c3voc.de:/video/encoded/camp2023/ 
 +  Publishing.Tags                 <additional tags> 
 +  Publishing.Voctoweb.Enable      yes 
 +  Publishing.Voctoweb.Path        /cdn.media.ccc.de/events/camp2023 
 +  Publishing.Voctoweb.Slug        camp2023 
 +  Publishing.Voctoweb.Thumbpath   /static.media.ccc.de/conferences/camp2023 
 +  Publishing.YouTube.Category     27 
 +  Publishing.YouTube.Enable       yes 
 +  Publishing.YouTube.Playlists    <meep> 
 +  Publishing.YouTube.Privacy      <one of: public, unlisted, private> 
 +  Publishing.YouTube.Token        <meep> 
 +   
 +  Record.Container                TS 
 +  Record.EndPadding               300 
 +  Record.Slides                   yes 
 +  Record.StartPadding             300 
  
-``` 
-Project 
-Project.Slug eh19 
-Processing 
-Processing.Loudnorm.Enable yes 
-Processing.BasePath /video 
-Processing.Path.Intros /video/intros/eh19 
-Processing.Path.Outro /video/intros/eh19/outro.ts 
-Publishing 
-Publishing.Path /video/encoded/eh19 
-Publishing.Upload.SkipSlaves speedy,tweety,blade1,blade2,blade3,blade4 
-Publishing.UploadOptions -i /video/upload-key 
-Publishing.UploadTarget upload@releasing.c3voc.de:/video/encoded/eh19 
-Publishing.Voctoweb.Enable yes 
-Publishing.Voctoweb.Path /cdn.media.ccc.de/events/eh2019/ 
-Publishing.Voctoweb.Thumbpath /static.media.ccc.de/conferences/eh2019 
-Publishing.Voctoweb.Slug eh19 
-Publishing.Voctoweb.Tags easterhegg, Wien, c3w 
-Publishing.Voctoweb.Url https://media.ccc.de/v/ 
-Publishing.YouTube.Category 27 
-Publishing.YouTube.Enable yes 
-Publishing.YouTube.Privacy public 
-Publishing.YouTube.Tags easterhegg, Wien, bun intended, Chaos Computer Club Wien, c3w 
-Publishing.YouTube.TitlePrefix Easterhegg 2019 - 
-Publishing.YouTube.Token 1/XXXXXXXXXXXX 
-Publishing.Mastodon.Enable yes 
-Publishing.Twitter.Enable yes 
-Record 
-Record.Container TS 
-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 "project to worker group" filter are currently always evaluated with logical OR. 
 +
 +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 == Pipeline setup during event
  
Line 56: Line 57:
  
  
-=== Simple: decentralised classic (Variant 2)+=== Simple: single-room setup (Variant 2) 
 + 
 +{{drawio>c3tracker:setup-simple.png}} 
  
 This variant is only practical if you have only one room, or at least one release encoder (aka [[hardware:Minion]]) for each recording cube.  This variant is only practical if you have only one room, or at least one release encoder (aka [[hardware:Minion]]) for each recording cube. 
Line 73: Line 77:
  
 === centralised storage (rsync) (Variant 1) === centralised storage (rsync) (Variant 1)
 +
 +{{drawio>c3tracker:setup-central-storage.png}}
 +
  
 The first variant is typically used for events with more than one room. For bigger events we use the dedicated [[hardware:event-storage|storage]] server in the event server rack, for smaller events a USB connected hard drive to one of the minions might be sufficient. Each recording cube exposes the files via rsyncd, which are pulled by an rsync process running inside a screen on the storage pc. The first variant is typically used for events with more than one room. For bigger events we use the dedicated [[hardware:event-storage|storage]] server in the event server rack, for smaller events a USB connected hard drive to one of the minions might be sufficient. Each recording cube exposes the files via rsyncd, which are pulled by an rsync process running inside a screen on the storage pc.
Line 78: Line 85:
 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` (only needed if you don't use `storage.lan.c3voc.de` - worker scripts get started automatically)
  
 ==== Minion setup ==== Minion setup
Line 85: Line 92:
  
 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 94: Line 103:
 The rest is very similar to above, but with different mounts so `/video/capture` is not hidden: The rest is very similar to above, but with different mounts so `/video/capture` is not hidden:
  
-```bash + 
-sudo mount -t cifs -o uid=voc,password= //storage.lan.c3voc.de/fuse /video/fuse +  sudo mount -t cifs -o uid=voc,password= //storage.lan.c3voc.de/fuse /video/fuse 
-sudo mount -t cifs -o uid=voc,password= //storage.lan.c3voc.de/video/intros /video/intros +  sudo mount -t cifs -o uid=voc,password= //storage.lan.c3voc.de/video/intros /video/intros 
-sudo mount -t cifs -o uid=voc,password= //storage.lan.c3voc.de/tmp /video/tmp +  sudo mount -t cifs -o uid=voc,password= //storage.lan.c3voc.de/tmp /video/tmp 
-sudo mount -t cifs -o uid=voc,password= //storage.lan.c3voc.de/encoded /video/encoded +  sudo mount -t cifs -o uid=voc,password= //storage.lan.c3voc.de/encoded /video/encoded 
-```+
      
  
-=== decentralised pipeline (Variant 3)+=== decentralised pipeline aka "even more samba" (Variant 3) 
 + 
 +<panel type="danger" title="Attention">The "decentralized pipeline (Variant 3)" should not be used by inexperienced users. Use the information above to find out how to get this variant working, then adjust/improve the documentation here.</panel> 
 + 
 +Similar to variant 2, but extended to work with multiple rooms. Instead of using rsync, recorded snippets remain on the encoding cubes and ''/video/fuse/$event/$room'' are exposed via samba to the minions, while the encoded and tmp files live on one "central" minion; all other minions mount ''/video/encoded'' and ''/video/tmp'' from the primary minion [reasoning: the tracker cannot guarantee that the machine which encoded a talk also does the postprocessing (upload) step, so all minions have to see the same files]. 
 + 
 +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 ''EncodingProfile.IsMaster=yes'' filter can be a good idea, so sub formats won't crowd out the queues — they can always be encoded off-site later).
  
-<panel type="danger" title="Outdated">The "decentralized pipeline (Variant 3)" should not be used by inexperienced users. Use the information above to find out how to get this variant working, then adjust the documentation here.</panel>+On recording cubes: start the followin systemd units: 
 + * ''crs-recording-scheduler'' 
 + * ''crs-mount4cut'' 
 + * ''crs-cut-postprocessor''
  
-Similar to variant 2but the release encoder (minion) only mounts the /video/fuse/$room/ from each recording cube. The encoded and tmp files life on one minionthe secondary minions mount /video/encoded and /video/tmp from the primary minion. [Reason: It is not guaranteed that the minion which encoded a talk also does the postprocessing (upload) step.]+On all minionsincluding the one acting as storagedo
  
-You have to set the room filters only for the recording cubesthe minions can process talks independently.+  mkdir -p /video/fuse/$event/{$room1$room2, ..} 
 +  mount.cifs -o uid=voc,password= {//$encoder1.lan.c3voc.de,}/video/fuse/$event/$room1 
 +  mount.cifs -o uid=voc,password= {//$encoder2.lan.c3voc.de,}/video/fuse/$event/$room2 
 +  ...
  
-  * On recording cubes:   start systemd units for steps A ''crs-recording-scheduler''B ''crs-mount4cut'', and C ''crs-cut-postprocessor''         +On all minions except the one acting as storagealso mount:
-  * On release encoders start systemd units for steps D ''crs-encoding'', E ''crs-postencoding'', and F ''crs-postprocessing''+
  
 +  mount.cifs -o uid=voc,password= //$storage.lan.c3voc.de/encoded /video/encoded
 +  mount.cifs -o uid=voc,password= //$storage.lan.c3voc.de/tmp /video/tmp
 +  mount.cifs -o uid=voc,password= {//$storage.lan.c3voc.de,}/video/intros
  
 +Finally on all minions, including the one acting as storage, start the following systemd units:
 + * ''crs-encoding''
 + * ''crs-postencoding''
 + * ''crs-postprocessing''
  
-==== New example with case 1 and 5:+==== Old example with systemd units and case 1 and 5, which was used during jev22 in Munich:
  
 {{drawio>c3tracker:setup-variant-3.png}} {{drawio>c3tracker:setup-variant-3.png}}
Line 124: Line 151:
  
   sudo mount -t cifs -o password= {//storage.lan.c3voc.de,}/video/intros   sudo mount -t cifs -o password= {//storage.lan.c3voc.de,}/video/intros
-  sudo systemctl start +  sudo systemctl start crs-recording-scheduler  # A 
-  sudo systemctl start +  sudo systemctl start crs-mount4cut            # B 
-  sudo systemctl start+  sudo systemctl start crs-cut-postprocessor    # C 
 +   
 +  # check if everything is running as expected – you might have to disable/stop the other CRS workers D-F 
 +  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 /video/fuse/jev22/{Ahlam,Bhavani} 
-mount -t cifs -o password= {//encoder1.lan.c3voc.de,}/video/fuse/jev22/Ahlam  
-mount -t cifs -o password= {//encoder5.lan.c3voc.de,}/video/fuse/jev22/Bhavani 
-cd /opt/crs/tools/tracker3.0/ 
-sudo ./start screenrc-pipeline # with steps D, E, F 
  
-``` 
-//(ensure that samba is installed on this master minion aka storage)// 
  
 +  mkdir -p /video/fuse/jev22/{Ahlam,Bhavani}
 +  mount -t cifs -o password= {//encoder1.lan.c3voc.de,}/video/fuse/jev22/Ahlam 
 +  mount -t cifs -o password= {//encoder5.lan.c3voc.de,}/video/fuse/jev22/Bhavani
 +  
 +  sudo systemctl start crs-encoding             # D-encoding
 +  sudo systemctl start crs-postencoding         # E-postencoding-auphonic
 +  sudo systemctl start crs-postprocessing       # F-postprocessing-upload
 +  
 +  # check if everything is running as expected – you might have to disable/stop the other CRS workers A-C
 +  sudo systemctl status -n 0 crs-* 
  
-on other minions 
-``` 
-mkdir -p /video/fuse/jev22/{Ahlam,Bhavani} 
-mount -t cifs -o uid=voc,password= {//encoder1.lan.c3voc.de,}/video/fuse/jev22/Ahlam  
-mount -t cifs -o uid=voc,password= {//encoder5.lan.c3voc.de,}/video/fuse/jev22/Bhavani 
-mount -t cifs //storage.lan.c3voc.de/encoded /video/encoded 
-mount -t cifs -o password= //storage.lan.c3voc.de/encoded /video/encoded 
-mount -t cifs -o password= //storage.lan.c3voc.de/tmp /video/tmp 
-mount -t cifs -o password= {//storage.lan.c3voc.de,}/video/intros 
  
 +//(ensure that samba is installed on this master minion aka storage)//
  
  
-```   +on other minions 
 + 
 +  mkdir -p /video/fuse/jev22/{Ahlam,Bhavani} 
 +  mount -t cifs -o uid=voc,password= {//encoder1.lan.c3voc.de,}/video/fuse/jev22/Ahlam  
 +  mount -t cifs -o uid=voc,password= {//encoder5.lan.c3voc.de,}/video/fuse/jev22/Bhavani 
 +  mount -t cifs //storage.lan.c3voc.de/encoded /video/encoded 
 +  mount -t cifs -o password= //storage.lan.c3voc.de/encoded /video/encoded 
 +  mount -t cifs -o password= //storage.lan.c3voc.de/tmp /video/tmp 
 +  mount -t cifs -o password= {//storage.lan.c3voc.de,}/video/intros
        
        
  
-==== Old example with 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 166: Line 198:
  
 on master minion (in this example minion5) on master minion (in this example minion5)
-``` 
-mount -t cifs -o password= //encoder5.lan.c3voc.de/video/fuse/podstock2019/Aussenbuehne /video/fuse/podstock2019/Aussenbuehne 
-mount -t cifs -o password= //encoder6.lan.c3voc.de/video/fuse/podstock2019/Innenbuehne /video/fuse/podstock2019/Innenbuehne 
-mount -t cifs -o password= //encoder6.lan.c3voc.de/video/intros /video/intros 
-cd /opt/crs/tools/tracker3.0/ 
-sudo ./start screenrc-pipeline # with steps D, E, F 
  
-```+  mount -t cifs -o password= //encoder5.lan.c3voc.de/video/fuse/podstock2019/Aussenbuehne /video/fuse/podstock2019/Aussenbuehne 
 +  mount -t cifs -o password= //encoder6.lan.c3voc.de/video/fuse/podstock2019/Innenbuehne /video/fuse/podstock2019/Innenbuehne 
 +  mount -t cifs -o password= //encoder6.lan.c3voc.de/video/intros /video/intros 
 +  cd /opt/crs/tools/tracker3.0/ 
 +  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= {//encoder5.lan.c3voc.de,}/video/fuse/podstock2019/Aussenbuehne  
-mount -t cifs -o password= {//encoder6.lan.c3voc.de,}/video/fuse/podstock2019/Innenbuehne 
-mount -t cifs //storage.lan.c3voc.de/encoded /video/encoded 
-mount -t cifs -o password= //storage.lan.c3voc.de/encoded /video/encoded 
-mount -t cifs -o password= //storage.lan.c3voc.de/tmp /video/tmp 
-mount -t cifs -o password= {//storage.lan.c3voc.de,}/video/intros 
-cd /opt/crs/tools/tracker3.0/ 
-sudo ./start screenrc-encoding-only # only step E 
-``` 
  
 +  mount -t cifs -o password= {//encoder5.lan.c3voc.de,}/video/fuse/podstock2019/Aussenbuehne 
 +  mount -t cifs -o password= {//encoder6.lan.c3voc.de,}/video/fuse/podstock2019/Innenbuehne
 +  mount -t cifs //storage.lan.c3voc.de/encoded /video/encoded
 +  mount -t cifs -o password= //storage.lan.c3voc.de/encoded /video/encoded
 +  mount -t cifs -o password= //storage.lan.c3voc.de/tmp /video/tmp
 +  mount -t cifs -o password= {//storage.lan.c3voc.de,}/video/intros
 +  cd /opt/crs/tools/tracker3.0/
 +  sudo ./start screenrc-encoding-only # only step E
  • c3tracker/setup.txt
  • Last modified: 2024/11/04 13:34
  • by jtbx