Hi.
Wer (ein aktuelles) BBB in einem docker laufen lassen will, weil er/sie nebenher noch andere Dienste auf dem Server haben will, ohne gleich die ganze Virtualisierung für 16.04 anzuschmeißen, dafür gibt es mindestens einen Ansatz:
GitHub - alangecker/bigbluebutton-docker: Docker files for BigBluebutton
Danke an @dorian, wie er unten ausführt, ist das Repository von alangecker inzwischen in ein offizielles Docker-Repo übergegangen.
Dort die Anleitung befolgen… ein skript erzeugt aktuelle Dockercontainer aus den stabilen BBB-Sourcen … wenn man keinen weiteren Dienst (in docker) laufen lassen, dann ist das auch schon alles, aber dafür kann man ja auch @thoschi s script: 02_bbb · master · thoschi / bigbluebutton-scripts · GitLab (ohne docker) oder das bbb-install.sh nehmen.
Eigener nginx-reverse-proxy
Ich habe bei der Einrichtung „externen http-server“ gewählt, weil ich die LE-ZErtifikate selbst regeln will und auch noch andere docker-dienste laufen lassen will.
vorab: Greenlight auf externe-IP:8080 lauschen lassen?
Dass Greenlight auf port 8080 nach außen offen ist, hat mich gestört. Folgende manuelle Änderung lässt den Greenlight nicht mehr nach außen auf port 8080 erscheinen (man kann auch die FW von außen auf dem Port schließen stattdessen). Ob diese Änderung noch andere Probleme bei der vollen Nutzung der BBB-Sitzungen inkl. Aufnahme etc. bringt, weiß ich nicht. Ist nur eine Idee:
diff --git a/docker-compose.yml b/docker-compose.yml
index d95620e..99723b7 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -58,13 +58,18 @@ services:
- bigbluebutton:/var/bigbluebutton
- html5-static:/html5-static:ro
- ${DEFAULT_PRESENTATION:-/dev/null}:/etc/nginx/html/default.pdf
- network_mode: host
+ #network_mode: host
extra_hosts:
- "host.docker.internal:10.7.7.1"
- "core:10.7.7.2"
- "etherpad:10.7.7.4"
- "webrtc-sfu:10.7.7.10"
- "html5:10.7.7.11"
+ networks:
+ bbb-net:
+ ipv4_address: 10.7.7.20
+ ports:
+ - "10.7.7.1:8080:8080"
etherpad:
build: mod/etherpad
Jetzt läuft der Greenlight im sowieso eigenen Netzwerk unter einen IP und der Port wird von dem Gateway dieses Netzes nach „draußen“ gereicht, aber nicht auf die externe IP…
reverse-proxy auf dem Host:
Wer jetzt einen nginx-reverse-proxy auf dem Host hat, der hat es relativ einfach, er muss nur diesen auf localhost:8080 (oder 10.7.7.1:8080) zeigen lassen, wenn die Greenlight-Anfragen von außen kommen. Hier gibt es dafür einen Konfigurationsvorschlag
reverse-proxy mit jwilder in docker
Wer den jwilder-docker nginx verwendet, der muss irgendwie den eigenen nginx-docker-container dazu bringen, den/die bbb-docker-container als proxy-ziel zu verwenden. Ist auch wieder hackisch, cwempe hat hier einen Vorschlag. Ich nutze die Variante ein eigenes nginx.tmpl abzulegen.
Man kann sicher auch versuchen über gemeinsame Netzwerke beide docker-WElten miteinander zu verbinden → zu komplex für mich.
meine relevante Config lautet dann:
version: "2"
services:
## Proxy
proxy:
container_name: proxy
restart: always
image: jwilder/nginx-proxy:latest
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
- ./proxy/certs:/etc/nginx/certs:ro
- ./proxy/vhost.d:/etc/nginx/vhost.d
- ./proxy/html:/usr/share/nginx/html
- ./proxy/nginx.tmpl:/app/nginx.tmpl # if you need a custom (global) nginx template
labels:
- "com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy"
## Letsencrypt
proxy-le-companion:
container_name: proxy-letsencrypt
restart: always
image: jrcs/letsencrypt-nginx-proxy-companion:latest
volumes:
- ./proxy/certs:/etc/nginx/certs:rw
- /var/run/docker.sock:/var/run/docker.sock:ro
volumes_from:
- proxy
## BigBlueButton/Greenlight Production
bbb:
image: debian:buster-slim
container_name: bbb
command: tail -f /dev/null
restart: unless-stopped
environment:
- "VIRTUAL_HOST=bbb.meine-schule.de"
- "VIRTUAL_PORT=8080"
- "UPSTREAM_NAME=10.7.7.1" ## oder Externe IP, wenn man den obigen Hack nicht hat
- "VIRTUAL_PROTO=http"
- "LETSENCRYPT_HOST=bbb.meine-schule.de"
- "LETSENCRYPT_EMAIL=mail@meine-schule.de"
#- "LETSENCRYPT_TEST=true"
Fazit:
Letztendlich habe ich auf dem server zwei Docker-systeme:
/srv/docker/docker-compose.yml
/srv/docker/proxy/{certs,html,vhost.d}
/srv/docker/proxy/nginx.tmpl
/srv/docker/weitere-container-wie-nextcloud-o.ä.
welches mit docker-compose up -d
in dem Verzeichnis gestartet wird
und
/srv/docker/bbb-docker/*
welches momentan (noch) mit /srv/docker/bbb-docker/scripts/compose up -d
hochgefahren wird, wie vom Autor empfohlen.
- Jetzt kann man BBB unabhängig von dem Rest auf dem Server betreiben und auch updaten und auch mal v2.3 ausprobieren usw.
- Einzig der Hack für 10.7.7.1:8080 ist nicht upgrade-kompatibel…
- Kein Gewähr…
- Nachteil: (noch) nicht richtig ansible-sierbar, wie jemand anmerkte…
VG, Tobias