{"id":382,"date":"2021-03-18T22:30:19","date_gmt":"2021-03-19T02:30:19","guid":{"rendered":"https:\/\/www.fitzsim.org\/blog\/?p=382"},"modified":"2021-03-18T22:32:59","modified_gmt":"2021-03-19T02:32:59","slug":"hosting-jitsi-on-ppc64le","status":"publish","type":"post","link":"https:\/\/www.fitzsim.org\/blog\/?p=382","title":{"rendered":"Hosting Jitsi on ppc64le"},"content":{"rendered":"<p>I recently tried self-hosting <a href=\"https:\/\/jitsi.org\/\">Jitsi<\/a> on Debian on the <a href=\"https:\/\/www.raptorcs.com\/TALOSII\/\">Talos II<\/a>.<\/p>\n<p>I had to apply some small workarounds for ppc64le, so I thought I&#8217;d post them here.<\/p>\n<p>The cause of the first issue, no audio or video in a call, was reported in the Jitsi Videobridge log, <tt>\/var\/log\/jitsi\/jvb.log<\/tt>:<\/p>\n<pre>\r\n[...]\r\nException in thread \"Smack-Single Threaded Executor 0 (0)\" java.lang.UnsatisfiedLinkError: \/tmp\/nativeutils5300293642203108\/libjnisctp.so: \/tmp\/nativeutils5300293642203108\/libjnisctp.so: cannot open shared object file: No such file or directory (Possible cause: can't load AMD 64-bit .so on a Power PC 64 LE-bit platform)\r\n[...]\r\n<\/pre>\n<p>To fix this, you have to build <tt>libjnisctp.so<\/tt> for ppc64le and substitute it for the x86-64 version of the library.  Unless this is fixed upstream, you&#8217;ll have to re-do the steps starting from <tt>wrapper=[...]<\/tt> if you upgrade the <tt>jitsi-videobridge2<\/tt> package.<\/p>\n<pre style=\"white-space: pre;\">\r\ngit clone https:\/\/github.com\/sctplab\/usrsctp.git\r\ngit clone https:\/\/github.com\/jitsi\/jitsi-sctp\r\ncd jitsi-sctp\/\r\ncp -R ..\/usrsctp usrsctp\/\r\nmvn package -DbuildSctp -DbuildNativeWrapper -DskipTests\r\nwrapper=\"$(dpkg -L jitsi-videobridge2|grep jniwrapper-native)\"\r\nsudo cp \"${wrapper}\" \"${wrapper}.bak\"\r\ncp \"${wrapper}\" .\/tohack.jar\r\nmkdir hacks\r\ncd hacks\r\njar xf ..\/tohack.jar\r\ncp ..\/jniwrapper\/native\/target\/libjnisctp-linux-ppc64le.so \\\r\n\tlib\/linux\/libjnisctp.so\r\njar cf hacked.jar *\r\nsudo cp hacked.jar \"${wrapper}\"\r\n<\/pre>\n<p>I also had to help along the installation of <tt>luajwtjitsi<\/tt>, a dependency of Prosody, which at first errored out with:<\/p>\n<pre>\r\nsudo luarocks install luaossl\r\nInstalling https:\/\/luarocks.org\/luaossl-20200709-0.src.rock\r\n\r\nError: Could not find library file for CRYPTO\r\n  No file libcrypto.a in \/usr\/lib\r\n  No file libcrypto.a in \/usr\/lib\/x86_64-linux-gnu\r\n  No file libcrypto.so in \/usr\/lib\r\n  No file libcrypto.so in \/usr\/lib\/x86_64-linux-gnu\r\n  No file matching libcrypto.so.* in \/usr\/lib\r\n  No file matching libcrypto.so.* in \/usr\/lib\/x86_64-linux-gnu\r\nYou may have to install CRYPTO in your system and\/or pass CRYPTO_DIR or CRYPTO_LIBDIR to the luarocks command.\r\nExample: luarocks install luaossl CRYPTO_DIR=\/usr\/local\r\n<\/pre>\n<p><tt>luarocks<\/tt> needs a hint as to the ppc64le library locations for <tt>luaossl<\/tt>, a dependency of <tt>luajwtjitsi<\/tt>.<\/p>\n<pre style=\"white-space: pre;\">\r\nsudo luarocks install luaossl \\\r\n\tCRYPTO_LIBDIR=\/usr\/lib\/powerpc64le-linux-gnu \\\r\n\tOPENSSL_LIBDIR=\/usr\/lib\/powerpc64le-linux-gnu\r\nsudo luarocks install luajwtjitsi\r\n<\/pre>\n<p>I&#8217;m impressed with Jitsi; its self-hosting documentation is straightforward, and once it is installed, the video bridge works smoothly.  I didn&#8217;t do detailed comparisons, but video call quality seems as good as any of the centrally-run services I&#8217;ve used.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I recently tried self-hosting Jitsi on Debian on the Talos II. I had to apply some small workarounds for ppc64le, so I thought I&#8217;d post them here. The cause of the first issue, no audio or video in a call, was reported in the Jitsi Videobridge log, \/var\/log\/jitsi\/jvb.log: [&#8230;] Exception in thread &#8220;Smack-Single Threaded Executor &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.fitzsim.org\/blog\/?p=382\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Hosting Jitsi on ppc64le&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-382","post","type-post","status-publish","format-standard","hentry","category-ppc64","entry"],"_links":{"self":[{"href":"https:\/\/www.fitzsim.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/382","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fitzsim.org\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fitzsim.org\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fitzsim.org\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fitzsim.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=382"}],"version-history":[{"count":22,"href":"https:\/\/www.fitzsim.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/382\/revisions"}],"predecessor-version":[{"id":404,"href":"https:\/\/www.fitzsim.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/382\/revisions\/404"}],"wp:attachment":[{"href":"https:\/\/www.fitzsim.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=382"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fitzsim.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=382"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fitzsim.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=382"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}