{"id":1919,"date":"2020-07-30T17:10:42","date_gmt":"2020-07-30T15:10:42","guid":{"rendered":"https:\/\/markus-blog.de\/?p=1919"},"modified":"2023-04-03T08:43:58","modified_gmt":"2023-04-03T06:43:58","slug":"how-to-install-nextcloud-talk-high-performance-backend-with-stun-turnserver-on-ubuntu","status":"publish","type":"post","link":"https:\/\/markus-blog.de\/index.php\/2020\/07\/30\/how-to-install-nextcloud-talk-high-performance-backend-with-stun-turnserver-on-ubuntu\/","title":{"rendered":"How to Install Nextcloud Talk High Performance Backend with Stun\/Turnserver on Ubuntu"},"content":{"rendered":"<p><em><span style=\"color: #3366ff;\">Picture from <a style=\"color: #3366ff;\" href=\"https:\/\/pixabay.com\/de\/users\/Alexandra_Koch-621802\/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=5314869\">Alexandra_Koch<\/a> on <a style=\"color: #3366ff;\" href=\"https:\/\/pixabay.com\/de\/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=5314869\">Pixabay<\/a><\/span><\/em><\/p>\n<blockquote><p>Changes 18.11.2020:<br \/>\n&#8211; Adjust server.conf because typo has changed<br \/>\n&#8211; Adjust signaling.service and janus.service because they does not start after reboot<br \/>\nChanges 22.11.2020:<br \/>\n&#8211; Adjust janus.jcfg<br \/>\n&#8211; change repositoty of janus\n<\/p><\/blockquote>\n<p>Since Nextcloud has released the <a href=\"https:\/\/www.heise.de\/ix\/meldung\/Nextcloud-stellt-High-Performance-Back-End-unter-Open-Source-Lizenz-4727074.html\" target=\"_blank\" rel=\"noopener nofollow noreferrer\">High Performance Backend as OpenSource under AGPL License<\/a>, i tried my luck to install it on Ubuntu.<\/p>\n<p>Now I want to share how to do it.<\/p>\n<p><strong>Requirements:<\/strong><\/p>\n<p>&#8211; a VPS with Ubuntu 18.04 or 20.04 LTS minimal Image installed (you can get one here <a href=\"https:\/\/www.netcup.de\/bestellen\/gutschein_einloesen.php?gutschein=36nc15825556910&amp;ref=113290\" target=\"_blank\" rel=\"noopener nofollow sponsored noreferrer\">@netcup<\/a> with 5\u20ac Discount or start at <a href=\"https:\/\/hetzner.cloud\/?ref=O4DNPT7KH7kS\" target=\"_blank\" rel=\"noopener nofollow sponsored noreferrer\">Hetzner Cloud<\/a> with 20\u20ac start credits)<br \/>\n&#8211; shell access and appropriate rights<br \/>\n&#8211; One DNS A and possibly AAAA record for our nginx vhost and stun\/turn-server (I use signaling.example.com for all three services in this guide)<br \/>\n&#8211; Optional &#8211; a second DNS A and possibly AAAA record for stun\/turnserver<\/p>\n<p><strong>Hardware Requirements:<\/strong><\/p>\n<p>4 CPU<br \/>\n8 GB RAM<br \/>\n32 GB Disk-Space<\/p>\n<p>See also: <a href=\"https:\/\/portal.nextcloud.com\/article\/nextcloud-talk-high-performance-back-end-requirements-46.html\" target=\"_blank\" rel=\"noopener nofollow sponsored noreferrer\">Nextcloud Portal<\/a><\/p>\n<p>You can also test a smaller server if you don&#8217;t have that many users<\/p>\n<h3><strong>Step 1: Install Firewall and other packages<\/strong><\/h3>\n<p>First of all, you should install a firewall to secure your VPS (if not installed) and allow incoming traffic to port 80\/443 and 22 (ssh) only. For Securing ssh-access you can use fail2ban and passwordless authentication. Many guides for this are out there.<\/p>\n<pre>apt install ufw -y\r\nufw allow http\r\nufw allow https\r\nufw allow ssh\r\nufw allow 5349\/tcp\r\nufw allow 5349\/udp\r\nufw enable<\/pre>\n<p>Accept with &#8222;y&#8220;<\/p>\n<h3><strong>Step 2: Install and config stun\/turnserver<\/strong><\/h3>\n<p>you have to install the package coturn:<\/p>\n<pre>apt install coturn<\/pre>\n<p>enable daemonizing for your turnserver:<\/p>\n<pre>sed -i '\/TURNSERVER_ENABLED\/c\\TURNSERVER_ENABLED=1' \/etc\/default\/coturn<\/pre>\n<p>create a random hex key for your nextcloud talk app and signaling server with:<\/p>\n<pre>openssl rand -hex 32<\/pre>\n<p>and copy it for later use, then edit \/etc\/turnserver.conf:<\/p>\n<pre>mv \/etc\/turnserver.conf \/etc\/turnserver.conf.bak &amp;&amp; nano \/etc\/turnserver.conf<\/pre>\n<p>copy, paste and adjust the following code:<\/p>\n<pre>listening-port=5349\r\nfingerprint\r\nlt-cred-mech\r\nuse-auth-secret\r\nstatic-auth-secret=output_of_openssl rand -hex 32\r\nrealm=signaling.example.com\r\ntotal-quota=100\r\nbps-capacity=0\r\nstale-nonce\r\nno-loopback-peers\r\nno-multicast-peers<\/pre>\n<p>and last, restart and enable coturn:<\/p>\n<pre>systemctl restart coturn &amp;&amp; systemctl enable coturn<\/pre>\n<h3><strong>Step 3: Install and config janus<\/strong><\/h3>\n<p>You have to add janus Repository of morph027<\/p>\n<p><strong>Ubuntu 18.04 and 20.04<\/strong><br \/>\nadd repo key:<\/p>\n<pre>curl -sL -o \/etc\/apt\/trusted.gpg.d\/morph027-janus.asc https:\/\/packaging.gitlab.io\/janus\/gpg.key<\/pre>\n<p>add repo:<\/p>\n<pre>. \/etc\/lsb-release; echo \"deb [arch=amd64] https:\/\/packaging.gitlab.io\/janus\/$DISTRIB_CODENAME $DISTRIB_CODENAME main\" | tee \/etc\/apt\/sources.list.d\/morph027-janus.list\r\napt update<\/pre>\n<pre>apt install janus<\/pre>\n<p>Now generate a random api key for turnserver:<\/p>\n<pre>openssl rand -base64 16<\/pre>\n<p>and copy the output for later use.<\/p>\n<p>Edit <code>\/etc\/janus\/janus.jcfg<\/code><\/p>\n<pre>nano \/etc\/janus\/janus.jcfg<\/pre>\n<p>go to section <code>nat<\/code> and enter your <code>stunserver<\/code> and <code>port<\/code>, uncomment <code>full_trickle = true<\/code>, <code>turn_server<\/code> with <code>port<\/code> and <code>type<\/code> and the generated <code>api key<\/code>:<\/p>\n<p>you can copy, paste and adjust the following:<\/p>\n<pre>stun_server = \"127.0.0.1\"\r\nstun_port = 5349\r\nfull_trickle = true\r\nturn_server = \"127.0.0.1\"\r\nturn_port = 5349\r\nturn_type = \"udp\"\r\nturn_rest_api_key = \"openssl rand -base64 16\"\r\n<\/pre>\n<p>then comment the following lines:<\/p>\n<blockquote><p>certificates: {<br \/>\n# cert_pem = &#8222;\/etc\/ssl\/certs\/ssl-cert-snakeoil.pem&#8220;<br \/>\n# cert_key = &#8222;\/etc\/ssl\/private\/ssl-cert-snakeoil.key&#8220;<br \/>\n#cert_pwd = &#8222;secretpassphrase&#8220;<br \/>\n}<\/p><\/blockquote>\n<p>adjust janus.service, so that it will start after coturn.service:<\/p>\n<pre>nano \/lib\/systemd\/system\/janus.service<\/pre>\n<p>adjust under Unit-Section:<\/p>\n<pre>[Unit]\r\nDescription=Janus WebRTC gateway\r\nAfter=coturn.service\r\nDocumentation=https:\/\/janus.conf.meetecho.com\/docs\/index.html<\/pre>\n<p>save, enable and restart <code>janus<\/code>:<\/p>\n<pre>systemctl daemon-reload &amp;&amp; systemctl restart janus &amp;&amp; systemctl enable janus<\/pre>\n<h3><strong>Step 4: Running or Install NATS Server<\/strong><\/h3>\n<p>If your VPS support docker, then you can use docker to run <code>NATS Server<\/code>:<\/p>\n<p>Install docker if not installed:<\/p>\n<pre>curl -sSL https:\/\/get.docker.com\/ | CHANNEL=stable sh\r\nsystemctl enable docker.service\r\nsystemctl start docker.service<\/pre>\n<p>then run <code>NATS Server<\/code>:<\/p>\n<pre>docker run --restart=always --name=NATSSERVER -d -p 4222:4222 -ti --restart=always nats:latest<\/pre>\n<p>when you want to run <code>NATS Server<\/code> without docker, there is another <a href=\"https:\/\/gitlab.com\/packaging\/nats-server\" target=\"_blank\" rel=\"noopener nofollow noreferrer\">Repository<\/a> of morph27.<\/p>\n<p>you have to add its key and its repo:<\/p>\n<pre>curl -sL -o \/etc\/apt\/trusted.gpg.d\/morph027-nats-server.asc https:\/\/packaging.gitlab.io\/nats-server\/gpg.key\r\necho \"deb [arch=amd64] https:\/\/packaging.gitlab.io\/nats-server nats main\" | tee \/etc\/apt\/sources.list.d\/morph027-nats-server.list<\/pre>\n<p>install <code>NATS Server<\/code>:<\/p>\n<pre>apt update\r\napt install nats-server<\/pre>\n<p>generate config under \/etc\/nats\/nats.conf<\/p>\n<pre>install -d -o nats -g nats \/etc\/nats\r\nsudo -u nats echo \"listen: 127.0.0.1:4222\" &gt; \/etc\/nats\/nats.conf<\/pre>\n<p>start and enable NATS-Server:<\/p>\n<pre>systemctl start nats-server &amp;&amp; systemctl enable nats-server<\/pre>\n<h3><strong>Step 5: Install nextcloud-spreed-signaling Server<\/strong><\/h3>\n<p>now we can install the <code>nextcloud-spreed-signaling<\/code> server, first of all, we have to install the packages we need to built:<\/p>\n<pre>apt install git automake golang build-essential python3 -y<\/pre>\n<p>then we clone the git repository and start the build process:<\/p>\n<pre>cd \/opt\r\ngit clone https:\/\/github.com\/strukturag\/nextcloud-spreed-signaling.git\r\ncd nextcloud-spreed-signaling\/\r\nmake build<\/pre>\n<p>then copy the binary to <code>\/usr\/bin<\/code><\/p>\n<pre>cp bin\/signaling \/usr\/bin\/<\/pre>\n<p>now create a dedicated user:<\/p>\n<pre>useradd --system --shell \/usr\/sbin\/nologin --comment \"Standalone signaling server for Nextcloud Talk.\" signaling<\/pre>\n<p>create the <code>server.conf<\/code> in <code>\/etc\/signaling\/<\/code><\/p>\n<pre>mkdir \/etc\/signaling\/\r\ntouch \/etc\/signaling\/server.conf\r\nchown signaling: \/etc\/signaling\/server.conf\r\nchmod 600 \/etc\/signaling\/server.conf<\/pre>\n<p>and copy the systemd file:<\/p>\n<pre>cp dist\/init\/systemd\/signaling.service \/etc\/systemd\/system\/signaling.service<\/pre>\n<p>and adjust, so that signaling.service start after janus.service:<\/p>\n<pre>nano \/etc\/systemd\/system\/signaling.service<\/pre>\n<p>and change under Unit-Section:<\/p>\n<pre>[Unit]\r\nDescription=Nextcloud Talk signaling server\r\nAfter=janus.service<\/pre>\n<p>save and then:<\/p>\n<pre>systemctl daemon-reload\r\nsystemctl enable signaling<\/pre>\n<p>create keys for config:<\/p>\n<p><code>Nextcloud Secret Key<\/code><\/p>\n<pre>openssl rand -hex 16<\/pre>\n<p><code>Block-Key<\/code><\/p>\n<pre>openssl rand -hex 16<\/pre>\n<p><code>Hash-Key<\/code><\/p>\n<pre>openssl rand -hex 16<\/pre>\n<p>Now we have five keys at all, as example (do not use these keys)<\/p>\n<p><strong>Turn-Key from Step 2:<\/strong> <code>2309a206fc4de0f511ce9da52c088171f69193d1f701323d5ab4f733c9853445<\/code><br \/>\n<strong>api-key from Step 3:<\/strong> <code>Z6ZkKhjwCFa6RMpFU854Fw==<\/code><br \/>\n<strong>Nextcloud-Secret-Key:<\/strong> <code>692cdc99256135bcb7849ca1886e2ed6<\/code><br \/>\n<strong>Block-Key:<\/strong> <code>f702adbf248ab0e752fa76cb46bcba12<\/code><br \/>\n<strong>Hash-Key:<\/strong> <code>db61d5a8c6bd2b47a3cb0abce3545040<\/code><\/p>\n<p>open \/etc\/signaling\/server.conf with your editor<\/p>\n<pre>nano \/etc\/signaling\/server.conf<\/pre>\n<p>then copy, paste and adjust (change keys to yours) the following config<\/p>\n<pre>[http]\r\nlisten = 127.0.0.1:8080\r\n[app]\r\ndebug = false\r\n\r\n[sessions]\r\nhashkey = db61d5a8c6bd2b47a3cb0abce3545040\r\nblockkey = f702adbf248ab0e752fa76cb46bcba12\r\n\r\n[backend]\r\nbackends = backend-1 #here you can add more backends commaseparated backend-1, backend-2, backend-3\r\nallowall = false\r\ntimeout = 10\r\nconnectionsperhost = 8\r\n\r\n[backend-1]\r\nurl = https:\/\/nextcloud.example.com\r\nsecret = 692cdc99256135bcb7849ca1886e2ed6\r\n\r\n#[backend-2]\r\n#url = https:\/\/nextcloud2.example.com\r\n#secret = openssl rand -hex 16\r\n\r\n#[backend-3]\r\n#url = https:\/\/nextcloud3.example.com\r\n#secret = openssl rand -hex 16\r\n\r\n\r\n[nats]\r\nurl = nats:\/\/localhost:4222\r\n\r\n[mcu]\r\ntype = janus\r\nurl = ws:\/\/127.0.0.1:8188\r\n\r\n[turn]\r\napikey = Z6ZkKhjwCFa6RMpFU854Fw==\r\nsecret = 2309a206fc4de0f511ce9da52c088171f69193d1f701323d5ab4f733c9853445\r\nservers = turn:signaling.example.com:5349?transport=udp,turn:signaling.example.com:5349?transport=tcp<\/pre>\n<p>then start signaling:<\/p>\n<pre>systemctl start signaling<\/pre>\n<p>and check status of the service:<\/p>\n<pre>systemctl status signaling<\/pre>\n<p>and if it listens on port 8080:<\/p>\n<pre>netstat -tulpen | grep 8080<\/pre>\n<p>go to next step.<\/p>\n<h3><strong>Step 6: Install nginx and create vHost for signaling server<\/strong><\/h3>\n<p>Now we will install nginx as reverse proxy for our high performance backend:<\/p>\n<pre>apt install nginx python3-certbot-nginx -y<\/pre>\n<p>and create the vHost:<\/p>\n<pre>nano \/etc\/nginx\/sites-available\/signaling<\/pre>\n<p>copy, paste and adjust:<\/p>\n<pre>server {\r\n    listen :80;\r\n    listen [::]:80;\r\n    server_name signaling.example.com;\r\n    }<\/pre>\n<p>and activate vhost:<\/p>\n<pre>ln -s \/etc\/nginx\/sites-available\/signaling \/etc\/nginx\/sites-enabled\/signaling<\/pre>\n<p>then check with:<\/p>\n<pre>nginx -t<\/pre>\n<p>and reload<\/p>\n<pre>systemctl reload nginx<\/pre>\n<p>now use certbot to obtain a certificate:<\/p>\n<pre>certbot --authenticator standalone --installer nginx -d signaling.example.com --pre-hook \"service nginx stop\" --post-hook \"service nginx start\"<\/pre>\n<p>then paste the following config in the vHost-conf:<\/p>\n<pre>mv \/etc\/nginx\/sites-available\/signaling \/tmp\/signaling.bak &amp;&amp; nano \/etc\/nginx\/sites-available\/signaling<\/pre>\n<pre>upstream signaling {\r\n    server 127.0.0.1:8080;\r\n}\r\n\r\nserver {\r\n    server_name signaling.example.com;\r\n\r\n    listen :443 ssl http2; # managed by Certbot\r\n    listen [::]:443 ssl http2;\r\n    ssl_certificate \/etc\/letsencrypt\/live\/signaling.example.com\/fullchain.pem; # managed by Certbot\r\n    ssl_certificate_key \/etc\/letsencrypt\/live\/signaling.example.com\/privkey.pem; # managed by Certbot\r\n    include \/etc\/letsencrypt\/options-ssl-nginx.conf; # managed by Certbot\r\n    ssl_dhparam \/etc\/letsencrypt\/ssl-dhparams.pem; # managed by Certbot\r\n    add_header Strict-Transport-Security \"max-age=63072000; includeSubdomains; preload\";\r\n\r\nlocation \/standalone-signaling\/ {\r\n        proxy_pass http:\/\/signaling\/;\r\n        proxy_http_version 1.1;\r\n        proxy_set_header Host $host;\r\n        proxy_set_header X-Real-IP $remote_addr;\r\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\r\n    }\r\n\r\n    location \/standalone-signaling\/spreed {\r\n        proxy_pass http:\/\/signaling\/spreed;\r\n        proxy_http_version 1.1;\r\n        proxy_set_header Upgrade $http_upgrade;\r\n        proxy_set_header Connection \"Upgrade\";\r\n        proxy_set_header Host $host;\r\n        proxy_set_header X-Real-IP $remote_addr;\r\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\r\n    }\r\n\r\n}\r\nserver {\r\n    if ($host = signaling.example.com) {\r\n        return 301 https:\/\/$host$request_uri;\r\n    } # managed by Certbot\r\n\r\n\r\n    listen :80;\r\n    listen [::]:80;\r\n    server_name signaling.example.com;\r\n    return 404; # managed by Certbot\r\n\r\n\r\n}<\/pre>\n<p>and check an reload nginx:<\/p>\n<pre>nginx -t<\/pre>\n<p>if ok<\/p>\n<pre>systemctl reload nginx<\/pre>\n<h3><strong>Step 7: Configure nextcloud to use stun\/turn and signaling server<\/strong><\/h3>\n<p>Now we are ready to add turn\/stun- and signaling-server to our Nextcloud<\/p>\n<p>Go to Settings, Talk and enter the following:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1942\" src=\"https:\/\/markus-blog.de\/wp-content\/uploads\/2020\/07\/NC-Talk-1.png\" alt=\"\" width=\"1221\" height=\"615\" srcset=\"https:\/\/markus-blog.de\/wp-content\/uploads\/2020\/07\/NC-Talk-1.png 1221w, https:\/\/markus-blog.de\/wp-content\/uploads\/2020\/07\/NC-Talk-1-300x151.png 300w, https:\/\/markus-blog.de\/wp-content\/uploads\/2020\/07\/NC-Talk-1-1024x516.png 1024w, https:\/\/markus-blog.de\/wp-content\/uploads\/2020\/07\/NC-Talk-1-768x387.png 768w, https:\/\/markus-blog.de\/wp-content\/uploads\/2020\/07\/NC-Talk-1-830x418.png 830w, https:\/\/markus-blog.de\/wp-content\/uploads\/2020\/07\/NC-Talk-1-230x116.png 230w, https:\/\/markus-blog.de\/wp-content\/uploads\/2020\/07\/NC-Talk-1-350x176.png 350w, https:\/\/markus-blog.de\/wp-content\/uploads\/2020\/07\/NC-Talk-1-480x242.png 480w\" sizes=\"auto, (max-width: 1221px) 100vw, 1221px\" \/><\/p>\n<p>And then enjoy your High Performance Backend.<\/p>\n<p>Problems with the tutorial? Then comment below or contact me per Mail or Mastodon.<\/p>\n<p>If you want a managed nextcloud, then look <a href=\"https:\/\/weingaertner-it.de\/\" target=\"_blank\" rel=\"noopener nofollow sponsored noreferrer\">here<\/a>.<\/p>\n<p>I will be happy if you would support my work <a title=\"Unterst\u00fctzung\" href=\"https:\/\/markus-blog.de\/index.php\/unterstuetzung\/\" target=\"_blank\" rel=\"noopener noreferrer\">here<\/a>.<\/p>\n<p>Happy nextclouding and do not forget to share ?<\/p>\n<blockquote><p>Sources:<br \/>\n<a href=\"https:\/\/morph027.gitlab.io\/blog\/nextcloud-spreed-signaling\/\" target=\"_blank\" rel=\"noopener nofollow noreferrer\">Morph27<\/a><br \/>\n<a href=\"https:\/\/github.com\/strukturag\/nextcloud-spreed-signaling\" target=\"_blank\" rel=\"noopener nofollow noreferrer\">Struktur AG<\/a><br \/>\nPicture from <a href=\"https:\/\/pixabay.com\/de\/users\/Alexandra_Koch-621802\/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=5314869\">Alexandra_Koch<\/a> on <a href=\"https:\/\/pixabay.com\/de\/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=5314869\">Pixabay<\/a><\/p><\/blockquote>\n<p>This Guide was tested on:<br \/>\n<a href=\"https:\/\/www.netcup.de\/bestellen\/gutschein_einloesen.php?gutschein=36nc15825556910&amp;ref=113290\" target=\"_blank\" rel=\"noopener nofollow sponsored noreferrer\">netcup<\/a><br \/>\n<a href=\"https:\/\/hetzner.cloud\/?ref=O4DNPT7KH7kS\" target=\"_blank\" rel=\"noopener nofollow sponsored noreferrer\">Hetzner Cloud<\/a><\/p>\n<div class=\"shariff shariff-align-flex-start shariff-widget-align-flex-start\" data-services=\"facebook%7Creddit\" data-url=\"https%3A%2F%2Fmarkus-blog.de%2Findex.php%2F2020%2F07%2F30%2Fhow-to-install-nextcloud-talk-high-performance-backend-with-stun-turnserver-on-ubuntu%2F\" data-timestamp=\"1680511438\" data-hidezero=\"1\" data-backendurl=\"https:\/\/markus-blog.de\/wp-json\/shariff\/v1\/share_counts?\"><ul class=\"shariff-buttons theme-round orientation-horizontal buttonsize-medium\"><li class=\"shariff-button mastodon shariff-nocustomcolor\" style=\"background-color:#563ACC\"><a href=\"https:\/\/s2f.kytta.dev\/?text=How%20to%20Install%20Nextcloud%20Talk%20High%20Performance%20Backend%20with%20Stun%2FTurnserver%20on%20Ubuntu https%3A%2F%2Fmarkus-blog.de%2Findex.php%2F2020%2F07%2F30%2Fhow-to-install-nextcloud-talk-high-performance-backend-with-stun-turnserver-on-ubuntu%2F\" title=\"Bei Mastodon teilen\" aria-label=\"Bei Mastodon teilen\" role=\"button\" rel=\"noopener nofollow\" class=\"shariff-link\" style=\"; background-color:#6364FF; color:#fff\" target=\"_blank\"><span class=\"shariff-icon\" style=\"\"><svg width=\"75\" height=\"79\" viewBox=\"0 0 75 79\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M37.813-.025C32.462-.058 27.114.13 21.79.598c-8.544.621-17.214 5.58-20.203 13.931C-1.12 23.318.408 32.622.465 41.65c.375 7.316.943 14.78 3.392 21.73 4.365 9.465 14.781 14.537 24.782 15.385 7.64.698 15.761-.213 22.517-4.026a54.1 54.1 0 0 0 .01-6.232c-6.855 1.316-14.101 2.609-21.049 1.074-3.883-.88-6.876-4.237-7.25-8.215-1.53-3.988 3.78-.43 5.584-.883 9.048 1.224 18.282.776 27.303-.462 7.044-.837 14.26-4.788 16.65-11.833 2.263-6.135 1.215-12.79 1.698-19.177.06-3.84.09-7.692-.262-11.52C72.596 7.844 63.223.981 53.834.684a219.453 219.453 0 0 0-16.022-.71zm11.294 12.882c5.5-.067 10.801 4.143 11.67 9.653.338 1.48.471 3 .471 4.515v21.088h-8.357c-.07-7.588.153-15.182-.131-22.765-.587-4.368-7.04-5.747-9.672-2.397-2.422 3.04-1.47 7.155-1.67 10.735v6.392h-8.307c-.146-4.996.359-10.045-.404-15.002-1.108-4.218-7.809-5.565-10.094-1.666-1.685 3.046-.712 6.634-.976 9.936v14.767h-8.354c.109-8.165-.238-16.344.215-24.5.674-5.346 5.095-10.389 10.676-10.627 4.902-.739 10.103 2.038 12.053 6.631.375 1.435 1.76 1.932 1.994.084 1.844-3.704 5.501-6.739 9.785-6.771.367-.044.735-.068 1.101-.073z\"\/><defs><linearGradient id=\"paint0_linear_549_34\" x1=\"37.0692\" y1=\"0\" x2=\"37.0692\" y2=\"79\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#6364FF\"\/><stop offset=\"1\" stop-color=\"#563ACC\"\/><\/linearGradient><\/defs><\/svg><\/span><\/a><\/li><li class=\"shariff-button facebook shariff-nocustomcolor\" style=\"background-color:#4273c8\"><a href=\"https:\/\/www.facebook.com\/sharer\/sharer.php?u=https%3A%2F%2Fmarkus-blog.de%2Findex.php%2F2020%2F07%2F30%2Fhow-to-install-nextcloud-talk-high-performance-backend-with-stun-turnserver-on-ubuntu%2F\" title=\"Bei Facebook teilen\" aria-label=\"Bei Facebook teilen\" role=\"button\" rel=\"nofollow\" class=\"shariff-link\" style=\"; background-color:#3b5998; color:#fff\" target=\"_blank\"><span class=\"shariff-icon\" style=\"\"><svg width=\"32px\" height=\"20px\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 18 32\"><path fill=\"#3b5998\" d=\"M17.1 0.2v4.7h-2.8q-1.5 0-2.1 0.6t-0.5 1.9v3.4h5.2l-0.7 5.3h-4.5v13.6h-5.5v-13.6h-4.5v-5.3h4.5v-3.9q0-3.3 1.9-5.2t5-1.8q2.6 0 4.1 0.2z\"\/><\/svg><\/span><span data-service=\"facebook\" style=\"color:#3b5998\" class=\"shariff-count shariff-hidezero\"><\/span>&nbsp;<\/a><\/li><li class=\"shariff-button twitter shariff-nocustomcolor\" style=\"background-color:#595959\"><a href=\"https:\/\/twitter.com\/share?url=https%3A%2F%2Fmarkus-blog.de%2Findex.php%2F2020%2F07%2F30%2Fhow-to-install-nextcloud-talk-high-performance-backend-with-stun-turnserver-on-ubuntu%2F&text=How%20to%20Install%20Nextcloud%20Talk%20High%20Performance%20Backend%20with%20Stun%2FTurnserver%20on%20Ubuntu&via=markusblogde\" title=\"Bei X teilen\" aria-label=\"Bei X teilen\" role=\"button\" rel=\"noopener nofollow\" class=\"shariff-link\" style=\"; background-color:#000; color:#fff\" target=\"_blank\"><span class=\"shariff-icon\" style=\"\"><svg width=\"32px\" height=\"20px\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\"><path fill=\"#000\" d=\"M14.258 10.152L23.176 0h-2.113l-7.747 8.813L7.133 0H0l9.352 13.328L0 23.973h2.113l8.176-9.309 6.531 9.309h7.133zm-2.895 3.293l-.949-1.328L2.875 1.56h3.246l6.086 8.523.945 1.328 7.91 11.078h-3.246zm0 0\"\/><\/svg><\/span><\/a><\/li><li class=\"shariff-button whatsapp shariff-nocustomcolor\" style=\"background-color:#5cbe4a\"><a href=\"https:\/\/api.whatsapp.com\/send?text=https%3A%2F%2Fmarkus-blog.de%2Findex.php%2F2020%2F07%2F30%2Fhow-to-install-nextcloud-talk-high-performance-backend-with-stun-turnserver-on-ubuntu%2F%20How%20to%20Install%20Nextcloud%20Talk%20High%20Performance%20Backend%20with%20Stun%2FTurnserver%20on%20Ubuntu\" title=\"Bei Whatsapp teilen\" aria-label=\"Bei Whatsapp teilen\" role=\"button\" rel=\"noopener nofollow\" class=\"shariff-link\" style=\"; background-color:#34af23; color:#fff\" target=\"_blank\"><span class=\"shariff-icon\" style=\"\"><svg width=\"32px\" height=\"20px\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 32 32\"><path fill=\"#34af23\" d=\"M17.6 17.4q0.2 0 1.7 0.8t1.6 0.9q0 0.1 0 0.3 0 0.6-0.3 1.4-0.3 0.7-1.3 1.2t-1.8 0.5q-1 0-3.4-1.1-1.7-0.8-3-2.1t-2.6-3.3q-1.3-1.9-1.3-3.5v-0.1q0.1-1.6 1.3-2.8 0.4-0.4 0.9-0.4 0.1 0 0.3 0t0.3 0q0.3 0 0.5 0.1t0.3 0.5q0.1 0.4 0.6 1.6t0.4 1.3q0 0.4-0.6 1t-0.6 0.8q0 0.1 0.1 0.3 0.6 1.3 1.8 2.4 1 0.9 2.7 1.8 0.2 0.1 0.4 0.1 0.3 0 1-0.9t0.9-0.9zM14 26.9q2.3 0 4.3-0.9t3.6-2.4 2.4-3.6 0.9-4.3-0.9-4.3-2.4-3.6-3.6-2.4-4.3-0.9-4.3 0.9-3.6 2.4-2.4 3.6-0.9 4.3q0 3.6 2.1 6.6l-1.4 4.2 4.3-1.4q2.8 1.9 6.2 1.9zM14 2.2q2.7 0 5.2 1.1t4.3 2.9 2.9 4.3 1.1 5.2-1.1 5.2-2.9 4.3-4.3 2.9-5.2 1.1q-3.5 0-6.5-1.7l-7.4 2.4 2.4-7.2q-1.9-3.2-1.9-6.9 0-2.7 1.1-5.2t2.9-4.3 4.3-2.9 5.2-1.1z\"\/><\/svg><\/span><\/a><\/li><li class=\"shariff-button xing shariff-nocustomcolor\" style=\"background-color:#29888a\"><a href=\"https:\/\/www.xing.com\/spi\/shares\/new?url=https%3A%2F%2Fmarkus-blog.de%2Findex.php%2F2020%2F07%2F30%2Fhow-to-install-nextcloud-talk-high-performance-backend-with-stun-turnserver-on-ubuntu%2F\" title=\"Bei XING teilen\" aria-label=\"Bei XING teilen\" role=\"button\" rel=\"noopener nofollow\" class=\"shariff-link\" style=\"; background-color:#126567; color:#fff\" target=\"_blank\"><span class=\"shariff-icon\" style=\"\"><svg width=\"32px\" height=\"20px\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 25 32\"><path fill=\"#126567\" d=\"M10.7 11.9q-0.2 0.3-4.6 8.2-0.5 0.8-1.2 0.8h-4.3q-0.4 0-0.5-0.3t0-0.6l4.5-8q0 0 0 0l-2.9-5q-0.2-0.4 0-0.7 0.2-0.3 0.5-0.3h4.3q0.7 0 1.2 0.8zM25.1 0.4q0.2 0.3 0 0.7l-9.4 16.7 6 11q0.2 0.4 0 0.6-0.2 0.3-0.6 0.3h-4.3q-0.7 0-1.2-0.8l-6-11.1q0.3-0.6 9.5-16.8 0.4-0.8 1.2-0.8h4.3q0.4 0 0.5 0.3z\"\/><\/svg><\/span><\/a><\/li><li class=\"shariff-button threema shariff-nocustomcolor shariff-mobile\" style=\"background-color:#4fbc24\"><a href=\"threema:\/\/compose?text=How%20to%20Install%20Nextcloud%20Talk%20High%20Performance%20Backend%20with%20Stun%2FTurnserver%20on%20Ubuntu%20https%3A%2F%2Fmarkus-blog.de%2Findex.php%2F2020%2F07%2F30%2Fhow-to-install-nextcloud-talk-high-performance-backend-with-stun-turnserver-on-ubuntu%2F\" title=\"Bei Threema teilen\" aria-label=\"Bei Threema teilen\" role=\"button\" rel=\"noopener nofollow\" class=\"shariff-link\" style=\"; background-color:#1f1f1f; color:#fff\" target=\"_blank\"><span class=\"shariff-icon\" style=\"\"><svg width=\"32px\" height=\"20px\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 32 32\"><path fill=\"#1f1f1f\" d=\"M30.8 10.9c-0.3-1.4-0.9-2.6-1.8-3.8-2-2.6-5.5-4.5-9.4-5.2-1.3-0.2-1.9-0.3-3.5-0.3s-2.2 0-3.5 0.3c-4 0.7-7.4 2.6-9.4 5.2-0.9 1.2-1.5 2.4-1.8 3.8-0.1 0.5-0.2 1.2-0.2 1.6 0 0.4 0.1 1.1 0.2 1.6 0.4 1.9 1.3 3.4 2.9 5 0.8 0.8 0.8 0.8 0.7 1.3 0 0.6-0.5 1.6-1.7 3.6-0.3 0.5-0.5 0.9-0.5 0.9 0 0.1 0.1 0.1 0.5 0 0.8-0.2 2.3-0.6 5.6-1.6 1.1-0.3 1.3-0.4 2.3-0.4 0.8 0 1.1 0 2.3 0.2 1.5 0.2 3.5 0.2 4.9 0 5.1-0.6 9.3-2.9 11.4-6.3 0.5-0.9 0.9-1.8 1.1-2.8 0.1-0.5 0.2-1.1 0.2-1.6 0-0.7-0.1-1.1-0.2-1.6-0.3-1.4 0.1 0.5 0 0zM20.6 17.3c0 0.4-0.4 0.8-0.8 0.8h-7.7c-0.4 0-0.8-0.4-0.8-0.8v-4.6c0-0.4 0.4-0.8 0.8-0.8h0.2l0-1.6c0-0.9 0-1.8 0.1-2 0.1-0.6 0.6-1.2 1.1-1.7s1.1-0.7 1.9-0.8c1.8-0.3 3.7 0.7 4.2 2.2 0.1 0.3 0.1 0.7 0.1 2.1v0 1.7h0.1c0.4 0 0.8 0.4 0.8 0.8v4.6zM15.6 7.3c-0.5 0.1-0.8 0.3-1.2 0.6s-0.6 0.8-0.7 1.3c0 0.2 0 0.8 0 1.5l0 1.2h4.6v-1.3c0-1 0-1.4-0.1-1.6-0.3-1.1-1.5-1.9-2.6-1.7zM25.8 28.2c0 1.2-1 2.2-2.1 2.2s-2.1-1-2.1-2.1c0-1.2 1-2.1 2.2-2.1s2.2 1 2.2 2.2zM18.1 28.2c0 1.2-1 2.2-2.1 2.2s-2.1-1-2.1-2.1c0-1.2 1-2.1 2.2-2.1s2.2 1 2.2 2.2zM10.4 28.2c0 1.2-1 2.2-2.1 2.2s-2.1-1-2.1-2.1c0-1.2 1-2.1 2.2-2.1s2.2 1 2.2 2.2z\"\/><\/svg><\/span><\/a><\/li><li class=\"shariff-button mailto shariff-nocustomcolor\" style=\"background-color:#a8a8a8\"><a href=\"mailto:?body=https%3A%2F%2Fmarkus-blog.de%2Findex.php%2F2020%2F07%2F30%2Fhow-to-install-nextcloud-talk-high-performance-backend-with-stun-turnserver-on-ubuntu%2F&subject=How%20to%20Install%20Nextcloud%20Talk%20High%20Performance%20Backend%20with%20Stun%2FTurnserver%20on%20Ubuntu\" title=\"Per E-Mail versenden\" aria-label=\"Per E-Mail versenden\" role=\"button\" rel=\"noopener nofollow\" class=\"shariff-link\" style=\"; background-color:#999; color:#fff\"><span class=\"shariff-icon\" style=\"\"><svg width=\"32px\" height=\"20px\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 32 32\"><path fill=\"#999\" d=\"M32 12.7v14.2q0 1.2-0.8 2t-2 0.9h-26.3q-1.2 0-2-0.9t-0.8-2v-14.2q0.8 0.9 1.8 1.6 6.5 4.4 8.9 6.1 1 0.8 1.6 1.2t1.7 0.9 2 0.4h0.1q0.9 0 2-0.4t1.7-0.9 1.6-1.2q3-2.2 8.9-6.1 1-0.7 1.8-1.6zM32 7.4q0 1.4-0.9 2.7t-2.2 2.2q-6.7 4.7-8.4 5.8-0.2 0.1-0.7 0.5t-1 0.7-0.9 0.6-1.1 0.5-0.9 0.2h-0.1q-0.4 0-0.9-0.2t-1.1-0.5-0.9-0.6-1-0.7-0.7-0.5q-1.6-1.1-4.7-3.2t-3.6-2.6q-1.1-0.7-2.1-2t-1-2.5q0-1.4 0.7-2.3t2.1-0.9h26.3q1.2 0 2 0.8t0.9 2z\"\/><\/svg><\/span><\/a><\/li><li class=\"shariff-button printer shariff-nocustomcolor\" style=\"background-color:#a8a8a8\"><a href=\"javascript:window.print()\" title=\"drucken\" aria-label=\"drucken\" role=\"button\" rel=\"noopener nofollow\" class=\"shariff-link\" style=\"; background-color:#999; color:#fff\"><span class=\"shariff-icon\" style=\"\"><svg width=\"32px\" height=\"20px\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 30 32\"><path fill=\"#999\" d=\"M6.8 27.4h16v-4.6h-16v4.6zM6.8 16h16v-6.8h-2.8q-0.7 0-1.2-0.5t-0.5-1.2v-2.8h-11.4v11.4zM27.4 17.2q0-0.5-0.3-0.8t-0.8-0.4-0.8 0.4-0.3 0.8 0.3 0.8 0.8 0.3 0.8-0.3 0.3-0.8zM29.7 17.2v7.4q0 0.2-0.2 0.4t-0.4 0.2h-4v2.8q0 0.7-0.5 1.2t-1.2 0.5h-17.2q-0.7 0-1.2-0.5t-0.5-1.2v-2.8h-4q-0.2 0-0.4-0.2t-0.2-0.4v-7.4q0-1.4 1-2.4t2.4-1h1.2v-9.7q0-0.7 0.5-1.2t1.2-0.5h12q0.7 0 1.6 0.4t1.3 0.8l2.7 2.7q0.5 0.5 0.9 1.4t0.4 1.6v4.6h1.1q1.4 0 2.4 1t1 2.4z\"\/><\/svg><\/span><\/a><\/li><li class=\"shariff-button reddit shariff-nocustomcolor\" style=\"background-color:#ff5700\"><a href=\"https:\/\/www.reddit.com\/submit?url=https%3A%2F%2Fmarkus-blog.de%2Findex.php%2F2020%2F07%2F30%2Fhow-to-install-nextcloud-talk-high-performance-backend-with-stun-turnserver-on-ubuntu%2F\" title=\"Bei Reddit teilen\" aria-label=\"Bei Reddit teilen\" role=\"button\" rel=\"noopener nofollow\" class=\"shariff-link\" style=\"; background-color:#ff4500; color:#fff\" target=\"_blank\"><span class=\"shariff-icon\" style=\"\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\"><path fill=\"#ff4500\" d=\"M440.3 203.5c-15 0-28.2 6.2-37.9 15.9-35.7-24.7-83.8-40.6-137.1-42.3L293 52.3l88.2 19.8c0 21.6 17.6 39.2 39.2 39.2 22 0 39.7-18.1 39.7-39.7s-17.6-39.7-39.7-39.7c-15.4 0-28.7 9.3-35.3 22l-97.4-21.6c-4.9-1.3-9.7 2.2-11 7.1L246.3 177c-52.9 2.2-100.5 18.1-136.3 42.8-9.7-10.1-23.4-16.3-38.4-16.3-55.6 0-73.8 74.6-22.9 100.1-1.8 7.9-2.6 16.3-2.6 24.7 0 83.8 94.4 151.7 210.3 151.7 116.4 0 210.8-67.9 210.8-151.7 0-8.4-.9-17.2-3.1-25.1 49.9-25.6 31.5-99.7-23.8-99.7zM129.4 308.9c0-22 17.6-39.7 39.7-39.7 21.6 0 39.2 17.6 39.2 39.7 0 21.6-17.6 39.2-39.2 39.2-22 .1-39.7-17.6-39.7-39.2zm214.3 93.5c-36.4 36.4-139.1 36.4-175.5 0-4-3.5-4-9.7 0-13.7 3.5-3.5 9.7-3.5 13.2 0 27.8 28.5 120 29 149 0 3.5-3.5 9.7-3.5 13.2 0 4.1 4 4.1 10.2.1 13.7zm-.8-54.2c-21.6 0-39.2-17.6-39.2-39.2 0-22 17.6-39.7 39.2-39.7 22 0 39.7 17.6 39.7 39.7-.1 21.5-17.7 39.2-39.7 39.2z\"\/><\/svg><\/span><span data-service=\"reddit\" style=\"color:#ff4500\" class=\"shariff-count shariff-hidezero\"><\/span>&nbsp;<\/a><\/li><li class=\"shariff-button linkedin shariff-nocustomcolor\" style=\"background-color:#1488bf\"><a href=\"https:\/\/www.linkedin.com\/sharing\/share-offsite\/?url=https%3A%2F%2Fmarkus-blog.de%2Findex.php%2F2020%2F07%2F30%2Fhow-to-install-nextcloud-talk-high-performance-backend-with-stun-turnserver-on-ubuntu%2F\" title=\"Bei LinkedIn teilen\" aria-label=\"Bei LinkedIn teilen\" role=\"button\" rel=\"noopener nofollow\" class=\"shariff-link\" style=\"; background-color:#0077b5; color:#fff\" target=\"_blank\"><span class=\"shariff-icon\" style=\"\"><svg width=\"32px\" height=\"20px\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 27 32\"><path fill=\"#0077b5\" d=\"M6.2 11.2v17.7h-5.9v-17.7h5.9zM6.6 5.7q0 1.3-0.9 2.2t-2.4 0.9h0q-1.5 0-2.4-0.9t-0.9-2.2 0.9-2.2 2.4-0.9 2.4 0.9 0.9 2.2zM27.4 18.7v10.1h-5.9v-9.5q0-1.9-0.7-2.9t-2.3-1.1q-1.1 0-1.9 0.6t-1.2 1.5q-0.2 0.5-0.2 1.4v9.9h-5.9q0-7.1 0-11.6t0-5.3l0-0.9h5.9v2.6h0q0.4-0.6 0.7-1t1-0.9 1.6-0.8 2-0.3q3 0 4.9 2t1.9 6z\"\/><\/svg><\/span><\/a><\/li><\/ul><\/div>","protected":false},"excerpt":{"rendered":"<p>Picture from Alexandra_Koch on Pixabay Changes 18.11.2020: &#8211; Adjust server.conf because typo has changed &#8211; Adjust signaling.service and janus.service because they does not start after reboot Changes 22.11.2020: &#8211; Adjust [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":1931,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[112,114,106,122],"tags":[207,204,52,156,64,210,208,205,209,61,206],"class_list":["post-1919","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-applications","category-docker-en","category-nextcloud-en","category-vps-en","tag-docker","tag-hpb","tag-nextcloud","tag-nginx","tag-reverse-proxy","tag-spreed","tag-stun","tag-talk","tag-turnserver","tag-ubuntu","tag-video"],"_links":{"self":[{"href":"https:\/\/markus-blog.de\/index.php\/wp-json\/wp\/v2\/posts\/1919","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/markus-blog.de\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/markus-blog.de\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/markus-blog.de\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/markus-blog.de\/index.php\/wp-json\/wp\/v2\/comments?post=1919"}],"version-history":[{"count":0,"href":"https:\/\/markus-blog.de\/index.php\/wp-json\/wp\/v2\/posts\/1919\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/markus-blog.de\/index.php\/wp-json\/wp\/v2\/media\/1931"}],"wp:attachment":[{"href":"https:\/\/markus-blog.de\/index.php\/wp-json\/wp\/v2\/media?parent=1919"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/markus-blog.de\/index.php\/wp-json\/wp\/v2\/categories?post=1919"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/markus-blog.de\/index.php\/wp-json\/wp\/v2\/tags?post=1919"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}