<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.ixheim.de/index.php?action=history&amp;feed=atom&amp;title=BigBlueButton_installieren</id>
	<title>BigBlueButton installieren - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.ixheim.de/index.php?action=history&amp;feed=atom&amp;title=BigBlueButton_installieren"/>
	<link rel="alternate" type="text/html" href="https://wiki.ixheim.de/index.php?title=BigBlueButton_installieren&amp;action=history"/>
	<updated>2026-11-02T23:15:21Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Xinux Wiki</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://wiki.ixheim.de/index.php?title=BigBlueButton_installieren&amp;diff=74028&amp;oldid=prev</id>
		<title>Thomas.will@claude: IPv6 für Medien: TURN, mediasoup, Firewall-Alias</title>
		<link rel="alternate" type="text/html" href="https://wiki.ixheim.de/index.php?title=BigBlueButton_installieren&amp;diff=74028&amp;oldid=prev"/>
		<updated>2026-10-30T10:54:19Z</updated>

		<summary type="html">&lt;p&gt;IPv6 für Medien: TURN, mediasoup, Firewall-Alias&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 30. Oktober 2026, 10:54 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l127&quot;&gt;Zeile 127:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 127:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=IPv4 und IPv6=&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=IPv4 und IPv6=&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*&lt;/del&gt;Die &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&#039;&lt;/del&gt;Weboberfläche&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&#039;&lt;/del&gt;, Greenlight und die Schnittstelle sind &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;über &#039;&#039;&#039;IPv4 und IPv6&#039;&#039;&#039; erreichbar (wenn &lt;/del&gt;A- und AAAA-Eintrag sowie &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;die &lt;/del&gt;ufw-Regeln für beide &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;da sind)&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Die Weboberfläche, Greenlight und die Schnittstelle sind &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;mit &lt;/ins&gt;A- und AAAA-Eintrag sowie &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;den &lt;/ins&gt;ufw-Regeln für beide &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Protokolle sofort über &#039;&#039;&#039;IPv4 und IPv6&#039;&#039;&#039; erreichbar&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Für die &lt;/ins&gt;&#039;&#039;&#039;Medien&#039;&#039;&#039; (Audio, Video) &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;sind in der Voreinstellung &lt;/ins&gt;der eingebaute TURN-Server &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;und mediasoup &lt;/ins&gt;nur an die IPv4-Adresse gebunden&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. LiveKit, die Standardschiene in BigBlueButton 4.0, sammelt die Adressen aller Netzwerkkarten ein und braucht keine Änderung.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*Die &lt;/del&gt;&#039;&#039;&#039;Medien&#039;&#039;&#039; (Audio, Video) &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;und &lt;/del&gt;der eingebaute TURN-Server &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;sind in der Voreinstellung &#039;&#039;&#039;&lt;/del&gt;nur an die IPv4-Adresse&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&#039; &lt;/del&gt;gebunden: &amp;lt;code&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;listening&lt;/del&gt;-ip&amp;lt;/code&amp;gt; &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;in &lt;/del&gt;&amp;lt;code&amp;gt;/etc/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;turnserver&lt;/del&gt;.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;conf&lt;/del&gt;&amp;lt;/code&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, &lt;/del&gt;&amp;lt;code&amp;gt;announcedIp&amp;lt;/code&amp;gt; &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;bei Mediasoup &lt;/del&gt;und &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;LiveKit&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Ein Teilnehmer &lt;/del&gt;nur &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;mit &lt;/del&gt;IPv6 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;kommt damit &lt;/del&gt;ins &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Webinterface&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;aber nicht in die Medienströme&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Die üblichen &lt;/del&gt;Rechner mit &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;beiden Adressen nutzen &lt;/del&gt;für &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;die Medien IPv4 &lt;/del&gt;und &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;merken nichts davon&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;==TURN-Server==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;In &amp;lt;code&amp;gt;/etc/turnserver.conf&amp;lt;/code&amp;gt; die IPv6-Adresse zusätzlich eintragen (die IPv4-Zeilen bleiben stehen):&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;pre&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;listening-ip=203.0.113.10&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;listening-ip=2001:db8:100::10&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;relay-ip=203.0.113.10&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;relay-ip=2001&lt;/ins&gt;:&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;db8:100::10&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;allowed-peer-ip=203.0.113.10&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;allowed-peer-ip=2001:db8:100::10&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/pre&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Die Zeile &amp;lt;code&amp;gt;allowed-peer-ip&amp;lt;/code&amp;gt; ist wichtig, weil die Voreinstellung alle IPv6-Peers mit &lt;/ins&gt;&amp;lt;code&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;denied-peer&lt;/ins&gt;-ip&amp;lt;/code&amp;gt; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;sperrt. Danach &amp;lt;code&amp;gt;sudo systemctl restart coturn&amp;lt;/code&amp;gt;.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;==mediasoup==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;In &lt;/ins&gt;&amp;lt;code&amp;gt;/etc/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;bigbluebutton/bbb-webrtc-sfu/production&lt;/ins&gt;.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;yml&lt;/ins&gt;&amp;lt;/code&amp;gt; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;bei &amp;lt;code&amp;gt;listenIps&lt;/ins&gt;&amp;lt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;/&lt;/ins&gt;code&amp;gt; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;einen zweiten Eintrag ergänzen:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;pre&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;mediasoup:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  webrtc:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    listenIps:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;      - ip: 0.0.0.0&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;        announcedIp: 203.0.113.10&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;      - ip: &quot;::&quot;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;        &lt;/ins&gt;announcedIp&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;: &quot;2001:db8:100::10&quot;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;pre&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Danach &amp;lt;&lt;/ins&gt;code&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;sudo systemctl restart bbb-webrtc-sfu&amp;lt;/code&amp;gt;. Das Vorgehen steht in der [https://docs.bigbluebutton.org/administration/firewall-configuration/ Firewall-Anleitung] von BigBlueButton.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;==Firewall vor dem Server==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Eine Firewall oder ein Router vor dem Server muss für die IPv6-Adresse dieselben Ports durchlassen wie für IPv4: TCP &lt;/ins&gt;und &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;UDP 3478 sowie UDP 16384–32768. Wer die Regeln mit einem &#039;&#039;&#039;Adress-Alias&#039;&#039;&#039; schreibt, muss die &#039;&#039;&#039;IPv6-Adresse im Alias ergänzen&#039;&#039;&#039;&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Steht dort &lt;/ins&gt;nur &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;die IPv4-Adresse, laufen die &lt;/ins&gt;IPv6&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;-Regeln &lt;/ins&gt;ins &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Leere&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;obwohl sie vorhanden sind&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;==Testen==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Von einem anderen &lt;/ins&gt;Rechner mit &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;IPv6 (hier ein Python-Beispiel &lt;/ins&gt;für &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;eine STUN-Anfrage an den TURN-Server):&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;pre&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;python3 - &amp;lt;&amp;lt;&#039;EOF&#039;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;import socket, os, struct&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;msg = struct.pack(&quot;!HHI&quot;, 0x0001, 0, 0x2112A442) + os.urandom(12)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;s = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM); s.settimeout(4)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;s.sendto(msg, (&quot;2001:db8:100::10&quot;, 3478))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;print(len(s.recvfrom(2048)[0]), &quot;Byte Antwort&quot;)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;EOF&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/pre&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Kommt eine Antwort, ist UDP 3478 über IPv6 offen. TCP prüft man mit &amp;lt;code&amp;gt;nc -6 -vz bbb.example.org 3478&amp;lt;/code&amp;gt;. Der Medienbereich lässt sich testen, indem man auf dem Server kurz einen UDP-Lauscher auf einem Port im Bereich startet &lt;/ins&gt;und &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;von außen ein Paket dorthin schickt. Im Browser zeigt &amp;lt;code&amp;gt;about:webrtc&amp;lt;/code&amp;gt; (Firefox) oder &amp;lt;code&amp;gt;chrome://webrtc-internals&amp;lt;/code&amp;gt; (Chrome) während einer Sitzung, ob ICE-Kandidaten mit der IPv6-Adresse auftauchen&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=Zertifikat und Updates=&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=Zertifikat und Updates=&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key my_wiki:diff:1.41:old-74025:rev-74028:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Thomas.will@claude</name></author>
	</entry>
	<entry>
		<id>https://wiki.ixheim.de/index.php?title=BigBlueButton_installieren&amp;diff=74025&amp;oldid=prev</id>
		<title>Thomas.will@claude: Neue Anleitung</title>
		<link rel="alternate" type="text/html" href="https://wiki.ixheim.de/index.php?title=BigBlueButton_installieren&amp;diff=74025&amp;oldid=prev"/>
		<updated>2026-10-30T10:25:48Z</updated>

		<summary type="html">&lt;p&gt;Neue Anleitung&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Diese Anleitung baut einen eigenen &amp;#039;&amp;#039;&amp;#039;BigBlueButton&amp;#039;&amp;#039;&amp;#039;-Server (Version 4.0) mit der Raumverwaltung &amp;#039;&amp;#039;&amp;#039;Greenlight&amp;#039;&amp;#039;&amp;#039; auf einem frischen Ubuntu 24.04 auf. Alle Namen und Adressen sind Beispiele und müssen durch die eigenen ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Beispielwert !! Bedeutung&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;bbb.example.org&amp;lt;/code&amp;gt; || Name des Servers (FQDN)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;203.0.113.10&amp;lt;/code&amp;gt; || öffentliche IPv4-Adresse&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;2001:db8:100::10&amp;lt;/code&amp;gt; || öffentliche IPv6-Adresse&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;admin@example.org&amp;lt;/code&amp;gt; || Mailadresse für Let&amp;#039;s Encrypt&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Voraussetzungen=&lt;br /&gt;
*Ein &amp;#039;&amp;#039;&amp;#039;frischer, dedizierter&amp;#039;&amp;#039;&amp;#039; Server mit &amp;#039;&amp;#039;&amp;#039;Ubuntu 24.04&amp;#039;&amp;#039;&amp;#039; (64 Bit). Eine Aktualisierung von einer älteren BigBlueButton-Version ist nicht vorgesehen.&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;8 CPU-Kerne&amp;#039;&amp;#039;&amp;#039; und &amp;#039;&amp;#039;&amp;#039;16 GB RAM&amp;#039;&amp;#039;&amp;#039; (mit Swap). Für Tests genügen weniger (4 Kerne, 8 GB).&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;Platte:&amp;#039;&amp;#039;&amp;#039; Mit Aufzeichnungen sind 500 GB empfohlen, ohne Aufzeichnungen reichen 50 GB. Für die Aufzeichnungen am besten ein eigenes Volume.&lt;br /&gt;
*Eine öffentliche &amp;#039;&amp;#039;&amp;#039;IPv4-Adresse&amp;#039;&amp;#039;&amp;#039; und, wenn gewünscht, eine &amp;#039;&amp;#039;&amp;#039;IPv6-Adresse&amp;#039;&amp;#039;&amp;#039;. Dazu etwa 250 Mbit/s symmetrisch bei vielen Teilnehmern.&lt;br /&gt;
*Ein &amp;#039;&amp;#039;&amp;#039;Name&amp;#039;&amp;#039;&amp;#039; (FQDN) mit DNS-Eintrag, denn Kamera, Mikrofon und Bildschirmfreigabe funktionieren im Browser nur über HTTPS.&lt;br /&gt;
*Port 80 und 443 dürfen von keinem anderen Webserver belegt sein.&lt;br /&gt;
&lt;br /&gt;
=DNS=&lt;br /&gt;
Der Name muss auf den Server zeigen, bevor die Installation startet, sonst bekommt Let&amp;#039;s Encrypt kein Zertifikat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bbb.example.org.   IN  A     203.0.113.10&lt;br /&gt;
bbb.example.org.   IN  AAAA  2001:db8:100::10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Prüfen (von einem anderen Rechner):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dig +short A    bbb.example.org @8.8.8.8&lt;br /&gt;
dig +short AAAA bbb.example.org @8.8.8.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wichtig: Wenn ein AAAA-Eintrag existiert, versucht Let&amp;#039;s Encrypt auch über IPv6 zu prüfen. Der Server muss dann auf Port 80 über IPv6 erreichbar sein, sonst scheitert das Zertifikat. Wer kein IPv6 anbietet, trägt keinen AAAA-Eintrag ein.&lt;br /&gt;
&lt;br /&gt;
=Vorbereitung=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hostname -f                # muss bbb.example.org ausgeben&lt;br /&gt;
timedatectl                # System clock synchronized: yes&lt;br /&gt;
locale -a | grep en_US     # en_US.utf8 muss vorhanden sein&lt;br /&gt;
sudo apt update &amp;amp;&amp;amp; sudo apt full-upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Firewall=&lt;br /&gt;
Das Installationsskript richtet mit der Voreinstellung die Firewall &amp;lt;code&amp;gt;ufw&amp;lt;/code&amp;gt; ein. Das setzt voraus, dass SSH auf &amp;#039;&amp;#039;&amp;#039;Port 22&amp;#039;&amp;#039;&amp;#039; läuft, sonst bricht es ab. Zusätzlich muss eine Firewall vor dem Server (Hoster, Router) die Ports durchlassen.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Port !! Protokoll !! wofür&lt;br /&gt;
|-&lt;br /&gt;
| 22 || TCP || SSH&lt;br /&gt;
|-&lt;br /&gt;
| 80 || TCP || HTTP, Zertifikat von Let&amp;#039;s Encrypt&lt;br /&gt;
|-&lt;br /&gt;
| 443 || TCP || HTTPS, Weboberfläche&lt;br /&gt;
|-&lt;br /&gt;
| 3478 || TCP und UDP || eingebauter TURN-Server&lt;br /&gt;
|-&lt;br /&gt;
| 16384–32768 || UDP || Audio, Video, Bildschirm&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Eigener SSH-Port==&lt;br /&gt;
Läuft SSH auf einem anderen Port (hier als Beispiel 2222), startet man das Skript mit dem Schalter &amp;lt;code&amp;gt;-W&amp;lt;/code&amp;gt; und richtet &amp;lt;code&amp;gt;ufw&amp;lt;/code&amp;gt; vorher selbst ein. Den SSH-Port &amp;#039;&amp;#039;&amp;#039;zuerst&amp;#039;&amp;#039;&amp;#039; freigeben, sonst sperrt man sich aus:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo ufw default deny incoming&lt;br /&gt;
sudo ufw default allow outgoing&lt;br /&gt;
sudo ufw allow 2222/tcp comment &amp;quot;SSH&amp;quot;&lt;br /&gt;
sudo ufw allow 80/tcp&lt;br /&gt;
sudo ufw allow 443/tcp&lt;br /&gt;
sudo ufw allow 3478/tcp&lt;br /&gt;
sudo ufw allow 3478/udp&lt;br /&gt;
sudo ufw allow 16384:32768/udp&lt;br /&gt;
sudo ufw enable&lt;br /&gt;
sudo ufw status numbered&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In &amp;lt;code&amp;gt;/etc/default/ufw&amp;lt;/code&amp;gt; muss &amp;lt;code&amp;gt;IPV6=yes&amp;lt;/code&amp;gt; stehen, damit die Regeln auch für IPv6 gelten (das ist bei Ubuntu die Voreinstellung). Danach in einem &amp;#039;&amp;#039;&amp;#039;zweiten&amp;#039;&amp;#039;&amp;#039; Terminal prüfen, ob eine neue SSH-Verbindung klappt, bevor man das erste schließt.&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
Das offizielle Skript &amp;lt;code&amp;gt;bbb-install.sh&amp;lt;/code&amp;gt; erledigt alles: Pakete, Docker, nginx, Zertifikat, TURN-Server und Greenlight. Erst herunterladen und ansehen, dann starten:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo -i&lt;br /&gt;
wget -O bbb-install.sh https://raw.githubusercontent.com/bigbluebutton/bbb-install/v4.0.x-release/bbb-install.sh&lt;br /&gt;
chmod 700 bbb-install.sh&lt;br /&gt;
./bbb-install.sh -h        # alle Schalter anzeigen&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Aufruf mit der eigenen Firewall (&amp;lt;code&amp;gt;-W&amp;lt;/code&amp;gt;) und Greenlight (&amp;lt;code&amp;gt;-g&amp;lt;/code&amp;gt;):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nohup ./bbb-install.sh -v noble-400 -s bbb.example.org -e admin@example.org -g -W &amp;gt; bbb-install.log 2&amp;gt;&amp;amp;1 &amp;amp;&lt;br /&gt;
tail -f bbb-install.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wer SSH auf Port 22 hat und die Firewall vom Skript einrichten lässt, lässt &amp;lt;code&amp;gt;-W&amp;lt;/code&amp;gt; weg.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Schalter !! Bedeutung&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;-v noble-400&amp;lt;/code&amp;gt; || BigBlueButton 4.0 auf Ubuntu 24.04&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;-s&amp;lt;/code&amp;gt; || Name des Servers&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;-e&amp;lt;/code&amp;gt; || Mailadresse für Let&amp;#039;s Encrypt&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;-g&amp;lt;/code&amp;gt; || Greenlight (Weboberfläche für Räume) installieren&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;-W&amp;lt;/code&amp;gt; || keine &amp;lt;code&amp;gt;ufw&amp;lt;/code&amp;gt;-Einrichtung durch das Skript&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;-m /pfad&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;/var/bigbluebutton&amp;lt;/code&amp;gt; auf ein eigenes Volume legen (Aufzeichnungen)&lt;br /&gt;
|}&lt;br /&gt;
Die Installation dauert einige Minuten. Das Log enthält am Ende die Datenbank-Zugangsdaten von Greenlight und gehört deshalb nach der Installation gelöscht oder in ein sicheres Verzeichnis verschoben.&lt;br /&gt;
&lt;br /&gt;
=Prüfen=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo bbb-conf --status      # alle Dienste müssen active sein&lt;br /&gt;
sudo bbb-conf --check       # Hinweise zur Konfiguration&lt;br /&gt;
sudo certbot certificates   # Zertifikat und Ablaufdatum&lt;br /&gt;
sudo docker ps              # greenlight-v3, postgres, redis&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Von einem anderen Rechner:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl -4 https://bbb.example.org/bigbluebutton/api    # returncode SUCCESS&lt;br /&gt;
curl -6 https://bbb.example.org/bigbluebutton/api&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ein &amp;lt;code&amp;gt;502&amp;lt;/code&amp;gt; direkt nach dem Start ist normal, solange Greenlight hochfährt. Nach einer halben Minute sollte &amp;lt;code&amp;gt;https://bbb.example.org/b&amp;lt;/code&amp;gt; antworten.&lt;br /&gt;
&lt;br /&gt;
=Greenlight-Administrator=&lt;br /&gt;
Zu Beginn gibt es noch kein Benutzerkonto. Das Administratorkonto legt man im Container an:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo docker exec -it greenlight-v3 bundle exec rake admin:create[&amp;quot;Name&amp;quot;,&amp;quot;admin@example.org&amp;quot;,&amp;quot;EIN-LANGES-PASSWORT&amp;quot;]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Das Passwort steht dann in der Shell-Historie. Besser direkt danach in Greenlight ändern und die Historie bereinigen. Anmelden unter &amp;lt;code&amp;gt;https://bbb.example.org/b&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=IPv4 und IPv6=&lt;br /&gt;
*Die &amp;#039;&amp;#039;&amp;#039;Weboberfläche&amp;#039;&amp;#039;&amp;#039;, Greenlight und die Schnittstelle sind über &amp;#039;&amp;#039;&amp;#039;IPv4 und IPv6&amp;#039;&amp;#039;&amp;#039; erreichbar (wenn A- und AAAA-Eintrag sowie die ufw-Regeln für beide da sind).&lt;br /&gt;
*Die &amp;#039;&amp;#039;&amp;#039;Medien&amp;#039;&amp;#039;&amp;#039; (Audio, Video) und der eingebaute TURN-Server sind in der Voreinstellung &amp;#039;&amp;#039;&amp;#039;nur an die IPv4-Adresse&amp;#039;&amp;#039;&amp;#039; gebunden: &amp;lt;code&amp;gt;listening-ip&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;/etc/turnserver.conf&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;announcedIp&amp;lt;/code&amp;gt; bei Mediasoup und LiveKit. Ein Teilnehmer nur mit IPv6 kommt damit ins Webinterface, aber nicht in die Medienströme. Die üblichen Rechner mit beiden Adressen nutzen für die Medien IPv4 und merken nichts davon.&lt;br /&gt;
&lt;br /&gt;
=Zertifikat und Updates=&lt;br /&gt;
*Das Zertifikat erneuert &amp;lt;code&amp;gt;certbot&amp;lt;/code&amp;gt; automatisch (Timer &amp;lt;code&amp;gt;certbot.timer&amp;lt;/code&amp;gt;). Test: &amp;lt;code&amp;gt;sudo certbot renew --dry-run&amp;lt;/code&amp;gt;&lt;br /&gt;
*Aktualisieren innerhalb der Version: dasselbe Skript noch einmal mit denselben Schaltern aufrufen.&lt;br /&gt;
*Von einer anderen Hauptversion oder anderem Ubuntu aus wird nicht aktualisiert, sondern auf einem neuen Server neu aufgebaut.&lt;br /&gt;
&lt;br /&gt;
=Hinweise aus der Praxis=&lt;br /&gt;
*Im Log erscheinen Fehler von &amp;lt;code&amp;gt;update-alternatives&amp;lt;/code&amp;gt; für Java-Werkzeuge. Sie sind harmlos.&lt;br /&gt;
*Ein Fehler von &amp;lt;code&amp;gt;freeswitch.service&amp;lt;/code&amp;gt; beim ersten Start wird vom Skript durch einen Neustart behoben. Kontrolle: &amp;lt;code&amp;gt;sudo bbb-conf --status&amp;lt;/code&amp;gt;.&lt;br /&gt;
*Die Meldung, eine Greenlight-Datei für nginx fehle, kommt beim ersten Lauf, danach wird sie angelegt.&lt;br /&gt;
*Skript, Version und Schalter ändern sich. Immer zuerst &amp;lt;code&amp;gt;./bbb-install.sh -h&amp;lt;/code&amp;gt; und die Dokumentation lesen.&lt;br /&gt;
&lt;br /&gt;
=Quelle=&lt;br /&gt;
*https://docs.bigbluebutton.org/administration/install/&lt;br /&gt;
*https://github.com/bigbluebutton/bbb-install&lt;br /&gt;
*[[BigBlueButton]]&lt;br /&gt;
*[[BigBlueButton hardening]]&lt;/div&gt;</summary>
		<author><name>Thomas.will@claude</name></author>
	</entry>
</feed>