Setting up Jitsi, Letsencrypt cert, and desktop sharing

Ok..Jitsi initial install is easy. Working out letsencrypt is soso documented but also easy, working out how to get desktop sharing working is barely documented.

Installing Jitsi-meet

Basically…do this to get Jitsi working:

https://github.com/jitsi/jitsi-meet/blob/master/doc/quick-install.md

It works as advertised for Ubuntu. Except, don’t use the stable sources. We couldn’t get them to work with conferences – we could only get 1 person in a meeting which…er…isn’t a meeting! So, instead use the unstable sources, which means don’t use this:

echo 'deb https://download.jitsi.org stable/' >> /etc/apt/sources.list.d/jitsi-stable.list

Use this:

echo 'deb https://download.jitsi.org unstable/' >> /etc/apt/sources.list.d/jitsi-unstable.list

Then follow the rest of the docs.

Not mentioned in the rest of the docs is this….you need to set up several sub-domains, namely:

conference.[your jitsi domain]
auth.[your jitsi domain]
focus.[your jitsi domain]
jitsi-videobridge.[your jitsi domain]

Make sure that if your Jitsi-meet is already using a subdomain (eg. jitsi.mydomain.com) that you add the above subdomains on top of that eg conference.jitsi.mydomain.com not conference.jitsi.com

Now…you need to change a few things. Open the file located at /etc/prosody/conf.d/jitsi.coko.foundation.cfg.lua, it should look something like this:

Component "jitsi-videobridge.jitsi.coko.foundation" 
    component_secret = "sjhfss09" 

VirtualHost "auth.jitsi.coko.foundation" 
    authentication = "internal_plain" 

Component "focus.jitsi.coko.foundation" 
    component_secret = "Hjusk78is"

Change both secrets to a random string of the same length. The copy the first one to this file /etc/jitsi/videobridge/config where and uncomment the secret, eg:

# sets the shared secret used to authenticate to the XMPP server 
#JVB_SECRET=e355kYFm 
JVB_SECRET=sjhfss09

Do the same for the second secret by adding it to this file /etc/jitsi/jicofo/config, eg:

# sets the secret used to authenticate as an XMPP component 
#JICOFO_SECRET=Ifc7gffV 
JICOFO_SECRET=Hjusk78is

Thanks to Juan Gutierrez for working out the above changes to the files.

Letsencrypt

Also easy except it doesn’t say anywhere how to do it. There is a nice script for it which is already present but you need to find it. On Ubuntu you can find it in /usr/share/jitsi-meet/scripts/

So to get it running do this (as root or using sudo):

cd /usr/share/jitsi-meet/scripts/
./install-letsencrypt-cert.sh

The script should just ask you for a valid email address. Follow the instructions and it ‘just works’. You*may* need to restart jitsi to do that try this:

/etc/init.d/jitsi-videobridge start

Then navigate to your domain prefixed by https and it should work.

Desktop Sharing

Ha..just when you thought it was so, so, easy! Its actually pretty easy but its not well documented. Essentially you have to install an extension in your browser that allows desktop sharing permissions. However this is domain specific so you have to download the extension and configure it, then compile it and then load it into your extensions. This is true for Firefox and Chrome/Chromium. I haven’t tried for Firefox but the following works for Chrom(e)ium.

Visit this page – https://github.com/jitsi/jidesha – and clone the repo or download it as a zip.

Next, with your fav text editor open the file in the ‘chrome’ directory called manifest.json, it looks like this:

{
 "manifest_version": 2,
 "name": "Jitsi Desktop Streamer",
 "description": "A simple extension that allows you to stream your desktop into meetings with Jitsi Meet and Jitsi Videobridge.",
 "version": "0.1.6",
 "minimum_chrome_version": "34",
 "icons": {
 "16": "jitsi-logo-16x16.png",
 "48": "jitsi-logo-48x48.png",
 "128": "jitsi-logo-128x128.png"
 },
 "background": {
 "scripts": [ "background.js" ],
 "persistent": true
 },
 "permissions": [
 "desktopCapture"
 ],
 "externally_connectable": {
 "matches": [
 "*://meet.jit.si/*"
 ]
 }
}

You want to edit the last line:

 "*://meet.jit.si/*"

to reflect the domain of your jitsi install eg

 "*://jitsi.myserver.org/*"

or whatever…don’t put in http or https or anything, just replace the domain information.

Now, you need to compile that extension. Follow these steps:

  1. If you open up your chrome browser go to (in the location bar) chrome://extensions
  2. check the box ‘developer mode’ if it is not already checked
  3. you will see a button ‘pack extension’ appear at the top, click this
  4. click the button next to ‘extension root directory’
  5. browser to and select he ‘chrome’ directory where you have that manifest.json file
  6. click ‘open’
  7. click ‘pack extension’

A new file ‘chrome.crx’ will appear.

Now you need to load that into your extensions, to do that you need to drag the chrome.crx file to the extensions page open in your browser. It will then just appear, by default it is enabled.

Now…you are almost there…you now have to go to your server and make a few changes. These all happen in one file, the jitsi meet config file. Open the file ‘/etc/jitsi/meet/jitsi.coko.foundation-config.js’ with your fav text editor.

You need to change these lines:

  // The ID of the jidesha extension for Chrome.
 desktopSharingChromeExtId: 'put your Chrome extension ID here',
 // Whether desktop sharing should be disabled on Chrome.
 desktopSharingChromeDisabled: false,
 // The media sources to use when using screen sharing with the Chrome
 // extension.

By default there will be no chrome extension ID and sharing is default turned off. Make sure desktopSharingChromeDisabled is set to false, and put your chrome extension ID in between single quotes after desktopSharingChromeExtId.

But…I hear you say….what is my chrome extension ID? good question…to get this, go back to your browser and in the chrome://extensions you will see an id listed next to your jitsi-meeting extension. It will be a long string of numbers and letters next to the simple text ‘ID:’

Copy and paste that into the config between single quotes, no spaces and exclude the ‘ID:’ bit. Save and exit the config file. You shouldn’t have to restart Jitsi but if you feel like playing it safe restart as per above.

Navigate to your jitsi meeting and it should work under https, show the desktop sharing icon, and enable desktop sharing! Good luck! I’ll be testing out our install in the next weeks and will post here. Oh…if you wish to replace the default jitsi watermark on the top right then replace the file /usr/share/jitsi-meet/images/watermark.png with a transparent png.

screenshot-from-2017-08-22-16-25-20

(if anyone would like to walk em through how to do the same for firefox I’d be grateful and I will also publish that info here. Also, when I work out how to add the chrome extension for our install to the chrome shop I will publish that here as well).

If you found this post useful, repay it by taking the time to document a tricky issue you worked through so others can benefit from what you learned! (I’m forever grateful for the amazing stuff I’ve found online in some random blog somewhere that have helped me out of seemingly unique tech gotchas!).

Self hosted open source video conferencing

I have tried various open source video conferencing apps. Actually, as it happens my first introduction to open source was through streaming back in the day. Since WebRTC came on the scene I have been excited by the possibility of open source web based video conferencing. However the promise seemed to take a while to deliver. I tried many products, the most sophisticated and promising being, for a while, BigBlueButton. But BBB, and other softwares, just seemed so clunky and hard to install, ugly UI etc. We installed and ran BBB for Coko but no one really wants to use it and we had bandwidth issues etc. Sorry to say it, but open source has been lagging behind the closed source world with regard to video conferencing.

I have been keeping my eye on Jitsi for some time. It looks pretty good. But I was caught up with my legacy understanding of such systems and it took a while, also, for Jitsi to evolve. I tried out their demo for a few meetings but it had some lag issues. Of course, trying out a demo ‘for reals’ is a bit dumb and I should not have expected anything like you want in a real world production environment. But…I was a little deterred. I also assumed it would be hard to install.

Finally, this weekend I thought I would give it a go…so I started up a digitalocean droplet (a server) – which costs $20 a month and took about 2 mins to get going. I then followed these instructions – https://github.com/jitsi/jitsi-meet/blob/master/doc/quick-install.md. I had a Ubuntu install at digitalocean so followed those steps. But I expected complications…the install mentions it relies on jitsei-videobridge and I thought…i bet this doesn’t work…i’ll have to install some mad java app or something…What do you know…within 5 mins I had a working version of Jitsi-meet! amazing! The process worked as described, basically 3 commands and it was running.

If it works for Coko it is also very interesting because Jitsi on the front end is all JavaScript and there seem to be some react components…which means we could integrate into xpub/editoria (publishing systems) etc…

We will try it out in the next weeks. Expect more info soon!

What I’m listening to now…

Currently listening to Hearing Music by Joanna Brouk. Super crazy beautiful. Sparse, drifting tones – synth, flute, piano, field recordings. She is an American composer that died earlier this year. Hearing Music was released in 2016 as a compilation of some of her works previously released on cassette tape. Just amazing.

825764106931_t27128391130054

Also listening to Tower of Silence by Roberto Musci.

download

Also a compilation of hard to find earlier releases. Sometimes cacophonous. but mostly eerie and soothing at the same time. A mix of field recordings and almost every instrument you can think of from water drums to french horn and synth. Also fantastic.

Yep, its a brief brief

Following up an earlier post I made about the Collabra journal brief, here is the updated version with mocks.

ya-01
ya-02
ya-03
ya-04
ya-05
ya-06
ya-07
ya-08
ya-09
ya-10
ya-11
ya-12
ya-13
ya-14
ya-15
ya-16

Mocks by the talented Julien Taquet. You can follow xpub development here https://gitlab.coko.foundation/xpub/xpub and Design Briefs and issues are all contained here https://gitlab.coko.foundation/xpub/xpub/issues.

If you want to learn more about xpub or wish to be part of the xpub effort then join us in the Coko chat!

We are working on the above brief, but the second brief is already posted to the repo above.

Working on xpub

Much is going on in the Coko world at the moment and a lot of news coming out soon about various collaborations. Much of the attention has been around xpub, the journal system we have been working on built on top of PubSweet.

PubSweet is, of course, a component based system so you can ‘roll your own’ journal or book platform from existing components. We are making a lot of components for both Editoria and xpub and publishing them for reuse with an open source (MIT) license.

Some of the components we are generating for xpub are coming out of the work we are doing with Collabra, the UCP Psychology Journal. Today the Managing Editor, Dan Morgan, and I met for another session working out the logic of the components and how they fit together.

dan2

We started by working through the flow from the perspectives of each of the major stakeholders – Managing Editor, Senior Editor, Handling Editor, Author, Reviewer. We worked out what they each needed to see on the dashboard and then went through their workflow and what they needed from each component.

List of what each actor sees on their dashboard
List of what each actor sees on their dashboard
Mapping out the flow across components.
Mapping out the flow across components.
Sketches of components
Sketches of components

We then took each of these small mappings and transferred them to larger pieces of paper. Drawing the interfaces in basic form.

Drawing out the components in detail
Drawing out the components in detail

Each of the diagrams are detailed below.

dash

sub

managereview

review

decision

We had already worked out this structure, today was about running through the logic from each actors point of view. Good news is, the logic held up and validated the architecture. Good news! So, what you see in these pics is more or less what we will build. It is a thin horizontal slice that covers the complete lifecycle of a manuscript going through the Collabra process. We’ll build it and test it, and then layer on additional functionality.

Next I’ll recreate these in digital graphics and add a page of bullet points for explanation. We will then meet with the Coko team and talk it through and start building! Its a good way to design systems, way better than endless months gathering pages and pages of product requirements. It is a lightweight and fun process. Software is a conversation afterall!