{"id":11069,"date":"2020-04-18T17:58:53","date_gmt":"2020-04-18T15:58:53","guid":{"rendered":"https:\/\/funrecycler.com\/?p=11069"},"modified":"2021-12-02T18:27:07","modified_gmt":"2021-12-02T17:27:07","slug":"jitsi-aber-sicher","status":"publish","type":"post","link":"https:\/\/funrecycler.com\/index.php\/2020\/04\/18\/jitsi-aber-sicher\/","title":{"rendered":"jitsi &#8211; aber sicher!"},"content":{"rendered":"\n<p>jitsi ist ein OpenSource Videokonferenz System, welches recht einfach selber bereitgestellt werden kann. <br>Gerade in Zeiten, wo jeden Tag ein neuer Bericht \u00fcber die Zust\u00e4nde beim Platzhirsch zoom bekannt werden, sollte man sich auch Alternativen ansehen. Die public jitsi Server sind zwar eine sch\u00f6ne Sache, aber sind sie auch sicher? Wenn man weder Provider noch die Absichten des Admins kennt? Ein lokales mitschneiden aller Sessions ist durchaus machbar. Daher k\u00f6nnte man einen solchen Server f\u00fcr 50% des Geldes eines Pro Accounts bei zoom.us in Betracht ziehen. <br>Grundlage ist gerade ein Hetzner CPX11 mit 2VCPUS 2GB RAM  f\u00fcr 4,15\u20ac \/ Monat. <br><br>Frisch eingerichtet und den ssh key hinterlegt kann es schon losgehen. Eine Domain sollte mittels A-Record schon auf die IP des Servers zeigen. Wenn die noch nicht existiert, k\u00f6nnte man das bei hosting.de recht preiswert erledigen.  <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/funrecycler.com\/wp-content\/uploads\/2020\/04\/hetzner_jitsi.png\" alt=\"\" class=\"wp-image-11070\"\/><\/figure>\n\n\n\n<p><strong>Jitsi installieren <\/strong><\/p>\n\n\n\n<p>Als erstes wird das Repository in die Instanz hinzugef\u00fcgt.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>echo 'deb https:\/\/download.jitsi.org stable\/' &gt;&gt; \/etc\/apt\/sources.list.d\/jitsi-stable.list\n<\/code><\/pre>\n\n\n\n<p>Fehlen sollte auch nicht der Schl\u00fcsselcheck.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>wget -qO -  https:\/\/download.jitsi.org\/jitsi-key.gpg.key | sudo apt-key add -\n<\/code><\/pre>\n\n\n\n<p>Quellen auf Stand bringen. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apt-get update <\/code><\/pre>\n\n\n\n<p>Nun kann man die Komponenten von Jitsi installieren. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apt -y install jitsi-meet\n<\/code><\/pre>\n\n\n\n<p>Es folgt die Frage nach der Domain. Das haben wir ja schon vorher vorbereitet und muss nun eingetragen werden. Hier bitte aufpassen, da diese Domain in etlichen config Files eingetragen wird. Das zu \u00e4ndern w\u00e4re echter Aufwand.  Beispiel:    <strong>jitsi.domain.de<\/strong><br>Beim Zertifikat bitte ein<strong> selbst-signiertes SSL-Zertifikat<\/strong> ausw\u00e4hlen. <\/p>\n\n\n\n<p><strong>Letsencrypt<\/strong><br>HTTPS w\u00e4re nat\u00fcrlich sch\u00f6ner ohne Fehlermeldung des Browsers. Dazu erstellen wir ein letsencrypt Zertifikat und binden es in den Webserver ein. Und das geht sogar vollautomatisiert. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/usr\/share\/jitsi-meet\/scripts\/install-letsencrypt-cert.sh\n<\/code><\/pre>\n\n\n\n<p>Im Browser kann man nun unter seiner URL den ersten Connect durchf\u00fchren.  <strong>https:\/\/jitsi.domain.de<\/strong><\/p>\n\n\n\n<p><strong>Etwas mehr Privacy bitte.<\/strong><\/p>\n\n\n\n<p>Nun ist jeder mit der URL in der Lage, seinen eigenen Raum zu \u00f6ffnen und Leute einzuladen. Kann man machen, aber manchmal ist es besser den Raum per Operator zu erstellen und dann die Nutzer joinen zu lassen. Gerade wenn man die Bandbreite braucht, ist dies ratsam. <\/p>\n\n\n\n<p>Bevor wir das aber angehen, sollte man die Firewall auf dem Server noch etwas zuschn\u00fcren. <strong>UFW<\/strong> kann das f\u00fcr uns gleich \u00fcbernehmen <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ufw allow ssh\nufw allow http\nufw allow https\nufw allow 10000\/udp\nufw enable<\/code><\/pre>\n\n\n\n<p><strong>Edit<\/strong>: <strong>Auth Neu: 2021<\/strong><\/p>\n\n\n\n<p>Standardm\u00e4\u00dfig kann jeder zu Ihrer Jitsi Meet-Instanz gehen, einen Raum erstellen und eine Besprechung starten. Bearbeiten Sie die Prosody-Konfigurationsdatei, um die Benutzerauthentifizierung einzurichten.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nano \/etc\/prosody\/conf.d\/meet.example.com.cfg.lua<\/code><\/pre>\n\n\n\n<p>folgende Zeile.<\/p>\n\n\n\n<p><strong>authentication = &#8222;anonymous&#8220; <\/strong>in <strong>authentication = &#8222;internal_plain&#8220; <\/strong>anpassen<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>Wir m\u00f6chten jedoch nicht, dass die Teilnehmer bei der Teilnahme an der Konferenz Benutzername und Passwort eingeben. Daher m\u00fcssen wir ein anonymes Login f\u00fcr G\u00e4ste erstellen, indem wir die folgenden Zeilen am Ende dieser Datei hinzuf\u00fcgen. Beachten Sie, dass Sie keinen DNS A-Eintrag f\u00fcr erstellen m\u00fcssen guest.meet.example.com.<\/p>\n\n\n\n<p>Damit G\u00e4ste keine Daten eingeben m\u00fcssen, wollen wir das erlauben. Dazu den Block ans Ende kopieren und die URL anpassen <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>VirtualHost \"guest.meet.example.com\"\n    authentication = \"anonymous\"\n    c2s_require_encryption = false<\/code><\/pre>\n\n\n\n<p>Speichern und schlie\u00dfen.<\/p>\n\n\n\n<p>Jitsi Meet-Konfigurationsdatei.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nano \/etc\/jitsi\/meet\/meet.example.com-config.js<\/code><\/pre>\n\n\n\n<p><strong>\/\/ anonymousdomain: &#8218;guest.example.com&#8216;,<\/strong><\/p>\n\n\n\n<p><br>Entferne den doppelten Schr\u00e4gstriche und \u00e4ndern Sie die Gastdom\u00e4ne. Ersetze meet.example.com durch  Jitsi Meet-Hostnamen.<\/p>\n\n\n\n<p><strong>anonymousdomain: &#8218;guest.meet.example.com&#8216;,<\/strong><br>Speichern und schlie\u00dfen<\/p>\n\n\n\n<p>Bearbeiten Sie dann die Jicofo-Konfigurationsdatei. Erstellen wenn sie noch nicht existiert. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nano \/etc\/jitsi\/jicofo\/sip-communicator.properties<\/code><\/pre>\n\n\n\n<p><br>Einf\u00fcgen am  Ende dieser Datei <\/p>\n\n\n\n<p><strong>org.jitsi.jicofo.auth.URL=XMPP:meet.example.com<\/strong><br>Speichern und schlie\u00dfen  <\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>Neustart aller Dienste<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl restart jitsi-videobridge2 prosody jicofo<\/code><\/pre>\n\n\n\n<p><br><strong>Benutzer anlegen.<\/strong><br>Damit R\u00e4ume angelegt werden k\u00f6nnen, bedarf es noch eines lokalen Benutzers.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo prosodyctl register username meet.example.com<\/code><\/pre>\n\n\n\n<p>History der R\u00e4ume entfernen? <\/p>\n\n\n\n<p>nano \/usr\/share\/jitsi-meet\/interface_config.js<\/p>\n\n\n<p>RECENT_LIST_ENABLED to false<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>Um sp\u00e4ter zu schauen welche Accounts gerade existieren. \/var\/lib\/prosody\/domainnamen\/accounts<br>Dort finden man ein File pro Benutzer mit Kennwort. <\/p>\n\n\n\n<p><strong>Neustart <\/strong><br>Alles geklappt? Dann Neustart der Dienste. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>service jicofo restart\nservice jitsi-videobridge2 restart\nservice prosody restart<\/code><\/pre>\n\n\n\n<p>Nun kann man sich \u00fcber die URL im Browser mit dem lokalen Nutzer authentifizieren und dann den Wunschraum erstellen. Dann den Link an die Nutzer verteilen und ausprobieren. <\/p>\n\n\n\n<p>Kleiner Tipp: Bei Hetzner kann man im Webfrontend auch sch\u00f6n die aktuelle Auslastung der Instanz monitoren. Sollte es dann Ressourcenengp\u00e4sse geben, sind diese sofort zu sehen. <\/p>\n\n\n\n<p>Neustart als ein Befehl <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl restart jitsi-videobridge2 prosody jicofo<\/code><\/pre>\n\n\n\n<p>Wenn man mal alles l\u00f6schen will (purge)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt purge jigasi jitsi-meet jitsi-meet-web-config jitsi-meet-prosody jitsi-meet-turnserver jitsi-meet-web jicofo jitsi-videobridge2\n<\/code><\/pre>\n\n\n\n<p><br><\/p>\n","protected":false},"excerpt":{"rendered":"<p>jitsi ist ein OpenSource Videokonferenz System, welches recht einfach selber bereitgestellt werden kann. Gerade in Zeiten, wo jeden<\/p>\n","protected":false},"author":1,"featured_media":11072,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,3,27,9],"tags":[796,879,1274,1298,1436,1941,2348,3122],"class_list":["post-11069","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-allgemein","category-computer-und-technik","category-kniffe-und-tricks","category-linux-computer-und-technik","tag-docker","tag-eigener","tag-hetzner","tag-hosting","tag-jitsi","tag-opensource","tag-server","tag-zoom"],"_links":{"self":[{"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/posts\/11069","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/comments?post=11069"}],"version-history":[{"count":8,"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/posts\/11069\/revisions"}],"predecessor-version":[{"id":11122,"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/posts\/11069\/revisions\/11122"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/"}],"wp:attachment":[{"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/media?parent=11069"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/categories?post=11069"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/tags?post=11069"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}