mirror of
https://github.com/bigbluebutton/docker.git
synced 2025-08-12 14:07:06 +02:00
Compare commits
58 Commits
Author | SHA1 | Date | |
---|---|---|---|
22b80c2d03 | |||
00322d156c | |||
f8ffbcd31b | |||
f3ae0f1fd2 | |||
954100d55e | |||
90cfd3471f | |||
c2d85d6e45 | |||
0bca06023d | |||
58bbbed7cf | |||
4cff64c1a0 | |||
958f1ecd8e | |||
b82f6fbd70 | |||
60b3775308 | |||
109547ffed | |||
e2fa77fe48 | |||
3ae8ebc906 | |||
9710700521 | |||
8c1ae1e48b | |||
50a4020111 | |||
3eddef1a1c | |||
3c1e5c7bee | |||
72355362c8 | |||
06a5921874 | |||
0344b0e4c1 | |||
bd2e7fbf9e | |||
0257ba7025 | |||
6b5d8c853d | |||
81b02de14a | |||
d5164ecef9 | |||
859e61af06 | |||
1fbf11a9fa | |||
f10979f8e4 | |||
44c2f9489c | |||
38441f5182 | |||
917d180661 | |||
a55a09f6cd | |||
efaba305e1 | |||
711b47d844 | |||
43ef3aeb88 | |||
ce8f12fc60 | |||
3d433f8a5c | |||
0766a4033c | |||
2a0cd91e72 | |||
ad484aa870 | |||
bf353adb13 | |||
7573c6f634 | |||
024d222b8b | |||
366be0a17c | |||
ef295301b5 | |||
cef23f8236 | |||
d8587b0e33 | |||
81c3cacf29 | |||
f30496d430 | |||
f2fe7959bb | |||
bfa6679ff0 | |||
fc74f2a8b8 | |||
c181ee9665 | |||
ad6b0d2d38 |
1
.gitignore
vendored
1
.gitignore
vendored
@ -15,3 +15,4 @@ docker-compose.override.yml
|
|||||||
# App generated
|
# App generated
|
||||||
.env
|
.env
|
||||||
postgres-data
|
postgres-data
|
||||||
|
greenlight-data
|
24
CHANGELOG.md
24
CHANGELOG.md
@ -1,7 +1,29 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
## Unreleased
|
## Unreleased
|
||||||
- BBB 2.5.4 @alangecker
|
- BigBlueButton 2.7.3 @alangecker
|
||||||
|
|
||||||
|
|
||||||
|
## Release v2.7.0 (2023-09)
|
||||||
|
- BigBlueButton 2.7.0 @alangecker [#291](https://github.com/bigbluebutton/docker/pull/291)
|
||||||
|
- Update to ComposeV2 @leonidas-o [#271](https://github.com/bigbluebutton/docker/pull/271)
|
||||||
|
- recordings: fix for missing `SHARED_SECRET` @ichdasich [#274](https://github.com/bigbluebutton/docker/issues/274) [#268](https://github.com/bigbluebutton/docker/issues/268)
|
||||||
|
- Add RESOLVER_ADDRESS to env for docker-nginx-auto-ssl @pkolmann [#277](https://github.com/bigbluebutton/docker/pull/277)
|
||||||
|
- Fix learning-dashboard @yanus [#262](https://github.com/bigbluebutton/docker/pull/262)
|
||||||
|
|
||||||
|
## Release v2.6.0-2 (2023-04-04)
|
||||||
|
- hotfix for broken freeswitch container due to enabled compresion with max file count == 1 [#260](https://github.com/bigbluebutton/docker/issues/260)
|
||||||
|
|
||||||
|
## Release v2.6.0 (2023-04-03)
|
||||||
|
- **Breaking change:** Greenlight v3 (see [upgrade note](docs/upgrading.md) @alangecker [#255](https://github.com/bigbluebutton/docker/pull/255)
|
||||||
|
- BigBlueButton v2.6 @alangecker [#255](https://github.com/bigbluebutton/docker/pull/255)
|
||||||
|
- Set client_max_body_size for greenlight @nr23730 [#252](https://github.com/bigbluebutton/docker/pull/252)
|
||||||
|
- self building freeswitch (applying patches and independent from external apt repos) @alangecker
|
||||||
|
- reduce amount of logs with senstivie data @alangecker
|
||||||
|
|
||||||
|
## Release v2.5.8 (2022-11-06)
|
||||||
|
- BBB 2.5.8 @alangecker [#238](https://github.com/bigbluebutton/docker/pull/238)
|
||||||
|
- recordings: fix for missing ffmpeg filter @alangecker [#235](https://github.com/bigbluebutton/docker/issues/235) [#230](https://github.com/bigbluebutton/docker/pull/230)
|
||||||
|
|
||||||
## Release v2.5.0 (2022-06-10)
|
## Release v2.5.0 (2022-06-10)
|
||||||
- BigBlueButton v2.5 @alangecker [#207](https://github.com/bigbluebutton/docker/pull/207)
|
- BigBlueButton v2.5 @alangecker [#207](https://github.com/bigbluebutton/docker/pull/207)
|
||||||
|
20
README.md
20
README.md
@ -1,9 +1,9 @@
|
|||||||
<img width="1012" alt="bbb-docker-banner" src="https://user-images.githubusercontent.com/1273169/141153216-0386cd4e-0aaf-473a-8f42-a048e52ed0d7.png">
|
<img width="1012" alt="bbb-docker-banner" src="https://user-images.githubusercontent.com/1273169/141153216-0386cd4e-0aaf-473a-8f42-a048e52ed0d7.png">
|
||||||
|
|
||||||
|
|
||||||
# 📦 BigBlueButton 2.5 Docker
|
# 📦 BigBlueButton 2.7 Docker
|
||||||
|
|
||||||
Version: 2.5.2 | [Changelog](CHANGELOG.md) | [Issues](https://github.com/bigbluebutton/docker/issues)
|
Version: 2.7.3 | [Changelog](CHANGELOG.md) | [Issues](https://github.com/bigbluebutton/docker/issues)
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
- Easy installation
|
- Easy installation
|
||||||
@ -13,19 +13,25 @@ Version: 2.5.2 | [Changelog](CHANGELOG.md) | [Issues](https://github.com/bigblue
|
|||||||
- Full IPv6 support
|
- Full IPv6 support
|
||||||
- Runs on any major linux distributon (Debian, Ubuntu, CentOS,...)
|
- Runs on any major linux distributon (Debian, Ubuntu, CentOS,...)
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
- 4GB of RAM
|
||||||
|
- Linux (it will not work under WSL)
|
||||||
|
- Root access (bbb-docker uses host networking, so it won't work with Kubernetes, any "CaaS"-Service, etc.)
|
||||||
|
- Public IPv4 (expect issues with a firewall / NAT)
|
||||||
|
|
||||||
## What is not implemented yet
|
## What is not implemented yet
|
||||||
- bbb-lti
|
- bbb-lti
|
||||||
|
|
||||||
## Install
|
## Install
|
||||||
1. Install docker-ce & docker-compose
|
1. Install docker-ce & docker-compose-plugin
|
||||||
1. follow instructions
|
1. follow instructions
|
||||||
* Debian: https://docs.docker.com/engine/install/debian/
|
* Debian: https://docs.docker.com/engine/install/debian/
|
||||||
* CentOS: https://docs.docker.com/engine/install/centos/
|
* CentOS: https://docs.docker.com/engine/install/centos/
|
||||||
* Fedora: https://docs.docker.com/engine/install/fedora/
|
* Fedora: https://docs.docker.com/engine/install/fedora/
|
||||||
* Ubuntu: https://docs.docker.com/engine/install/ubuntu/
|
* Ubuntu: https://docs.docker.com/engine/install/ubuntu/
|
||||||
2. Ensure docker works with `$ docker run hello-world`
|
2. Ensure docker works with `$ docker run hello-world`
|
||||||
3. Install docker-compose: https://docs.docker.com/compose/install/
|
3. Install docker compose V2: https://docs.docker.com/compose/install/
|
||||||
4. Ensure docker-compose works and that you use a version ≥ 1.28 : `$ docker-compose --version`
|
4. Ensure docker compose works and that you use a version ≥ 1.28 : `$ docker compose --version`
|
||||||
2. Clone this repository
|
2. Clone this repository
|
||||||
```sh
|
```sh
|
||||||
$ git clone --recurse-submodules https://github.com/bigbluebutton/docker.git bbb-docker
|
$ git clone --recurse-submodules https://github.com/bigbluebutton/docker.git bbb-docker
|
||||||
@ -46,11 +52,11 @@ Version: 2.5.2 | [Changelog](CHANGELOG.md) | [Issues](https://github.com/bigblue
|
|||||||
```
|
```
|
||||||
5. Start containers:
|
5. Start containers:
|
||||||
```bash
|
```bash
|
||||||
$ docker-compose up -d
|
$ docker compose up -d
|
||||||
```
|
```
|
||||||
6. If you use greenlight, you can create an admin account with:
|
6. If you use greenlight, you can create an admin account with:
|
||||||
```bash
|
```bash
|
||||||
$ docker-compose exec greenlight bundle exec rake admin:create
|
$ docker compose exec greenlight bundle exec rake admin:create
|
||||||
```
|
```
|
||||||
|
|
||||||
## Further How-To's
|
## Further How-To's
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{{/* if you read this, you can ignore the following lines */}}
|
{{/* if you read this, you can ignore the following lines */}}
|
||||||
# auto generated by ./scripts/generate
|
# auto generated by ./scripts/generate-compose
|
||||||
# don't edit this directly.
|
# don't edit this directly.
|
||||||
{{/* -------- */}}
|
{{/* -------- */}}
|
||||||
|
|
||||||
@ -53,6 +53,7 @@ services:
|
|||||||
depends_on:
|
depends_on:
|
||||||
- redis
|
- redis
|
||||||
- etherpad
|
- etherpad
|
||||||
|
- bbb-pads
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: wget --no-proxy --no-verbose --tries=1 --spider http://10.7.7.2:8090/bigbluebutton/api || exit 1
|
test: wget --no-proxy --no-verbose --tries=1 --spider http://10.7.7.2:8090/bigbluebutton/api || exit 1
|
||||||
start_period: 2m
|
start_period: 2m
|
||||||
@ -106,7 +107,10 @@ services:
|
|||||||
build:
|
build:
|
||||||
context: mod/freeswitch
|
context: mod/freeswitch
|
||||||
args:
|
args:
|
||||||
|
BBB_BUILD_TAG: {{ .Env.BBB_BUILD_TAG }}
|
||||||
|
TAG_FS_BUILD_FILES: {{ .Env.TAG_FS_BUILD_FILES }}
|
||||||
TAG_FS_CONFIG: {{ .Env.TAG_FS_CONFIG }}
|
TAG_FS_CONFIG: {{ .Env.TAG_FS_CONFIG }}
|
||||||
|
TAG_FREESWITCH: {{ .Env.TAG_FREESWITCH }}
|
||||||
image: alangecker/bbb-docker-freeswitch:{{ .Env.TAG_FS_CONFIG }}
|
image: alangecker/bbb-docker-freeswitch:{{ .Env.TAG_FS_CONFIG }}
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
cap_add:
|
cap_add:
|
||||||
@ -130,13 +134,21 @@ services:
|
|||||||
- ./conf/dialplan_public:/etc/freeswitch/dialplan/public_docker
|
- ./conf/dialplan_public:/etc/freeswitch/dialplan/public_docker
|
||||||
- vol-freeswitch:/var/freeswitch/meetings
|
- vol-freeswitch:/var/freeswitch/meetings
|
||||||
network_mode: host
|
network_mode: host
|
||||||
|
logging:
|
||||||
|
# reduce logs to a minimum, so `docker compose logs -f` still works
|
||||||
|
driver: "local"
|
||||||
|
options:
|
||||||
|
max-size: "10k"
|
||||||
|
max-file: "1"
|
||||||
|
compress: "false"
|
||||||
|
|
||||||
nginx:
|
nginx:
|
||||||
build:
|
build:
|
||||||
context: mod/nginx
|
context: mod/nginx
|
||||||
args:
|
args:
|
||||||
|
BBB_BUILD_TAG: {{ .Env.BBB_BUILD_TAG }}
|
||||||
TAG_LEARNING_DASHBOARD: {{ .Env.TAG_LEARNING_DASHBOARD }}
|
TAG_LEARNING_DASHBOARD: {{ .Env.TAG_LEARNING_DASHBOARD }}
|
||||||
image: alangecker/bbb-docker-nginx:1.21-{{ .Env.TAG_PLAYBACK }}-{{ .Env.TAG_LEARNING_DASHBOARD }}
|
image: alangecker/bbb-docker-nginx:1.23-{{ .Env.TAG_PLAYBACK }}-{{ .Env.TAG_LEARNING_DASHBOARD }}
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
depends_on:
|
depends_on:
|
||||||
- etherpad
|
- etherpad
|
||||||
@ -153,10 +165,11 @@ services:
|
|||||||
- "etherpad:10.7.7.4"
|
- "etherpad:10.7.7.4"
|
||||||
- "webrtc-sfu:10.7.7.1"
|
- "webrtc-sfu:10.7.7.1"
|
||||||
- "html5:10.7.7.11"
|
- "html5:10.7.7.11"
|
||||||
|
- "greenlight:10.7.7.21"
|
||||||
|
|
||||||
etherpad:
|
etherpad:
|
||||||
build: mod/etherpad
|
build: mod/etherpad
|
||||||
image: alangecker/bbb-docker-etherpad:1.8.18-3
|
image: alangecker/bbb-docker-etherpad:1.9.1
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
depends_on:
|
depends_on:
|
||||||
- redis
|
- redis
|
||||||
@ -180,7 +193,7 @@ services:
|
|||||||
ipv4_address: 10.7.7.18
|
ipv4_address: 10.7.7.18
|
||||||
|
|
||||||
redis:
|
redis:
|
||||||
image: redis:7.0-alpine
|
image: redis:7.2-alpine
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "redis-cli", "ping"]
|
test: ["CMD", "redis-cli", "ping"]
|
||||||
@ -210,7 +223,7 @@ services:
|
|||||||
|
|
||||||
# TODO: remove as soon as not required anymore by webrtc-sfu
|
# TODO: remove as soon as not required anymore by webrtc-sfu
|
||||||
kurento:
|
kurento:
|
||||||
image: kurento/kurento-media-server:6.17
|
image: kurento/kurento-media-server:6.18
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
network_mode: host
|
network_mode: host
|
||||||
volumes:
|
volumes:
|
||||||
@ -226,11 +239,14 @@ services:
|
|||||||
depends_on:
|
depends_on:
|
||||||
- redis
|
- redis
|
||||||
- freeswitch
|
- freeswitch
|
||||||
|
- kurento
|
||||||
environment:
|
environment:
|
||||||
CLIENT_HOST: 10.7.7.1
|
CLIENT_HOST: 10.7.7.1
|
||||||
REDIS_HOST: 10.7.7.5
|
REDIS_HOST: 10.7.7.5
|
||||||
FREESWITCH_IP: 10.7.7.1
|
FREESWITCH_IP: 10.7.7.1
|
||||||
FREESWITCH_SIP_IP: ${EXTERNAL_IPv4}
|
FREESWITCH_SIP_IP: ${EXTERNAL_IPv4}
|
||||||
|
MCS_HOST: 0.0.0.0
|
||||||
|
MCS_ADDRESS: 127.0.0.1
|
||||||
ESL_IP: 10.7.7.1
|
ESL_IP: 10.7.7.1
|
||||||
ESL_PASSWORD: ${FSESL_PASSWORD:-ClueCon}
|
ESL_PASSWORD: ${FSESL_PASSWORD:-ClueCon}
|
||||||
# TODO: add mediasoup IPv6
|
# TODO: add mediasoup IPv6
|
||||||
@ -288,6 +304,8 @@ services:
|
|||||||
jodconverter:
|
jodconverter:
|
||||||
build: mod/jodconverter
|
build: mod/jodconverter
|
||||||
image: alangecker/bbb-docker-jodconverter:latest
|
image: alangecker/bbb-docker-jodconverter:latest
|
||||||
|
security_opt:
|
||||||
|
- 'no-new-privileges:true'
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
tmpfs:
|
tmpfs:
|
||||||
- /tmp
|
- /tmp
|
||||||
@ -301,7 +319,7 @@ services:
|
|||||||
|
|
||||||
periodic:
|
periodic:
|
||||||
build: mod/periodic
|
build: mod/periodic
|
||||||
image: alangecker/bbb-docker-periodic:v2.5.0-rc.1
|
image: alangecker/bbb-docker-periodic:v2.7.0
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
depends_on:
|
depends_on:
|
||||||
- mongodb
|
- mongodb
|
||||||
@ -327,6 +345,7 @@ services:
|
|||||||
args:
|
args:
|
||||||
BBB_BUILD_TAG: {{ .Env.BBB_BUILD_TAG }}
|
BBB_BUILD_TAG: {{ .Env.BBB_BUILD_TAG }}
|
||||||
TAG_RECORDINGS: {{ .Env.TAG_RECORDINGS }}
|
TAG_RECORDINGS: {{ .Env.TAG_RECORDINGS }}
|
||||||
|
TAG_BBB_PRESENTATION_VIDEO: {{ .Env.TAG_BBB_PRESENTATION_VIDEO }}
|
||||||
image: alangecker/bbb-docker-recordings:{{ .Env.TAG_RECORDINGS }}
|
image: alangecker/bbb-docker-recordings:{{ .Env.TAG_RECORDINGS }}
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
depends_on:
|
depends_on:
|
||||||
@ -334,6 +353,7 @@ services:
|
|||||||
- bbb-pads
|
- bbb-pads
|
||||||
environment:
|
environment:
|
||||||
DOMAIN: ${DOMAIN}
|
DOMAIN: ${DOMAIN}
|
||||||
|
SHARED_SECRET: ${SHARED_SECRET}
|
||||||
volumes:
|
volumes:
|
||||||
- bigbluebutton:/var/bigbluebutton
|
- bigbluebutton:/var/bigbluebutton
|
||||||
- vol-freeswitch:/var/freeswitch/meetings
|
- vol-freeswitch:/var/freeswitch/meetings
|
||||||
@ -375,12 +395,19 @@ services:
|
|||||||
{{else}}
|
{{else}}
|
||||||
- ./mod/https/site-ipv4only.conf:/etc/nginx/conf.d/bbb-docker.conf
|
- ./mod/https/site-ipv4only.conf:/etc/nginx/conf.d/bbb-docker.conf
|
||||||
{{end}}
|
{{end}}
|
||||||
|
{{ if isTrue .Env.DEV_MODE }}
|
||||||
|
# allow bbb api access without https
|
||||||
|
- ./mod/https/force-https.conf:/usr/local/openresty/nginx/conf/force-https.conf
|
||||||
|
{{end}}
|
||||||
environment:
|
environment:
|
||||||
{{ if isTrue .Env.DEV_MODE }}
|
{{ if isTrue .Env.DEV_MODE }}
|
||||||
ALLOWED_DOMAINS: ""
|
ALLOWED_DOMAINS: ""
|
||||||
{{else}}
|
{{else}}
|
||||||
ALLOWED_DOMAINS: ${DOMAIN}
|
ALLOWED_DOMAINS: ${DOMAIN}
|
||||||
{{end}}
|
{{end}}
|
||||||
|
{{ if .Env.RESOLVER_ADDRESS }}
|
||||||
|
RESOLVER_ADDRESS: ${RESOLVER_ADDRESS}
|
||||||
|
{{end}}
|
||||||
network_mode: host
|
network_mode: host
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|
||||||
@ -412,29 +439,35 @@ services:
|
|||||||
{{ if isTrue .Env.ENABLE_GREENLIGHT }}
|
{{ if isTrue .Env.ENABLE_GREENLIGHT }}
|
||||||
# greenlight
|
# greenlight
|
||||||
greenlight:
|
greenlight:
|
||||||
image: bigbluebutton/greenlight:v2
|
image: bigbluebutton/greenlight:{{ .Env.TAG_GREENLIGHT }}
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
env_file: .env
|
env_file: .env
|
||||||
|
depends_on:
|
||||||
|
- postgres
|
||||||
|
- redis
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
DB_ADAPTER: postgresql
|
DATABASE_URL: postgres://postgres:${POSTGRESQL_SECRET:-password}@postgres:5432/greenlight-v3
|
||||||
DB_HOST: postgres
|
REDIS_URL: redis://redis:6379
|
||||||
DB_NAME: greenlight
|
|
||||||
DB_USERNAME: postgres
|
|
||||||
DB_PASSWORD: ${POSTGRESQL_SECRET:-password}
|
|
||||||
{{ if isTrue .Env.DEV_MODE }}
|
{{ if isTrue .Env.DEV_MODE }}
|
||||||
BIGBLUEBUTTON_ENDPOINT: http://10.7.7.1:48087/bigbluebutton/api/
|
BIGBLUEBUTTON_ENDPOINT: http://10.7.7.1/bigbluebutton/api
|
||||||
{{else}}
|
{{else}}
|
||||||
BIGBLUEBUTTON_ENDPOINT: https://${DOMAIN}/bigbluebutton/api/
|
BIGBLUEBUTTON_ENDPOINT: https://${DOMAIN}/bigbluebutton/api
|
||||||
{{end}}
|
{{end}}
|
||||||
BIGBLUEBUTTON_SECRET: ${SHARED_SECRET}
|
BIGBLUEBUTTON_SECRET: ${SHARED_SECRET}
|
||||||
SECRET_KEY_BASE: ${RAILS_SECRET}
|
SECRET_KEY_BASE: ${RAILS_SECRET}
|
||||||
ports:
|
RELATIVE_URL_ROOT: /
|
||||||
- 10.7.7.1:5000:80
|
volumes:
|
||||||
|
- ./greenlight-data:/usr/src/app/storage
|
||||||
|
networks:
|
||||||
|
bbb-net:
|
||||||
|
ipv4_address: 10.7.7.21
|
||||||
|
|
||||||
postgres:
|
postgres:
|
||||||
image: postgres:12-alpine
|
image: postgres:12-alpine
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
environment:
|
environment:
|
||||||
POSTGRES_DB: greenlight
|
POSTGRES_DB: greenlight-v3
|
||||||
POSTGRES_USER: postgres
|
POSTGRES_USER: postgres
|
||||||
POSTGRES_PASSWORD: ${POSTGRESQL_SECRET:-password}
|
POSTGRES_PASSWORD: ${POSTGRESQL_SECRET:-password}
|
||||||
healthcheck:
|
healthcheck:
|
||||||
@ -444,6 +477,9 @@ services:
|
|||||||
retries: 5
|
retries: 5
|
||||||
volumes:
|
volumes:
|
||||||
- ./postgres-data:/var/lib/postgresql/data
|
- ./postgres-data:/var/lib/postgresql/data
|
||||||
|
networks:
|
||||||
|
bbb-net:
|
||||||
|
ipv4_address: 10.7.7.22
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|
||||||
{{ if isTrue .Env.ENABLE_PROMETHEUS_EXPORTER }}
|
{{ if isTrue .Env.ENABLE_PROMETHEUS_EXPORTER }}
|
||||||
|
@ -30,7 +30,7 @@ TURN_SERVER=turns:localhost:5349?transport=tcp
|
|||||||
TURN_SECRET=SuperTurnSecret
|
TURN_SECRET=SuperTurnSecret
|
||||||
SHARED_SECRET=SuperSecret
|
SHARED_SECRET=SuperSecret
|
||||||
ETHERPAD_API_KEY=SuperEtherpadKey
|
ETHERPAD_API_KEY=SuperEtherpadKey
|
||||||
RAILS_SECRET=SuperRailsSecret
|
RAILS_SECRET=SuperRailsSecret_SuperRailsSecret
|
||||||
|
|
||||||
# ====================================
|
# ====================================
|
||||||
# CUSTOMIZATION
|
# CUSTOMIZATION
|
||||||
@ -42,27 +42,27 @@ RAILS_SECRET=SuperRailsSecret
|
|||||||
- regenerate `docker-compose.yml` \
|
- regenerate `docker-compose.yml` \
|
||||||
`$ ./scripts/generate-compose`
|
`$ ./scripts/generate-compose`
|
||||||
- build the images \
|
- build the images \
|
||||||
`$ docker-compose build`
|
`$ docker compose build`
|
||||||
- you can than start it with \
|
- you can than start it with \
|
||||||
`$ docker-compose up -d`
|
`$ docker compose up -d`
|
||||||
- view the logs with \
|
- view the logs with \
|
||||||
`$ docker-compose logs -f`
|
`$ docker compose logs -f`
|
||||||
- and access the API via \
|
- and access the API via \
|
||||||
https://mconf.github.io/api-mate/#server=https://10.7.7.1/bigbluebutton/api&sharedSecret=SuperSecret
|
https://mconf.github.io/api-mate/#server=https://10.7.7.1/bigbluebutton/api&sharedSecret=SuperSecret
|
||||||
* At some point your browser will warn you about an invalid certificate, but you can press _"Accept the Risk and Continue" / "Proceed to 10.7.7.1 (unsafe)"_
|
* At some point your browser will warn you about an invalid certificate, but you can press _"Accept the Risk and Continue" / "Proceed to 10.7.7.1 (unsafe)"_
|
||||||
|
|
||||||
|
|
||||||
## Notes
|
## Notes
|
||||||
- Joining a room via Greenlight currently leads to a "401 session not found" error (see https://github.com/alangecker/bigbluebutton-docker/issues/66). Use the API Mate instead
|
- Due to the self signed ssl certificate it is currently not possible to notify greenlight about recordings in dev mode
|
||||||
|
|
||||||
## Changes
|
## Changes
|
||||||
- After doing some changes you usually must...
|
- After doing some changes you usually must...
|
||||||
- recreate `docker-compose.yml` \
|
- recreate `docker-compose.yml` \
|
||||||
`$ ./scripts/generate-compose`
|
`$ ./scripts/generate-compose`
|
||||||
* rebuild the image(s): \
|
* rebuild the image(s): \
|
||||||
`$ docker-compose build [containername]`
|
`$ docker compose build [containername]`
|
||||||
* restart changes image(s): \
|
* restart changes image(s): \
|
||||||
`$ docker-compose up -d`
|
`$ docker compose up -d`
|
||||||
|
|
||||||
|
|
||||||
## How to do create a new update for a newer BBB release?
|
## How to do create a new update for a newer BBB release?
|
||||||
|
@ -1,11 +1,16 @@
|
|||||||
# How To Upgrade bbb-docker
|
# How To Upgrade bbb-docker
|
||||||
|
|
||||||
### Upgrading `v2.3.x` -> `v2.4.x`
|
|
||||||
*Breaking change:* The nginx port changes from `8080` to the less common port `48087`, to avoid port conflicts (see [#133](https://github.com/bigbluebutton/docker/issues/133)). If you use an reverse proxy not included in this repo, ensure to update your config accordingly!
|
### Upgrading from `v2.5.x`
|
||||||
|
|
||||||
|
- *Breaking change:* Greenlight got fully rewritten
|
||||||
|
* it is starting as a fresh installation. you can migrate your data with `./scripts/greenlight-migrate-v2-v3`
|
||||||
|
* some greenlight settings under `.env` have changed. compare your version with `sample.env`
|
||||||
|
* it is now served directly under `/` and not in `/b`. If you use an reverse proxy not included in this repo, ensure to update your config accordingly!
|
||||||
|
|
||||||
apart from that follow the guide below.
|
apart from that follow the guide below.
|
||||||
|
|
||||||
### within `v2.4.x` or `v2.3.x`
|
### from `v2.6.x` or within `v2.7.x`
|
||||||
#### Backup
|
#### Backup
|
||||||
if you use greenlight, create a database backup first
|
if you use greenlight, create a database backup first
|
||||||
```bash
|
```bash
|
||||||
@ -18,5 +23,5 @@ docker exec -t docker_postgres_1 pg_dumpall -c -U postgres > /root/greenlight_`d
|
|||||||
./scripts/upgrade
|
./scripts/upgrade
|
||||||
|
|
||||||
# restart updated services
|
# restart updated services
|
||||||
docker-compose up -d
|
docker compose up -d
|
||||||
```
|
```
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
ARG BBB_BUILD_TAG
|
ARG BBB_BUILD_TAG
|
||||||
FROM gitlab.senfcall.de:5050/senfcall-public/docker-bbb-build:$BBB_BUILD_TAG AS builder
|
FROM bigbluebutton/bbb-build:$BBB_BUILD_TAG AS builder
|
||||||
|
|
||||||
ARG TAG_COMMON_MESSAGE
|
ARG TAG_COMMON_MESSAGE
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
FROM openjdk:11-jre-slim-bullseye
|
FROM eclipse-temurin:17-jre-jammy
|
||||||
|
|
||||||
RUN apt-get update && apt-get install -y \
|
RUN apt-get update && apt-get install -y \
|
||||||
wget unzip gosu locales \
|
wget unzip gosu locales \
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
FROM node:14.19.1-bullseye-slim AS builder
|
FROM node:18-bullseye-slim AS builder
|
||||||
|
|
||||||
COPY ./bbb-pads /bbb-pads
|
COPY ./bbb-pads /bbb-pads
|
||||||
RUN cd /bbb-pads && rm -r .git && npm install --production
|
RUN cd /bbb-pads && rm -r .git && npm install --production
|
||||||
@ -7,10 +7,10 @@ RUN cd /bbb-pads && rm -r .git && npm install --production
|
|||||||
RUN chmod 777 /bbb-pads/config
|
RUN chmod 777 /bbb-pads/config
|
||||||
# ------------------------------
|
# ------------------------------
|
||||||
|
|
||||||
FROM node:14.19.1-bullseye-slim
|
FROM node:18-bullseye-slim
|
||||||
|
|
||||||
RUN apt update && apt install -y jq moreutils \
|
RUN apt update && apt install -y jq moreutils \
|
||||||
&& useradd --uid 2003 --user-group bbb-pads
|
&& useradd --uid 2003 --create-home --user-group bbb-pads
|
||||||
|
|
||||||
COPY --from=builder /bbb-pads /bbb-pads
|
COPY --from=builder /bbb-pads /bbb-pads
|
||||||
USER bbb-pads
|
USER bbb-pads
|
||||||
|
Submodule mod/bbb-pads/bbb-pads updated: 3eb45a5099...433fe4c393
@ -1,5 +1,5 @@
|
|||||||
ARG BBB_BUILD_TAG
|
ARG BBB_BUILD_TAG
|
||||||
FROM gitlab.senfcall.de:5050/senfcall-public/docker-bbb-build:$BBB_BUILD_TAG AS builder
|
FROM bigbluebutton/bbb-build:$BBB_BUILD_TAG AS builder
|
||||||
|
|
||||||
ARG TAG_COMMON_MESSAGE
|
ARG TAG_COMMON_MESSAGE
|
||||||
|
|
||||||
@ -38,7 +38,7 @@ RUN unzip -q /bbb-web/build/libs/bigbluebutton-0.10.0.war -d /dist
|
|||||||
# ===================================================
|
# ===================================================
|
||||||
FROM alangecker/bbb-docker-base-java
|
FROM alangecker/bbb-docker-base-java
|
||||||
|
|
||||||
# add blank presentation files and allow conversation to pdf/svg
|
# add blank presentation files and allow conversion to pdf/svg
|
||||||
RUN mkdir -p /usr/share/bigbluebutton/blank \
|
RUN mkdir -p /usr/share/bigbluebutton/blank \
|
||||||
&& cd /usr/share/bigbluebutton/blank \
|
&& cd /usr/share/bigbluebutton/blank \
|
||||||
&& wget \
|
&& wget \
|
||||||
|
@ -24,6 +24,6 @@ cd /usr/share/bbb-web/
|
|||||||
dockerize \
|
dockerize \
|
||||||
-template /etc/bigbluebutton/bbb-web.properties.tmpl:/etc/bigbluebutton/bbb-web.properties \
|
-template /etc/bigbluebutton/bbb-web.properties.tmpl:/etc/bigbluebutton/bbb-web.properties \
|
||||||
-template /usr/share/bbb-web/WEB-INF/classes/spring/turn-stun-servers.xml.tmpl:/usr/share/bbb-web/WEB-INF/classes/spring/turn-stun-servers.xml \
|
-template /usr/share/bbb-web/WEB-INF/classes/spring/turn-stun-servers.xml.tmpl:/usr/share/bbb-web/WEB-INF/classes/spring/turn-stun-servers.xml \
|
||||||
gosu bigbluebutton java -Dgrails.env=prod -Dserver.address=0.0.0.0 -Dserver.port=8090 -Xms384m -Xmx384m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/bigbluebutton/diagnostics -cp WEB-INF/lib/*:/:WEB-INF/classes/:. org.springframework.boot.loader.WarLauncher
|
gosu bigbluebutton java -Dgrails.env=prod -Dserver.address=0.0.0.0 -Dserver.port=8090 -Dspring.main.allow-circular-references=true -Xms384m -Xmx384m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/bigbluebutton/diagnostics -cp WEB-INF/lib/*:/:WEB-INF/classes/:. org.springframework.boot.loader.WarLauncher
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,20 +1,19 @@
|
|||||||
FROM etherpad/etherpad:1.8.18
|
FROM etherpad/etherpad:1.9.4
|
||||||
|
|
||||||
USER root
|
USER root
|
||||||
|
|
||||||
RUN apt-get update \
|
RUN apk add git curl
|
||||||
&& apt-get install -y git curl
|
|
||||||
|
|
||||||
USER etherpad
|
USER etherpad
|
||||||
|
|
||||||
RUN npm install \
|
RUN npm install \
|
||||||
ep_cursortrace@3.1.16 \
|
ep_cursortrace@3.1.16 \
|
||||||
git+https://github.com/mconf/ep_pad_ttl.git#360136cd38493dd698435631f2373cbb7089082d \
|
git+https://github.com/mconf/ep_pad_ttl.git#360136cd38493dd698435631f2373cbb7089082d \
|
||||||
git+https://github.com/mconf/ep_redis_publisher.git#a30a48e4bc1e501b5b102884b9a0b26c30798484 \
|
git+https://github.com/mconf/ep_redis_publisher.git#2b6e47c1c59362916a0b2961a29b259f2977b694 \
|
||||||
ep_disable_chat@0.0.8 \
|
ep_disable_chat@0.0.8 \
|
||||||
ep_auth_session@1.1.1 \
|
ep_auth_session@1.1.1 \
|
||||||
# remove npm lockfile, because somehow it prevents etherpad from detecting the manual added plugin ep_bigbluebutton_patches
|
# remove npm lockfile, because somehow it prevents etherpad from detecting the manual added plugin ep_bigbluebutton_patches
|
||||||
&& rm package-lock.json
|
&& rm package-lock.json package.json
|
||||||
|
|
||||||
# add skin from git submodule
|
# add skin from git submodule
|
||||||
COPY --chown=etherpad:0 ./bbb-etherpad-skin /opt/etherpad-lite/src/static/skins/bigbluebutton
|
COPY --chown=etherpad:0 ./bbb-etherpad-skin /opt/etherpad-lite/src/static/skins/bigbluebutton
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/bin/sh
|
||||||
echo $ETHERPAD_API_KEY > /tmp/apikey
|
echo $ETHERPAD_API_KEY > /tmp/apikey
|
||||||
export NODE_ENV=production
|
export NODE_ENV=production
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/bin/sh
|
||||||
src="$8"
|
src="$8"
|
||||||
dest="$(echo $8 | sed -E -e 's/html|odt/'$7'/')"
|
dest="$(echo $8 | sed -E -e 's/html|odt/'$7'/')"
|
||||||
convertTo="$7"
|
convertTo="$7"
|
||||||
|
@ -89,7 +89,7 @@
|
|||||||
*
|
*
|
||||||
* "defaultPadText" : "${DEFAULT_PAD_TEXT}Line 1\nLine 2"
|
* "defaultPadText" : "${DEFAULT_PAD_TEXT}Line 1\nLine 2"
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Name your instance!
|
* Name your instance!
|
||||||
*/
|
*/
|
||||||
@ -198,8 +198,7 @@
|
|||||||
|
|
||||||
"dbType": "redis",
|
"dbType": "redis",
|
||||||
"dbSettings": {
|
"dbSettings": {
|
||||||
"host": "redis",
|
"url": "redis://redis:6379"
|
||||||
"port": 6379
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -220,9 +219,10 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The default text of a pad
|
* The default text of a pad: A zero-width-space is used to work around an issue with Etherpad 1.9.1 where empty pads are not being created.
|
||||||
*/
|
* See: https://github.com/ether/etherpad-lite/issues/5787
|
||||||
"defaultPadText" : "",
|
*/
|
||||||
|
"defaultPadText" : "\u200b",
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Default Pad behavior.
|
* Default Pad behavior.
|
||||||
@ -539,7 +539,7 @@
|
|||||||
"windowMs": 90000,
|
"windowMs": 90000,
|
||||||
|
|
||||||
// maximum number of requests per IP to allow during the rate limit window
|
// maximum number of requests per IP to allow during the rate limit window
|
||||||
"max": 10
|
"max": 16
|
||||||
},
|
},
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -597,7 +597,40 @@
|
|||||||
"loglevel": "INFO",
|
"loglevel": "INFO",
|
||||||
|
|
||||||
/* Override any strings found in locale directories */
|
/* Override any strings found in locale directories */
|
||||||
"customLocaleStrings": {},
|
"customLocaleStrings": {
|
||||||
|
"de": {
|
||||||
|
"pad.importExport.import_export": "Export",
|
||||||
|
"pad.toolbar.import_export.title": "Export zu verschiedenen Dateiformaten"
|
||||||
|
},
|
||||||
|
"en-gb": {
|
||||||
|
"pad.importExport.import_export": "Export",
|
||||||
|
"pad.toolbar.import_export.title": "Export to different file formats"
|
||||||
|
},
|
||||||
|
"en": {
|
||||||
|
"pad.importExport.import_export": "Export",
|
||||||
|
"pad.toolbar.import_export.title": "Export to different file formats"
|
||||||
|
},
|
||||||
|
"es": {
|
||||||
|
"pad.importExport.import_export": "Exportar",
|
||||||
|
"pad.toolbar.import_export.title": "Exportar a diferentes formatos de archivos"
|
||||||
|
},
|
||||||
|
"fr": {
|
||||||
|
"pad.importExport.import_export": "Exporter",
|
||||||
|
"pad.toolbar.import_export.title": "Exporter vers un format de fichier différent"
|
||||||
|
},
|
||||||
|
"it": {
|
||||||
|
"pad.importExport.import_export": "Esportazione",
|
||||||
|
"pad.toolbar.import_export.title": "Esporta a diversi formati di file"
|
||||||
|
},
|
||||||
|
"pt-br": {
|
||||||
|
"pad.importExport.import_export": "Exportar",
|
||||||
|
"pad.toolbar.import_export.title": "Exportar para diferentes formatos de arquivo"
|
||||||
|
},
|
||||||
|
"pt": {
|
||||||
|
"pad.importExport.import_export": "Exportar",
|
||||||
|
"pad.toolbar.import_export.title": "Exportar para diferentes formatos de ficheiro"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
/* Disable Admin UI tests */
|
/* Disable Admin UI tests */
|
||||||
"enableAdminUITests": false
|
"enableAdminUITests": false
|
||||||
|
@ -1,66 +1,88 @@
|
|||||||
FROM debian:bullseye-slim
|
ARG BBB_BUILD_TAG
|
||||||
|
FROM bigbluebutton/bbb-build:$BBB_BUILD_TAG AS builder
|
||||||
|
|
||||||
# install dependencies
|
ARG TAG_FREESWITCH
|
||||||
|
RUN mkdir -p /build/freeswitch && \
|
||||||
|
cd /build/freeswitch && \
|
||||||
|
git init && \
|
||||||
|
git remote add origin https://github.com/signalwire/freeswitch.git && \
|
||||||
|
git fetch --depth 1 origin $TAG_FREESWITCH && \
|
||||||
|
git checkout FETCH_HEAD
|
||||||
|
|
||||||
|
# install most recent git version for proper sparse-checkout support
|
||||||
|
# https://stackoverflow.com/questions/72223738/failed-to-initialize-sparse-checkout
|
||||||
|
RUN echo 'deb https://ppa.launchpadcontent.net/git-core/ppa/ubuntu focal main' > /etc/apt/sources.list.d/git-core-ppa.list && \
|
||||||
|
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A1715D88E1DF1F24 && \
|
||||||
|
apt-get update && \
|
||||||
|
apt-get install -y git
|
||||||
|
|
||||||
|
# get build files for bbb-freeswitch (build/packages-template/bbb-freeswitch-core/)
|
||||||
|
ARG TAG_FS_BUILD_FILES
|
||||||
|
RUN git clone -b $TAG_FS_BUILD_FILES --depth 1 --filter=blob:none --sparse https://github.com/bigbluebutton/bigbluebutton.git /bbb && \
|
||||||
|
cd /bbb && \
|
||||||
|
git sparse-checkout set build/packages-template/bbb-freeswitch-core/ && \
|
||||||
|
cp build/packages-template/bbb-freeswitch-core/* /build/ && \
|
||||||
|
rm -rf /bbb
|
||||||
|
|
||||||
|
# mock files expected by build.sh
|
||||||
|
RUN mkdir -p /build/bbb-voice-conference/config/freeswitch/conf/ && \
|
||||||
|
touch \
|
||||||
|
/build/opts-build.sh \
|
||||||
|
/build/freeswitch.service.build \
|
||||||
|
/build/bbb-voice-conference/config/freeswitch/conf/a \
|
||||||
|
&& \
|
||||||
|
echo "" > /usr/local/bin/fpm
|
||||||
|
|
||||||
|
|
||||||
|
RUN cd /build && ./build.sh
|
||||||
|
|
||||||
|
|
||||||
|
# add english sounds
|
||||||
|
RUN mkdir -p /build/staging/opt/freeswitch/share/freeswitch && \
|
||||||
|
wget http://bigbluebutton.org/downloads/sounds.tar.gz -O sounds.tar.gz && \
|
||||||
|
tar xvfz sounds.tar.gz -C /build/staging/opt/freeswitch/share/freeswitch && \
|
||||||
|
wget https://gitlab.senfcall.de/senfcall-public/mute-and-unmute-sounds/-/archive/master/mute-and-unmute-sounds-master.zip && \
|
||||||
|
unzip mute-and-unmute-sounds-master.zip && \
|
||||||
|
cd mute-and-unmute-sounds-master/sounds && \
|
||||||
|
find . -name "*.wav" -exec /bin/bash -c "sox -v 0.3 {} /tmp/tmp.wav; cp /tmp/tmp.wav /build/staging/opt/freeswitch/share/freeswitch/sounds/en/us/callie/conference/{}" \;
|
||||||
|
|
||||||
|
# add bigblugbutton config
|
||||||
|
ARG TAG_FS_CONFIG
|
||||||
|
RUN git clone -b $TAG_FS_CONFIG --depth 1 --filter=blob:none --sparse https://github.com/bigbluebutton/bigbluebutton.git /bbb && \
|
||||||
|
cd /bbb && \
|
||||||
|
git sparse-checkout set bbb-voice-conference/config/freeswitch/conf/ && \
|
||||||
|
cp -r /bbb/bbb-voice-conference/config/freeswitch/conf/* /build/staging/opt/freeswitch/etc/freeswitch/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# ===============================================
|
||||||
|
|
||||||
|
# we are using ubuntu here, because libjpeg8 is required, but not available in debian
|
||||||
|
FROM ubuntu:20.04
|
||||||
RUN apt-get update && \
|
RUN apt-get update && \
|
||||||
apt-get install -y --no-install-recommends \
|
apt-get install -y \
|
||||||
subversion curl wget ca-certificates gnupg gnupg2 lsb-release unzip
|
xmlstarlet wget iptables curl \
|
||||||
|
libfreetype6 libcurl4 libspeex1 libspeexdsp1 libopus0 libsndfile1 libopusfile0 liblua5.2-0 libjbig0 libldns2 libedit2 libtiff5 libpng16-16 \
|
||||||
|
&& \
|
||||||
|
# install libopusenc0
|
||||||
|
wget -O /tmp/libopusenc0_0.2.1-1bbb2_amd64.deb https://launchpad.net/~bigbluebutton/+archive/ubuntu/support/+files/libopusenc0_0.2.1-1bbb2_amd64.deb \
|
||||||
|
&& dpkg -i /tmp/libopusenc0_0.2.1-1bbb2_amd64.deb \
|
||||||
|
&& rm /tmp/libopusenc0_0.2.1-1bbb2_amd64.deb
|
||||||
|
|
||||||
|
# add dockerize
|
||||||
COPY --from=alangecker/bbb-docker-base-java /usr/local/bin/dockerize /usr/local/bin/dockerize
|
COPY --from=alangecker/bbb-docker-base-java /usr/local/bin/dockerize /usr/local/bin/dockerize
|
||||||
|
|
||||||
|
# copy over built freeswitch & config
|
||||||
|
COPY --from=builder /build/staging/opt /opt
|
||||||
|
COPY --from=builder /build/staging/etc /etc
|
||||||
|
|
||||||
# install freeswitch
|
RUN ldconfig && \
|
||||||
RUN wget -q -O /usr/share/keyrings/freeswitch-archive-keyring.gpg https://freeswitch-mirror.chandi.it/repo/deb/debian-release/signalwire-freeswitch-repo.gpg && \
|
ln -s /opt/freeswitch/conf /etc/freeswitch && \
|
||||||
echo 'deb [signed-by=/usr/share/keyrings/freeswitch-archive-keyring.gpg] http://freeswitch-mirror.chandi.it/repo/deb/debian-release/ bullseye main' > /etc/apt/sources.list.d/freeswitch.list && \
|
groupadd freeswitch && \
|
||||||
apt-get update && \
|
useradd --home-dir /opt/freeswitch --shell /usr/sbin/nologin -g freeswitch freeswitch
|
||||||
apt-get install -y \
|
|
||||||
freeswitch \
|
|
||||||
freeswitch-mod-commands \
|
|
||||||
freeswitch-mod-conference \
|
|
||||||
freeswitch-mod-console \
|
|
||||||
freeswitch-mod-dialplan-xml \
|
|
||||||
freeswitch-mod-dptools \
|
|
||||||
freeswitch-mod-event-socket \
|
|
||||||
freeswitch-mod-native-file \
|
|
||||||
freeswitch-mod-opusfile \
|
|
||||||
freeswitch-mod-opus \
|
|
||||||
freeswitch-mod-sndfile \
|
|
||||||
freeswitch-mod-spandsp \
|
|
||||||
freeswitch-mod-sofia \
|
|
||||||
freeswitch-sounds-en-us-callie \
|
|
||||||
iptables
|
|
||||||
|
|
||||||
# replace mute & unmute sounds
|
|
||||||
RUN wget -q https://gitlab.senfcall.de/senfcall-public/mute-and-unmute-sounds/-/archive/master/mute-and-unmute-sounds-master.zip && \
|
|
||||||
unzip mute-and-unmute-sounds-master.zip && \
|
|
||||||
cd mute-and-unmute-sounds-master/sounds/ && \
|
|
||||||
find . -name "*.wav" -exec /bin/bash -c "echo {};sox -v 0.3 {} /tmp/tmp.wav; mv /tmp/tmp.wav /usr/share/freeswitch/sounds/en/us/callie/conference/{}" \; && \
|
|
||||||
cd ../.. && \
|
|
||||||
rm -r mute-and-unmute-sounds-master mute-and-unmute-sounds-master.zip
|
|
||||||
|
|
||||||
|
|
||||||
# -- get official bbb freeswitch config
|
|
||||||
# we use svn for retrieving the files since the repo is quite large,
|
|
||||||
# git sparse-checkout is not yet available with buster and there
|
|
||||||
# is no other sane way of downloading a single directory via git
|
|
||||||
|
|
||||||
ARG TAG_FS_CONFIG
|
|
||||||
RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_FS_CONFIG/bbb-voice-conference/config/freeswitch/conf /etc/freeswitch \
|
|
||||||
&& rm -rf /etc/freeswitch/.svn
|
|
||||||
|
|
||||||
# the current available freeswitch-mod-opusfile is broken,
|
|
||||||
# it can't write any .opus files. The fix provided in
|
|
||||||
# https://github.com/signalwire/freeswitch/pull/719/files
|
|
||||||
# is not sufficient as the module still comes without opus
|
|
||||||
# write support, so we rather switch to the binary built
|
|
||||||
# by bigbluebutton and add its dependencies
|
|
||||||
RUN wget -O /usr/lib/freeswitch/mod/mod_opusfile.so https://github.com/bbb-pkg/bbb-freeswitch-core/raw/43f3a47af1fcf5ea559e16bb28b900c925a7f2c3/opt/freeswitch/lib/freeswitch/mod/mod_opusfile.so \
|
|
||||||
&& wget -O /tmp/libopusenc0_0.2.1-1bbb1_amd64.deb https://launchpad.net/~bigbluebutton/+archive/ubuntu/support/+files/libopusenc0_0.2.1-1bbb1_amd64.deb \
|
|
||||||
&& dpkg -i /tmp/libopusenc0_0.2.1-1bbb1_amd64.deb \
|
|
||||||
&& rm /tmp/libopusenc0_0.2.1-1bbb1_amd64.deb
|
|
||||||
|
|
||||||
# add modifications
|
|
||||||
COPY ./conf /etc/freeswitch/
|
|
||||||
|
|
||||||
|
|
||||||
COPY ./entrypoint.sh /entrypoint.sh
|
COPY ./entrypoint.sh /entrypoint.sh
|
||||||
|
COPY ./conf /etc/freeswitch/
|
||||||
|
|
||||||
ENTRYPOINT /entrypoint.sh
|
ENTRYPOINT /entrypoint.sh
|
@ -39,7 +39,7 @@
|
|||||||
<!-- Domain (for presence) -->
|
<!-- Domain (for presence) -->
|
||||||
<param name="domain" value="$${domain}"/>
|
<param name="domain" value="$${domain}"/>
|
||||||
<!-- Sample Rate-->
|
<!-- Sample Rate-->
|
||||||
<param name="rate" value="8000"/>
|
<param name="rate" value="48000"/>
|
||||||
<!-- Number of milliseconds per frame -->
|
<!-- Number of milliseconds per frame -->
|
||||||
<param name="interval" value="20"/>
|
<param name="interval" value="20"/>
|
||||||
<!-- Energy level required for audio to be sent to the other users -->
|
<!-- Energy level required for audio to be sent to the other users -->
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
<load module="mod_commands"/>
|
<load module="mod_commands"/>
|
||||||
<load module="mod_conference"/>
|
<load module="mod_conference"/>
|
||||||
<load module="mod_dptools"/>
|
<load module="mod_dptools"/>
|
||||||
|
<load module="mod_audio_fork"/>
|
||||||
|
|
||||||
<!-- Dialplan Interfaces -->
|
<!-- Dialplan Interfaces -->
|
||||||
<load module="mod_dialplan_xml"/>
|
<load module="mod_dialplan_xml"/>
|
||||||
|
@ -54,7 +54,7 @@
|
|||||||
for presence.
|
for presence.
|
||||||
-->
|
-->
|
||||||
<!-- Name of the db to use for this profile -->
|
<!-- Name of the db to use for this profile -->
|
||||||
<!--<param name="dbname" value="share_presence"/>-->
|
<param name="dbname" value="sqlite://memory://file:external-ipv6?mode=memory&cache=shared"/>
|
||||||
<!--<param name="presence-hosts" value="$${domain}"/>-->
|
<!--<param name="presence-hosts" value="$${domain}"/>-->
|
||||||
<!--<param name="force-register-domain" value="$${domain}"/>-->
|
<!--<param name="force-register-domain" value="$${domain}"/>-->
|
||||||
<!--all inbound reg will stored in the db using this domain -->
|
<!--all inbound reg will stored in the db using this domain -->
|
||||||
|
@ -52,7 +52,7 @@
|
|||||||
for presence.
|
for presence.
|
||||||
-->
|
-->
|
||||||
<!-- Name of the db to use for this profile -->
|
<!-- Name of the db to use for this profile -->
|
||||||
<!--<param name="dbname" value="share_presence"/>-->
|
<param name="dbname" value="sqlite://memory://file:external?mode=memory&cache=shared"/>
|
||||||
<!--<param name="presence-hosts" value="$${domain}"/>-->
|
<!--<param name="presence-hosts" value="$${domain}"/>-->
|
||||||
<!--<param name="force-register-domain" value="$${domain}"/>-->
|
<!--<param name="force-register-domain" value="$${domain}"/>-->
|
||||||
<!--all inbound reg will stored in the db using this domain -->
|
<!--all inbound reg will stored in the db using this domain -->
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash -e
|
||||||
|
|
||||||
# remove all SIP (port 5060) iptable rules
|
# remove all SIP (port 5060) iptable rules
|
||||||
iptables -S INPUT | grep "\-\-dport 5060 " | cut -d " " -f 2- | xargs -rL1 iptables -D
|
iptables -S INPUT | grep "\-\-dport 5060 " | cut -d " " -f 2- | xargs -rL1 iptables -D
|
||||||
@ -15,13 +15,19 @@ for IP in "${ADDR[@]}"; do
|
|||||||
iptables -I INPUT -p udp --dport 5060 -s $IP -j ACCEPT
|
iptables -I INPUT -p udp --dport 5060 -s $IP -j ACCEPT
|
||||||
done
|
done
|
||||||
|
|
||||||
|
mkdir -p /var/freeswitch/meetings
|
||||||
chown -R freeswitch:daemon /var/freeswitch/meetings
|
chown -R freeswitch:daemon /var/freeswitch/meetings
|
||||||
chmod 777 /var/freeswitch/meetings
|
chmod 777 /var/freeswitch/meetings
|
||||||
|
chown -R freeswitch:daemon /opt/freeswitch/var
|
||||||
|
chown -R freeswitch:daemon /opt/freeswitch/etc
|
||||||
|
chmod -R g-rwx,o-rwx /opt/freeswitch/etc
|
||||||
|
|
||||||
# install freeswitch sounds if missing
|
# install freeswitch sounds if missing
|
||||||
SOUNDS_DIR=/usr/share/freeswitch/sounds
|
SOUNDS_DIR=/opt/freeswitch/share/freeswitch/sounds
|
||||||
if [ "$SOUNDS_LANGUAGE" == "de-de-daedalus3" ]; then
|
if [ "$SOUNDS_LANGUAGE" == "en-us-callie" ]; then
|
||||||
|
# default, is already installed
|
||||||
|
echo ""
|
||||||
|
elif [ "$SOUNDS_LANGUAGE" == "de-de-daedalus3" ]; then
|
||||||
if [ ! -d "$SOUNDS_DIR/de/de/daedalus3" ]; then
|
if [ ! -d "$SOUNDS_DIR/de/de/daedalus3" ]; then
|
||||||
echo "sounds package for de-de-daedalus3 not installed yet"
|
echo "sounds package for de-de-daedalus3 not installed yet"
|
||||||
wget -O /tmp/freeswitch-german-soundfiles.zip https://github.com/Daedalus3/freeswitch-german-soundfiles/archive/master.zip
|
wget -O /tmp/freeswitch-german-soundfiles.zip https://github.com/Daedalus3/freeswitch-german-soundfiles/archive/master.zip
|
||||||
@ -36,10 +42,24 @@ if [ "$SOUNDS_LANGUAGE" == "de-de-daedalus3" ]; then
|
|||||||
|
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
SOUNDS_PACKAGE=$(echo "freeswitch-sounds-${SOUNDS_LANGUAGE}" | tr '[:upper:]' '[:lower:]')
|
if [ ! -f $SOUNDS_DIR/$SOUNDS_LANGUAGE.installed ]; then
|
||||||
if ! dpkg -s $SOUNDS_PACKAGE >/dev/null 2>&1; then
|
|
||||||
echo "sounds package for $SOUNDS_LANGUAGE not installed yet"
|
echo "sounds package for $SOUNDS_LANGUAGE not installed yet"
|
||||||
apt-get install $SOUNDS_PACKAGE
|
|
||||||
|
# get filename of latest release for this sound package
|
||||||
|
FILENAME=$(curl -s https://files.freeswitch.org/releases/sounds/ | grep -i $SOUNDS_LANGUAGE 2> /dev/null | awk -F'\"' '{print $8}' | grep -E '\-48000-.*\.gz$' | sort -V | tail -n 1)
|
||||||
|
|
||||||
|
if [ "$FILENAME" = "" ]; then
|
||||||
|
echo "Error: could not find sounds for language '$SOUNDS_LANGUAGE'"
|
||||||
|
echo "make sure to specify a value for SOUNDS_LANGUAGE which exists on https://files.freeswitch.org/releases/sounds/"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
for bitrate in 8000 16000 32000 48000; do
|
||||||
|
URL=https://files.freeswitch.org/releases/sounds/$(echo $FILENAME | sed "s/48000/$bitrate/")
|
||||||
|
wget -O /tmp/sounds.tar.gz $URL
|
||||||
|
tar xvfz /tmp/sounds.tar.gz -C $SOUNDS_DIR
|
||||||
|
done
|
||||||
|
|
||||||
|
touch $SOUNDS_DIR/$SOUNDS_LANGUAGE.installed
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -49,4 +69,4 @@ export SOUNDS_PATH=$SOUNDS_DIR/$(echo "$SOUNDS_LANGUAGE" | sed 's|-|/|g')
|
|||||||
dockerize \
|
dockerize \
|
||||||
-template /etc/freeswitch/vars.xml.tmpl:/etc/freeswitch/vars.xml \
|
-template /etc/freeswitch/vars.xml.tmpl:/etc/freeswitch/vars.xml \
|
||||||
-template /etc/freeswitch/autoload_configs/conference.conf.xml.tmpl:/etc/freeswitch/autoload_configs/conference.conf.xml \
|
-template /etc/freeswitch/autoload_configs/conference.conf.xml.tmpl:/etc/freeswitch/autoload_configs/conference.conf.xml \
|
||||||
/usr/bin/freeswitch -u freeswitch -g daemon -nonat -nf
|
/opt/freeswitch/bin/freeswitch -u freeswitch -g daemon -nonat -nf
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
ARG BBB_BUILD_TAG
|
ARG BBB_BUILD_TAG
|
||||||
FROM gitlab.senfcall.de:5050/senfcall-public/docker-bbb-build:$BBB_BUILD_TAG AS builder
|
FROM bigbluebutton/bbb-build:$BBB_BUILD_TAG AS builder
|
||||||
|
|
||||||
ARG TAG_COMMON_MESSAGE
|
ARG TAG_COMMON_MESSAGE
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
ARG BBB_BUILD_TAG
|
ARG BBB_BUILD_TAG
|
||||||
FROM gitlab.senfcall.de:5050/senfcall-public/docker-bbb-build:$BBB_BUILD_TAG AS builder
|
FROM bigbluebutton/bbb-build:$BBB_BUILD_TAG AS builder
|
||||||
|
|
||||||
# RUN groupadd -g 2000 meteor && useradd -m -u 2001 -g meteor meteor
|
# RUN groupadd -g 2000 meteor && useradd -m -u 2001 -g meteor meteor
|
||||||
# USER meteor
|
# USER meteor
|
||||||
@ -14,6 +14,9 @@ RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_HTML5/
|
|||||||
RUN cd /app/bundle/programs/server \
|
RUN cd /app/bundle/programs/server \
|
||||||
&& npm install --production
|
&& npm install --production
|
||||||
|
|
||||||
|
RUN mkdir -p /app/bundle/programs/web.browser/app/files && \
|
||||||
|
cp /app/bundle/programs/server/npm/node_modules/@fontsource/*/files/*.woff* /app/bundle/programs/web.browser/app/files/
|
||||||
|
|
||||||
RUN sed -i "s/VERSION/$TAG_HTML5/" /app/bundle/programs/web.browser/head.html \
|
RUN sed -i "s/VERSION/$TAG_HTML5/" /app/bundle/programs/web.browser/head.html \
|
||||||
&& find /app/bundle/programs/web.browser -name '*.js' -exec gzip -k -f -9 '{}' \; \
|
&& find /app/bundle/programs/web.browser -name '*.js' -exec gzip -k -f -9 '{}' \; \
|
||||||
&& find /app/bundle/programs/web.browser -name '*.css' -exec gzip -k -f -9 '{}' \; \
|
&& find /app/bundle/programs/web.browser -name '*.css' -exec gzip -k -f -9 '{}' \; \
|
||||||
@ -21,14 +24,21 @@ RUN sed -i "s/VERSION/$TAG_HTML5/" /app/bundle/programs/web.browser/head.html \
|
|||||||
|
|
||||||
# ------------------------------
|
# ------------------------------
|
||||||
|
|
||||||
FROM node:14.19.1-alpine
|
FROM node:14.21-bullseye-slim
|
||||||
|
|
||||||
|
RUN apt-get update && apt-get install -y gosu
|
||||||
|
|
||||||
|
# add user & group
|
||||||
|
RUN groupadd -g 2000 meteor \
|
||||||
|
&& useradd -m -u 2001 -g meteor meteor
|
||||||
|
|
||||||
RUN addgroup -g 2000 meteor && \
|
|
||||||
adduser -D -u 2001 -G meteor meteor && \
|
|
||||||
apk add su-exec
|
|
||||||
COPY --from=alangecker/bbb-docker-base-java /usr/local/bin/dockerize /usr/local/bin/dockerize
|
COPY --from=alangecker/bbb-docker-base-java /usr/local/bin/dockerize /usr/local/bin/dockerize
|
||||||
COPY --from=builder --chown=meteor:meteor /app/bundle /app
|
COPY --from=builder --chown=meteor:meteor /app/bundle /app
|
||||||
COPY entrypoint.sh /entrypoint.sh
|
COPY entrypoint.sh /entrypoint.sh
|
||||||
COPY bbb-html5.yml /app/bbb-html5.yml.tmpl
|
COPY bbb-html5.yml /app/bbb-html5.yml.tmpl
|
||||||
|
|
||||||
|
# expose TAG_HTML5 in container for the version display
|
||||||
|
ARG TAG_HTML5
|
||||||
|
ENV TAG_HTML5 $TAG_HTML5
|
||||||
|
|
||||||
ENTRYPOINT ["/entrypoint.sh"]
|
ENTRYPOINT ["/entrypoint.sh"]
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
public:
|
public:
|
||||||
app:
|
app:
|
||||||
|
html5ClientBuild: {{ .Env.TAG_HTML5 }}
|
||||||
bbbServerVersion: {{ .Env.TAG_HTML5 }}-docker
|
bbbServerVersion: {{ .Env.TAG_HTML5 }}-docker
|
||||||
listenOnlyMode: {{ .Env.LISTEN_ONLY_MODE }}
|
listenOnlyMode: {{ .Env.LISTEN_ONLY_MODE }}
|
||||||
skipCheck: {{ .Env.DISABLE_ECHO_TEST }}
|
skipCheck: {{ .Env.DISABLE_ECHO_TEST }}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/sh
|
#!/bin/bash
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
cd /app
|
cd /app
|
||||||
@ -6,12 +6,12 @@ export MONGO_OPLOG_URL=mongodb://10.7.7.6/local
|
|||||||
export MONGO_URL=mongodb://10.7.7.6/meteor
|
export MONGO_URL=mongodb://10.7.7.6/meteor
|
||||||
export ROOT_URL=http://127.0.0.1/html5client
|
export ROOT_URL=http://127.0.0.1/html5client
|
||||||
export NODE_ENV=production
|
export NODE_ENV=production
|
||||||
export SERVER_WEBSOCKET_COMPRESSION=0
|
export SERVER_WEBSOCKET_COMPRESSION='{"level":5, "maxWindowBits":13, "memLevel":7, "requestMaxWindowBits":13}'
|
||||||
export BIND_IP=0.0.0.0
|
export BIND_IP=0.0.0.0
|
||||||
export LANG=en_US.UTF-8
|
export LANG=en_US.UTF-8
|
||||||
export INSTANCE_MAX=1
|
export INSTANCE_MAX=1
|
||||||
export ENVIRONMENT_TYPE=production
|
export ENVIRONMENT_TYPE=production
|
||||||
export NODE_VERSION=node-v14.19.1-linux-x64
|
export NODE_VERSION=node-v14.21.1-linux-x64
|
||||||
export BBB_HTML5_LOCAL_SETTINGS=/app/bbb-html5.yml
|
export BBB_HTML5_LOCAL_SETTINGS=/app/bbb-html5.yml
|
||||||
|
|
||||||
if [ "$DEV_MODE" == true ]; then
|
if [ "$DEV_MODE" == true ]; then
|
||||||
@ -39,5 +39,5 @@ fi
|
|||||||
|
|
||||||
dockerize \
|
dockerize \
|
||||||
-template /app/bbb-html5.yml.tmpl:/app/bbb-html5.yml \
|
-template /app/bbb-html5.yml.tmpl:/app/bbb-html5.yml \
|
||||||
su-exec meteor \
|
gosu meteor \
|
||||||
node --max-old-space-size=2048 --max_semi_space_size=128 main.js $PARAM
|
node --max-old-space-size=2048 --max_semi_space_size=128 main.js $PARAM
|
||||||
|
15
mod/https/force-https.conf
Normal file
15
mod/https/force-https.conf
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
# overwriting force-https.conf from valian/docker-nginx-auto-ssl
|
||||||
|
|
||||||
|
location /bigbluebutton/api/join {
|
||||||
|
return 301 https://$host$request_uri;
|
||||||
|
}
|
||||||
|
|
||||||
|
# allow /api calls without redirecting to https
|
||||||
|
location /bigbluebutton/api {
|
||||||
|
proxy_pass https://127.0.0.1:443;
|
||||||
|
proxy_ssl_verify off;
|
||||||
|
}
|
||||||
|
|
||||||
|
location / {
|
||||||
|
return 301 https://$host$request_uri;
|
||||||
|
}
|
@ -1,6 +1,6 @@
|
|||||||
FROM eugenmayer/jodconverter:rest
|
FROM ghcr.io/jodconverter/jodconverter-examples:rest
|
||||||
RUN echo "ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true" | debconf-set-selections
|
RUN echo "ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true" | debconf-set-selections
|
||||||
RUN sed -i 's/main/main contrib/' /etc/apt/sources.list && apt-get update
|
RUN sed -i 's/main/main contrib/' /etc/apt/sources.list.d/debian.sources && apt-get update
|
||||||
RUN apt-get update && apt -y install --no-install-recommends \
|
RUN apt-get update && apt -y install --no-install-recommends \
|
||||||
fonts-arkpandora \
|
fonts-arkpandora \
|
||||||
fonts-crosextra-carlito \
|
fonts-crosextra-carlito \
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
FROM node:14-alpine AS builder
|
ARG BBB_BUILD_TAG
|
||||||
|
FROM bigbluebutton/bbb-build:$BBB_BUILD_TAG AS builder
|
||||||
RUN apk add subversion git
|
|
||||||
|
|
||||||
# --------------------
|
# --------------------
|
||||||
|
|
||||||
@ -9,11 +8,11 @@ RUN svn checkout https://github.com/bigbluebutton/bigbluebutton/tags/$TAG_LEARNI
|
|||||||
RUN cd /bbb-learning-dashboard && npm ci && npm run build
|
RUN cd /bbb-learning-dashboard && npm ci && npm run build
|
||||||
|
|
||||||
COPY ./bbb-playback /bbb-playback
|
COPY ./bbb-playback /bbb-playback
|
||||||
RUN cd /bbb-playback && npm ci && npm run build
|
RUN cd /bbb-playback && npm install && npm run-script build
|
||||||
|
|
||||||
# --------------------
|
# --------------------
|
||||||
|
|
||||||
FROM nginx:1.21-alpine
|
FROM nginx:1.25-alpine
|
||||||
|
|
||||||
COPY --from=builder /bbb-learning-dashboard/build /www/learning-analytics-dashboard/
|
COPY --from=builder /bbb-learning-dashboard/build /www/learning-analytics-dashboard/
|
||||||
COPY --from=builder /bbb-playback/build /www/playback/presentation/2.3
|
COPY --from=builder /bbb-playback/build /www/playback/presentation/2.3
|
||||||
|
Submodule mod/nginx/bbb-playback updated: 4031c8e5ff...a8f5a72a7d
@ -6,11 +6,12 @@ location @html5client {
|
|||||||
}
|
}
|
||||||
|
|
||||||
location /html5client/locales {
|
location /html5client/locales {
|
||||||
alias /html5-static/app/locales;
|
alias /html5-static/app/locales;
|
||||||
}
|
}
|
||||||
|
|
||||||
location /html5client/compatibility {
|
location /html5client/compatibility {
|
||||||
alias /html5-static/app/compatibility;
|
gzip_static on;
|
||||||
|
alias /html5-static/app/compatibility;
|
||||||
}
|
}
|
||||||
|
|
||||||
location /html5client/resources {
|
location /html5client/resources {
|
||||||
@ -25,6 +26,10 @@ location /html5client/fonts {
|
|||||||
alias /html5-static/app/fonts;
|
alias /html5-static/app/fonts;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
location /html5client/files {
|
||||||
|
alias /html5-static/app/files;
|
||||||
|
}
|
||||||
|
|
||||||
location /html5client/wasm {
|
location /html5client/wasm {
|
||||||
types {
|
types {
|
||||||
application/wasm wasm;
|
application/wasm wasm;
|
||||||
@ -33,8 +38,12 @@ location /html5client/wasm {
|
|||||||
alias /html5-static/app/wasm;
|
alias /html5-static/app/wasm;
|
||||||
}
|
}
|
||||||
|
|
||||||
location /html5client/ {
|
location /html5client {
|
||||||
|
gzip_static on;
|
||||||
alias /html5-static;
|
alias /html5-static;
|
||||||
try_files $uri @html5client;
|
try_files $uri @html5client;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
location /html5client/sockjs {
|
||||||
|
try_files $uri @html5client;
|
||||||
|
}
|
@ -1,34 +0,0 @@
|
|||||||
# Routes requests to Greenlight based on the '/b' prefix.
|
|
||||||
# Use this file to route '/b' paths on your BigBlueButton server
|
|
||||||
# to the Greenlight application. If you are using a different
|
|
||||||
# subpath, you should change it here.
|
|
||||||
|
|
||||||
|
|
||||||
location /b {
|
|
||||||
proxy_pass http://host.docker.internal:5000;
|
|
||||||
proxy_set_header Host $host;
|
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
||||||
proxy_set_header X-Forwarded-Proto $scheme;
|
|
||||||
proxy_set_header X-Forwarded-Ssl on;
|
|
||||||
proxy_http_version 1.1;
|
|
||||||
}
|
|
||||||
|
|
||||||
location /b/cable {
|
|
||||||
proxy_pass http://host.docker.internal:5000;
|
|
||||||
proxy_set_header Host $host;
|
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
||||||
proxy_set_header X-Forwarded-Proto $scheme;
|
|
||||||
proxy_set_header X-Forwarded-Ssl on;
|
|
||||||
proxy_set_header Upgrade $http_upgrade;
|
|
||||||
proxy_set_header Connection "Upgrade";
|
|
||||||
proxy_http_version 1.1;
|
|
||||||
proxy_read_timeout 6h;
|
|
||||||
proxy_send_timeout 6h;
|
|
||||||
client_body_timeout 6h;
|
|
||||||
send_timeout 6h;
|
|
||||||
}
|
|
||||||
|
|
||||||
# this is necessary for the preupload_presentation feature
|
|
||||||
location /rails/active_storage {
|
|
||||||
return 301 /b$request_uri;
|
|
||||||
}
|
|
@ -1,5 +1,5 @@
|
|||||||
location ~ /learning-analytics-dashboard/([0-9a-f]+-[0-9]+)/(.*) {
|
location ~ /learning-analytics-dashboard/([0-9a-f]+-[0-9]+)/(.*) {
|
||||||
root /var/bigbluebutton/learning-analytics-dashboard/;
|
alias /var/bigbluebutton/learning-dashboard/$1/$2;
|
||||||
autoindex off;
|
autoindex off;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
21
mod/nginx/bbb/playback-video.nginx
Normal file
21
mod/nginx/bbb/playback-video.nginx
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
# This file is part of BigBlueButton.
|
||||||
|
#
|
||||||
|
# Copyright © BigBlueButton Inc. and by respective authors.
|
||||||
|
#
|
||||||
|
# BigBlueButton is free software: you can redistribute it and/or modify it
|
||||||
|
# under the terms of the GNU Lesser General Public License as published by the
|
||||||
|
# Free Software Foundation, either version 3.0 of the License, or (at your
|
||||||
|
# option) any later version.
|
||||||
|
#
|
||||||
|
# BigBlueButton is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||||
|
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
|
||||||
|
# details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Lesser General Public License
|
||||||
|
# along with BigBlueButton. If not, see <https://www.gnu.org/licenses>.
|
||||||
|
|
||||||
|
location /playback/video/ {
|
||||||
|
alias /var/bigbluebutton/published/video/;
|
||||||
|
index index.html index.htm;
|
||||||
|
}
|
22
mod/nginx/bbb/recording-screenshare.nginx
Normal file
22
mod/nginx/bbb/recording-screenshare.nginx
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
#
|
||||||
|
# BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
|
||||||
|
#
|
||||||
|
# Copyright (c) 2012 BigBlueButton Inc. and by respective authors (see below).
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify it under the
|
||||||
|
# terms of the GNU Lesser General Public License as published by the Free Software
|
||||||
|
# Foundation; either version 3.0 of the License, or (at your option) any later
|
||||||
|
# version.
|
||||||
|
#
|
||||||
|
# BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
|
# PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Lesser General Public License along
|
||||||
|
# with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
|
||||||
|
location /recording/screenshare {
|
||||||
|
alias /var/bigbluebutton/published/screenshare;
|
||||||
|
index index.html index.htm;
|
||||||
|
}
|
28
mod/nginx/bbb/slides.nginx
Normal file
28
mod/nginx/bbb/slides.nginx
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
|
||||||
|
#
|
||||||
|
# BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
|
||||||
|
#
|
||||||
|
# Copyright (c) 2012 BigBlueButton Inc. and by respective authors (see below).
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify it under the
|
||||||
|
# terms of the GNU Lesser General Public License as published by the Free Software
|
||||||
|
# Foundation; either version 3.0 of the License, or (at your option) any later
|
||||||
|
# version.
|
||||||
|
#
|
||||||
|
# BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
|
# PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Lesser General Public License along
|
||||||
|
# with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
location /playback/slides {
|
||||||
|
root /var/bigbluebutton;
|
||||||
|
index index.html index.htm;
|
||||||
|
}
|
||||||
|
|
||||||
|
location /slides {
|
||||||
|
root /var/bigbluebutton/published;
|
||||||
|
index index.html index.htm;
|
||||||
|
}
|
||||||
|
|
@ -9,32 +9,16 @@
|
|||||||
|
|
||||||
# Workaround IE refusal to set cookies in iframe
|
# Workaround IE refusal to set cookies in iframe
|
||||||
add_header P3P 'CP="No P3P policy available"';
|
add_header P3P 'CP="No P3P policy available"';
|
||||||
if ($bbb_loadbalancer_node) {
|
|
||||||
add_header 'Access-Control-Allow-Origin' $bbb_loadbalancer_node always;
|
|
||||||
add_header 'Access-Control-Allow-Credentials' 'true' always;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
location ~ "^\/bigbluebutton\/presentation\/(?<prestoken>[a-zA-Z0-9_-]+)/upload$" {
|
location ~ "^\/bigbluebutton\/presentation\/(?<prestoken>[a-zA-Z0-9_-]+)/upload$" {
|
||||||
# Grails can't handle CORS OPTION preflight requests correctly -> lets do this in nginx
|
|
||||||
if ($request_method = 'OPTIONS') {
|
|
||||||
add_header 'Access-Control-Allow-Origin' $bbb_loadbalancer_node always;
|
|
||||||
add_header 'Access-Control-Allow-Credentials' 'true' always;
|
|
||||||
add_header 'Content-Type' 'text/plain; charset=utf-8';
|
|
||||||
add_header 'Content-Length' 0;
|
|
||||||
return 204;
|
|
||||||
}
|
|
||||||
proxy_pass http://bbb-web:8090;
|
proxy_pass http://bbb-web:8090;
|
||||||
proxy_redirect default;
|
proxy_redirect default;
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
|
||||||
# Workaround IE refusal to set cookies in iframe
|
# Workaround IE refusal to set cookies in iframe
|
||||||
add_header P3P 'CP="No P3P policy available"';
|
add_header P3P 'CP="No P3P policy available"';
|
||||||
if ($bbb_loadbalancer_node) {
|
|
||||||
add_header 'Access-Control-Allow-Origin' $bbb_loadbalancer_node always;
|
|
||||||
add_header 'Access-Control-Allow-Credentials' 'true' always;
|
|
||||||
}
|
|
||||||
|
|
||||||
# high limit for presentation as bbb-web will reject upload if larger than configured
|
# high limit for presentation as bbb-web will reject upload if larger than configured
|
||||||
client_max_body_size 1000m;
|
client_max_body_size 1000m;
|
||||||
@ -73,9 +57,6 @@
|
|||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
# Workaround IE refusal to set cookies in iframe
|
# Workaround IE refusal to set cookies in iframe
|
||||||
add_header P3P 'CP="No P3P policy available"';
|
add_header P3P 'CP="No P3P policy available"';
|
||||||
if ($bbb_loadbalancer_node) {
|
|
||||||
add_header 'Access-Control-Allow-Origin' $bbb_loadbalancer_node always;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
location = /bigbluebutton/presentation/checkPresentation {
|
location = /bigbluebutton/presentation/checkPresentation {
|
||||||
@ -87,6 +68,7 @@
|
|||||||
proxy_set_header X-Original-URI $request_uri;
|
proxy_set_header X-Original-URI $request_uri;
|
||||||
proxy_set_header Content-Length "";
|
proxy_set_header Content-Length "";
|
||||||
proxy_set_header X-Original-Content-Length $http_content_length;
|
proxy_set_header X-Original-Content-Length $http_content_length;
|
||||||
|
proxy_set_header X-Original-Method $request_method;
|
||||||
|
|
||||||
# high limit for presentation as bbb-web will reject upload if larger than configured
|
# high limit for presentation as bbb-web will reject upload if larger than configured
|
||||||
client_max_body_size 1000m;
|
client_max_body_size 1000m;
|
||||||
@ -109,6 +91,7 @@
|
|||||||
proxy_set_header Content-Length "";
|
proxy_set_header Content-Length "";
|
||||||
proxy_set_header X-Original-URI $request_uri;
|
proxy_set_header X-Original-URI $request_uri;
|
||||||
}
|
}
|
||||||
|
|
||||||
location = /bigbluebutton/connection/legacyCheckAuthorization {
|
location = /bigbluebutton/connection/legacyCheckAuthorization {
|
||||||
internal;
|
internal;
|
||||||
proxy_pass http://bbb-web:8090;
|
proxy_pass http://bbb-web:8090;
|
||||||
@ -128,9 +111,6 @@
|
|||||||
location ~ "^/bigbluebutton\/textTrack\/(?<textTrackToken>[a-zA-Z0-9]+)\/(?<recordId>[a-zA-Z0-9_-]+)\/(?<textTrack>.+)$" {
|
location ~ "^/bigbluebutton\/textTrack\/(?<textTrackToken>[a-zA-Z0-9]+)\/(?<recordId>[a-zA-Z0-9_-]+)\/(?<textTrack>.+)$" {
|
||||||
# Workaround IE refusal to set cookies in iframe
|
# Workaround IE refusal to set cookies in iframe
|
||||||
add_header P3P 'CP="No P3P policy available"';
|
add_header P3P 'CP="No P3P policy available"';
|
||||||
if ($bbb_loadbalancer_node) {
|
|
||||||
add_header 'Access-Control-Allow-Origin' $bbb_loadbalancer_node always;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Allow 30M uploaded presentation document.
|
# Allow 30M uploaded presentation document.
|
||||||
client_max_body_size 30m;
|
client_max_body_size 30m;
|
||||||
@ -177,4 +157,4 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
return 403;
|
return 403;
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@ location /bbb-webrtc-sfu {
|
|||||||
auth_request_set $user_id $sent_http_user_id;
|
auth_request_set $user_id $sent_http_user_id;
|
||||||
auth_request_set $meeting_id $sent_http_meeting_id;
|
auth_request_set $meeting_id $sent_http_meeting_id;
|
||||||
auth_request_set $voice_bridge $sent_http_voice_bridge;
|
auth_request_set $voice_bridge $sent_http_voice_bridge;
|
||||||
|
auth_request_set $user_name $sent_http_user_name;
|
||||||
|
|
||||||
proxy_pass http://10.7.7.1:3008;
|
proxy_pass http://10.7.7.1:3008;
|
||||||
proxy_http_version 1.1;
|
proxy_http_version 1.1;
|
||||||
@ -14,9 +15,11 @@ location /bbb-webrtc-sfu {
|
|||||||
proxy_set_header User-Id $user_id;
|
proxy_set_header User-Id $user_id;
|
||||||
proxy_set_header Meeting-Id $meeting_id;
|
proxy_set_header Meeting-Id $meeting_id;
|
||||||
proxy_set_header Voice-Bridge $voice_bridge;
|
proxy_set_header Voice-Bridge $voice_bridge;
|
||||||
proxy_read_timeout 6h;
|
proxy_set_header User-Name $user_name;
|
||||||
proxy_send_timeout 6h;
|
|
||||||
client_body_timeout 6h;
|
proxy_read_timeout 60s;
|
||||||
send_timeout 6h;
|
proxy_send_timeout 60s;
|
||||||
|
client_body_timeout 60s;
|
||||||
|
send_timeout 60s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29,12 +29,42 @@ server {
|
|||||||
# https://www.eff.org/deeplinks/2021/03/googles-floc-terrible-idea
|
# https://www.eff.org/deeplinks/2021/03/googles-floc-terrible-idea
|
||||||
add_header Permissions-Policy "interest-cohort=()";
|
add_header Permissions-Policy "interest-cohort=()";
|
||||||
|
|
||||||
# redirect to greenlight
|
|
||||||
location = / {
|
|
||||||
return 302 /b;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Include specific rules for record and playback
|
# Include specific rules for record and playback
|
||||||
include /etc/nginx/bbb/*.nginx;
|
include /etc/nginx/bbb/*.nginx;
|
||||||
|
|
||||||
|
# redirect old greenlight v2 room links
|
||||||
|
location ~ "/b/([a-z0-9\-]+)" {
|
||||||
|
return 302 /rooms/$1;
|
||||||
|
}
|
||||||
|
|
||||||
|
# serve default.pdf from /www/
|
||||||
|
location = /default.pdf {
|
||||||
|
try_files $uri =404;
|
||||||
|
}
|
||||||
|
|
||||||
|
location / {
|
||||||
|
proxy_pass http://greenlight:3000;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Forwarded-For "127.0.0.1";
|
||||||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
proxy_set_header X-Forwarded-Ssl on;
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
client_max_body_size 1000m;
|
||||||
|
}
|
||||||
|
|
||||||
|
location /cable {
|
||||||
|
proxy_pass http://greenlight:3000;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Forwarded-For "127.0.0.1";
|
||||||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
proxy_set_header X-Forwarded-Ssl on;
|
||||||
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
|
proxy_set_header Connection "Upgrade";
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
proxy_read_timeout 6h;
|
||||||
|
proxy_send_timeout 6h;
|
||||||
|
client_body_timeout 6h;
|
||||||
|
send_timeout 6h;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
FROM ruby:2.7-slim-buster
|
FROM ruby:2.7-slim-bullseye
|
||||||
|
|
||||||
# install apt dependencies
|
# install apt dependencies
|
||||||
RUN apt-get update && apt-get install -y \
|
RUN apt-get update && apt-get install -y \
|
||||||
@ -16,11 +16,18 @@ RUN apt-get update && apt-get install -y \
|
|||||||
python3-lxml \
|
python3-lxml \
|
||||||
python3-icu \
|
python3-icu \
|
||||||
python3-pyinotify \
|
python3-pyinotify \
|
||||||
|
python3-sortedcollections \
|
||||||
|
python3-packaging \
|
||||||
gir1.2-pangocairo-1.0 \
|
gir1.2-pangocairo-1.0 \
|
||||||
|
gir1.2-poppler-0.18 \
|
||||||
|
gir1.2-gtk-3.0 \
|
||||||
|
gir1.2-gdkpixbuf-2.0 \
|
||||||
|
fonts-croscore \
|
||||||
ffmpeg \
|
ffmpeg \
|
||||||
poppler-utils \
|
poppler-utils \
|
||||||
imagemagick \
|
imagemagick \
|
||||||
supervisor \
|
supervisor \
|
||||||
|
unzip \
|
||||||
locales \
|
locales \
|
||||||
locales-all
|
locales-all
|
||||||
# TODO: missing packages
|
# TODO: missing packages
|
||||||
@ -53,7 +60,13 @@ RUN wget -q https://github.com/mikefarah/yq/releases/download/3.4.1/yq_linux_am
|
|||||||
RUN mkdir -p \
|
RUN mkdir -p \
|
||||||
/usr/local/bigbluebutton \
|
/usr/local/bigbluebutton \
|
||||||
/usr/local/bigbluebutton/core \
|
/usr/local/bigbluebutton/core \
|
||||||
/etc/bigbluebutton
|
/etc/bigbluebutton \
|
||||||
|
/etc/bigbluebutton/recording
|
||||||
|
|
||||||
|
# dependency for bbb-presentation-video
|
||||||
|
RUN wget -q -O /tmp/python3-perfect-freehand.deb https://github.com/bigbluebutton/perfect-freehand-python/releases/download/1.2.0/python3-perfect-freehand_1.2.0_all.deb && \
|
||||||
|
dpkg -i /tmp/python3-perfect-freehand.deb && \
|
||||||
|
rm /tmp/python3-perfect-freehand.deb
|
||||||
|
|
||||||
ARG TAG_RECORDINGS
|
ARG TAG_RECORDINGS
|
||||||
|
|
||||||
@ -76,7 +89,11 @@ RUN cd /tmp \
|
|||||||
RUN cd /usr/local/bigbluebutton/core \
|
RUN cd /usr/local/bigbluebutton/core \
|
||||||
&& gem install builder \
|
&& gem install builder \
|
||||||
&& gem install bundler --no-document \
|
&& gem install bundler --no-document \
|
||||||
&& /usr/local/bin/bundle
|
&& bundle config set --local deployment true \
|
||||||
|
&& bundle install \
|
||||||
|
&& bundle clean \
|
||||||
|
&& rm -r vendor/bundle/ruby/*/cache \
|
||||||
|
&& find vendor/bundle -name '*.o' -delete
|
||||||
|
|
||||||
# log to file instead of journald
|
# log to file instead of journald
|
||||||
RUN sed -i 's|Journald::Logger\.new.*|Logger.new("/var/log/bigbluebutton/recording.log")|g' /usr/local/bigbluebutton/core/lib/recordandplayback.rb && \
|
RUN sed -i 's|Journald::Logger\.new.*|Logger.new("/var/log/bigbluebutton/recording.log")|g' /usr/local/bigbluebutton/core/lib/recordandplayback.rb && \
|
||||||
@ -103,8 +120,15 @@ RUN groupadd -g 998 bigbluebutton && useradd -m -u 998 -g bigbluebutton bigblueb
|
|||||||
# https://github.com/alangecker/bigbluebutton-docker/issues/63
|
# https://github.com/alangecker/bigbluebutton-docker/issues/63
|
||||||
RUN chown -R 998:998 /usr/local/bigbluebutton
|
RUN chown -R 998:998 /usr/local/bigbluebutton
|
||||||
|
|
||||||
|
ARG TAG_BBB_PRESENTATION_VIDEO
|
||||||
|
RUN cd /tmp/ && \
|
||||||
|
wget -q -O bbb-presentation-video.zip "https://github.com/bigbluebutton/bbb-presentation-video/releases/download/${TAG_BBB_PRESENTATION_VIDEO}/ubuntu-20.04.zip" && \
|
||||||
|
unzip -o bbb-presentation-video.zip -d bbb-presentation-video && \
|
||||||
|
dpkg -i bbb-presentation-video/bbb-presentation-video*.deb && \
|
||||||
|
rm -rf /tmp/*
|
||||||
|
|
||||||
COPY bbb-web.properties /etc/bigbluebutton/bbb-web.properties.tmpl
|
COPY bbb-web.properties /etc/bigbluebutton/bbb-web.properties.tmpl
|
||||||
COPY bigbluebutton.yml /usr/local/bigbluebutton/core/scripts/bigbluebutton.yml.tmpl
|
COPY recording.yml /etc/bigbluebutton/recording/recording.yml.tmpl
|
||||||
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
|
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
|
||||||
COPY entrypoint.sh /entrypoint.sh
|
COPY entrypoint.sh /entrypoint.sh
|
||||||
|
|
||||||
|
@ -1 +1,2 @@
|
|||||||
|
bigbluebutton.web.serverURL=https://{{ .Env.DOMAIN }}
|
||||||
securitySalt={{ .Env.SHARED_SECRET }}
|
securitySalt={{ .Env.SHARED_SECRET }}
|
@ -1,59 +0,0 @@
|
|||||||
bbb_version: '2.1.0'
|
|
||||||
raw_audio_src: /var/freeswitch/meetings
|
|
||||||
raw_video_src: /usr/share/red5/webapps/video/streams
|
|
||||||
kurento_video_src: /var/kurento/recordings
|
|
||||||
kurento_screenshare_src: /var/kurento/screenshare
|
|
||||||
raw_screenshare_src: /usr/share/red5/webapps/screenshare/streams
|
|
||||||
raw_webrtc_deskshare_src: /usr/share/red5/webapps/video-broadcast/streams
|
|
||||||
raw_deskshare_src: /var/bigbluebutton/deskshare
|
|
||||||
raw_presentation_src: /var/bigbluebutton
|
|
||||||
notes_endpoint: http://bbb-pads:9002/p
|
|
||||||
# Specify the notes formats we archive
|
|
||||||
# txt, doc and odt are also supported
|
|
||||||
notes_formats:
|
|
||||||
- etherpad
|
|
||||||
- html
|
|
||||||
- pdf
|
|
||||||
redis_host: redis
|
|
||||||
redis_port: 6379
|
|
||||||
# Uncomment and set password if redis require it.
|
|
||||||
# redis_password: changeme
|
|
||||||
|
|
||||||
# redis_workers_host: 127.0.0.1
|
|
||||||
# redis_workers_port: 6379
|
|
||||||
|
|
||||||
# Set to true to insert recording process status into
|
|
||||||
# redis list with key "store_recording_status: true".
|
|
||||||
# This is useful if you want to track progress status
|
|
||||||
# and have another script process it.
|
|
||||||
store_recording_status: false
|
|
||||||
|
|
||||||
# Sequence of recording steps. Keys are the current step, values
|
|
||||||
# are the next step(s). Examples:
|
|
||||||
# current_step: next_step
|
|
||||||
# "current_step-format": "next_step-format"
|
|
||||||
# current_step:
|
|
||||||
# - next_step
|
|
||||||
# - another_step-format
|
|
||||||
steps:
|
|
||||||
archive: "sanity"
|
|
||||||
sanity: "captions"
|
|
||||||
captions: "process:presentation"
|
|
||||||
"process:presentation": "publish:presentation"
|
|
||||||
|
|
||||||
# For PRODUCTION
|
|
||||||
log_dir: /var/log/bigbluebutton
|
|
||||||
events_dir: /var/bigbluebutton/events
|
|
||||||
recording_dir: /var/bigbluebutton/recording
|
|
||||||
published_dir: /var/bigbluebutton/published
|
|
||||||
captions_dir: /var/bigbluebutton/captions
|
|
||||||
playback_host: {{ .Env.DOMAIN }}
|
|
||||||
playback_protocol: https
|
|
||||||
|
|
||||||
# For DEVELOPMENT
|
|
||||||
# This allows us to run the scripts manually
|
|
||||||
#scripts_dir: /home/ubuntu/dev/bigbluebutton/record-and-playback/core/scripts
|
|
||||||
#log_dir: /home/ubuntu/temp/log
|
|
||||||
#recording_dir: /home/ubuntu/temp/recording
|
|
||||||
#published_dir: /home/ubuntu/temp/published
|
|
||||||
#playback_host: 127.0.0.1
|
|
@ -2,11 +2,15 @@
|
|||||||
|
|
||||||
touch /var/log/bigbluebutton/recording.log
|
touch /var/log/bigbluebutton/recording.log
|
||||||
touch /var/log/bigbluebutton/bbb-web.log
|
touch /var/log/bigbluebutton/bbb-web.log
|
||||||
|
touch /var/log/bigbluebutton/sanity.log
|
||||||
|
touch /var/log/bigbluebutton/post_publish.log
|
||||||
mkdir -p /var/log/bigbluebutton/presentation
|
mkdir -p /var/log/bigbluebutton/presentation
|
||||||
chown -R bigbluebutton:bigbluebutton /var/log/bigbluebutton
|
chown -R bigbluebutton:bigbluebutton /var/log/bigbluebutton
|
||||||
|
|
||||||
dockerize \
|
dockerize \
|
||||||
-template /usr/local/bigbluebutton/core/scripts/bigbluebutton.yml.tmpl:/usr/local/bigbluebutton/core/scripts/bigbluebutton.yml \
|
-template /etc/bigbluebutton/recording/recording.yml.tmpl:/etc/bigbluebutton/recording/recording.yml \
|
||||||
-template /etc/bigbluebutton/bbb-web.properties.tmpl:/etc/bigbluebutton/bbb-web.properties \
|
-template /etc/bigbluebutton/bbb-web.properties.tmpl:/etc/bigbluebutton/bbb-web.properties \
|
||||||
-stdout /var/log/bigbluebutton/recording.log \
|
-stdout /var/log/bigbluebutton/recording.log \
|
||||||
|
-stdout /var/log/bigbluebutton/post_publish.log \
|
||||||
|
-stdout /var/log/bigbluebutton/sanity.log \
|
||||||
/usr/bin/supervisord --nodaemon
|
/usr/bin/supervisord --nodaemon
|
4
mod/recordings/recording.yml
Normal file
4
mod/recordings/recording.yml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
redis_host: redis
|
||||||
|
notes_endpoint: http://bbb-pads:9002/p
|
||||||
|
playback_host: {{ .Env.DOMAIN }}
|
||||||
|
playback_protocol: https
|
@ -2,7 +2,7 @@
|
|||||||
user=root
|
user=root
|
||||||
|
|
||||||
[program:rasque_workers]
|
[program:rasque_workers]
|
||||||
command=rake resque:workers
|
command=bundle exec rake -f Rakefile resque:workers
|
||||||
directory=/usr/local/bigbluebutton/core/scripts
|
directory=/usr/local/bigbluebutton/core/scripts
|
||||||
environment=QUEUE="rap:archive,rap:publish,rap:process,rap:sanity,rap:captions,rap:events",COUNT="1",VVERBOSE="1",HOME="/home/bigbluebutton"
|
environment=QUEUE="rap:archive,rap:publish,rap:process,rap:sanity,rap:captions,rap:events",COUNT="1",VVERBOSE="1",HOME="/home/bigbluebutton"
|
||||||
user=bigbluebutton
|
user=bigbluebutton
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
FROM node:14.18.3-bullseye-slim AS builder
|
FROM node:18-bullseye-slim AS builder
|
||||||
|
|
||||||
|
|
||||||
RUN apt-get update && apt-get install -y git wget
|
RUN apt-get update && apt-get install -y git wget
|
||||||
@ -12,7 +12,7 @@ RUN cd /bbb-webhooks && npm install --production
|
|||||||
RUN chmod 777 /bbb-webhooks/config
|
RUN chmod 777 /bbb-webhooks/config
|
||||||
# ------------------------------
|
# ------------------------------
|
||||||
|
|
||||||
FROM node:14.18.3-bullseye-slim
|
FROM node:18-bullseye-slim
|
||||||
RUN useradd --uid 2004 --user-group bbb-webhooks
|
RUN useradd --uid 2004 --user-group bbb-webhooks
|
||||||
|
|
||||||
COPY --from=builder /usr/bin/yq /usr/bin/yq
|
COPY --from=builder /usr/bin/yq /usr/bin/yq
|
||||||
|
Submodule mod/webhooks/bbb-webhooks updated: 2eb5e44710...7c0cd8e6ca
@ -1,5 +1,5 @@
|
|||||||
ARG BBB_BUILD_TAG
|
ARG BBB_BUILD_TAG
|
||||||
FROM gitlab.senfcall.de:5050/senfcall-public/docker-bbb-build:$BBB_BUILD_TAG AS builder
|
FROM bigbluebutton/bbb-build:$BBB_BUILD_TAG AS builder
|
||||||
|
|
||||||
|
|
||||||
RUN useradd --uid 2004 --user-group webrtc-sfu
|
RUN useradd --uid 2004 --user-group webrtc-sfu
|
||||||
@ -23,12 +23,12 @@ RUN cd /app \
|
|||||||
|
|
||||||
|
|
||||||
# =============================
|
# =============================
|
||||||
FROM node:14.19.1-bullseye-slim
|
FROM node:18-bullseye-slim
|
||||||
RUN useradd --uid 2004 --user-group webrtc-sfu
|
RUN useradd --uid 2004 --user-group webrtc-sfu
|
||||||
ENV NODE_ENV production
|
ENV NODE_ENV production
|
||||||
|
|
||||||
COPY --from=builder /app /app
|
COPY --from=builder /app /app
|
||||||
RUN chown -R webrtc-sfu:webrtc-sfu /app/config
|
RUN mkdir /home/webrtc-sfu && chown -R webrtc-sfu:webrtc-sfu /app/config /home/webrtc-sfu
|
||||||
|
|
||||||
USER webrtc-sfu
|
USER webrtc-sfu
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
Submodule mod/webrtc-sfu/bbb-webrtc-sfu updated: 07723a95bf...c0de0ff385
212
sample.env
212
sample.env
@ -6,6 +6,8 @@
|
|||||||
# HTTPS Proxy
|
# HTTPS Proxy
|
||||||
# fully automated Lets Encrypt certificates
|
# fully automated Lets Encrypt certificates
|
||||||
ENABLE_HTTPS_PROXY=true
|
ENABLE_HTTPS_PROXY=true
|
||||||
|
# If your network doesn't allow access to DNS at 8.8.8.8 specify your own resolvers
|
||||||
|
#RESOLVER_ADDRESS=x.x.x.x
|
||||||
|
|
||||||
# coturn (a TURN Server)
|
# coturn (a TURN Server)
|
||||||
# requires either the abhove HTTPS Proxy to be enabled
|
# requires either the abhove HTTPS Proxy to be enabled
|
||||||
@ -44,7 +46,7 @@ ENABLE_GREENLIGHT=true
|
|||||||
# important! change these to any random values
|
# important! change these to any random values
|
||||||
SHARED_SECRET=SuperSecret
|
SHARED_SECRET=SuperSecret
|
||||||
ETHERPAD_API_KEY=SuperEtherpadKey
|
ETHERPAD_API_KEY=SuperEtherpadKey
|
||||||
RAILS_SECRET=SuperRailsSecret
|
RAILS_SECRET=SuperRailsSecret_SuperRailsSecret
|
||||||
POSTGRESQL_SECRET=SuperPostgresSecret
|
POSTGRESQL_SECRET=SuperPostgresSecret
|
||||||
FSESL_PASSWORD=SuperFreeswitchESLPassword
|
FSESL_PASSWORD=SuperFreeswitchESLPassword
|
||||||
|
|
||||||
@ -97,7 +99,7 @@ DEFAULT_PRESENTATION=./mod/nginx/default.pdf
|
|||||||
# options:
|
# options:
|
||||||
# - en-ca-june - EN Canadian June
|
# - en-ca-june - EN Canadian June
|
||||||
# - en-us-allison - US English Allison
|
# - en-us-allison - US English Allison
|
||||||
# - en-us-callie - US English Callie
|
# - en-us-callie - US English Callie (default)
|
||||||
# - de-de-daedalus3 - German by Daedalus3 (https://github.com/Daedalus3/freeswitch-german-soundfiles)
|
# - de-de-daedalus3 - German by Daedalus3 (https://github.com/Daedalus3/freeswitch-german-soundfiles)
|
||||||
# - es-ar-mario - Spanish/Argentina Mario
|
# - es-ar-mario - Spanish/Argentina Mario
|
||||||
# - fr-ca-june - FR Canadian June
|
# - fr-ca-june - FR Canadian June
|
||||||
@ -160,180 +162,42 @@ NUMBER_OF_FRONTEND_NODEJS_PROCESSES=2
|
|||||||
# GREENLIGHT CONFIGURATION
|
# GREENLIGHT CONFIGURATION
|
||||||
# ====================================
|
# ====================================
|
||||||
|
|
||||||
# Microsoft Office365 Login Provider (optional)
|
### SMTP CONFIGURATION
|
||||||
#
|
# Emails are required for the basic features of Greenlight to function.
|
||||||
# For in-depth steps on setting up a Office 365 Login Provider, see:
|
# Please refer to your SMTP provider to get the values for the variables below
|
||||||
#
|
#SMTP_SENDER_EMAIL=
|
||||||
# https://docs.bigbluebutton.org/greenlight/gl-config.html#office365-oauth2
|
#SMTP_SENDER_NAME=
|
||||||
#
|
#SMTP_SERVER=
|
||||||
OFFICE365_KEY=
|
#SMTP_PORT=
|
||||||
OFFICE365_SECRET=
|
#SMTP_DOMAIN=
|
||||||
OFFICE365_HD=
|
#SMTP_USERNAME=
|
||||||
|
#SMTP_PASSWORD=
|
||||||
|
#SMTP_AUTH=
|
||||||
|
#SMTP_STARTTLS_AUTO=true
|
||||||
|
#SMTP_STARTTLS=false
|
||||||
|
#SMTP_TLS=false
|
||||||
|
#SMTP_SSL_VERIFY=true
|
||||||
|
|
||||||
# OAUTH2_REDIRECT allows you to specify the redirect_url passed to oauth on sign in.
|
### EXTERNAL AUTHENTICATION METHODS
|
||||||
# It is useful for cases when Greenlight is deployed behind a Network Load Balancer or proxy
|
#
|
||||||
OAUTH2_REDIRECT=
|
#OPENID_CONNECT_CLIENT_ID=
|
||||||
|
#OPENID_CONNECT_CLIENT_SECRET=
|
||||||
|
#OPENID_CONNECT_ISSUER=
|
||||||
|
#OPENID_CONNECT_REDIRECT=
|
||||||
|
|
||||||
# LDAP Login Provider (optional)
|
# To enable hCaptcha on the user sign up and sign in, define these 2 keys
|
||||||
#
|
#HCAPTCHA_SITE_KEY=
|
||||||
# You can enable LDAP authentication by providing values for the variables below.
|
#HCAPTCHA_SECRET_KEY=
|
||||||
# Configuring LDAP authentication will take precedence over all other providers.
|
|
||||||
# For information about setting up LDAP, see:
|
|
||||||
#
|
|
||||||
# https://docs.bigbluebutton.org/greenlight/gl-config.html#ldap-auth
|
|
||||||
#
|
|
||||||
# LDAP_SERVER=ldap.example.com
|
|
||||||
# LDAP_PORT=389
|
|
||||||
# LDAP_METHOD=plain
|
|
||||||
# LDAP_UID=uid
|
|
||||||
# LDAP_BASE=dc=example,dc=com
|
|
||||||
# LDAP_AUTH=simple
|
|
||||||
# LDAP_BIND_DN=cn=admin,dc=example,dc=com
|
|
||||||
# LDAP_PASSWORD=password
|
|
||||||
# LDAP_ROLE_FIELD=ou
|
|
||||||
# LDAP_FILTER=(&(attr1=value1)(attr2=value2))
|
|
||||||
LDAP_SERVER=
|
|
||||||
LDAP_PORT=
|
|
||||||
LDAP_METHOD=
|
|
||||||
LDAP_UID=
|
|
||||||
LDAP_BASE=
|
|
||||||
LDAP_BIND_DN=
|
|
||||||
LDAP_AUTH=
|
|
||||||
LDAP_PASSWORD=
|
|
||||||
LDAP_ROLE_FIELD=
|
|
||||||
LDAP_FILTER=
|
|
||||||
|
|
||||||
# Set this to true if you want GreenLight to support user signup and login without
|
# Set these if you are using a Simple Storage Service (S3)
|
||||||
# Omniauth. For more information, see:
|
# Uncomment S3_ENDPOINT only if you are using a S3 OTHER than Amazon Web Service (AWS) S3.
|
||||||
#
|
#S3_ACCESS_KEY_ID=
|
||||||
# https://docs.bigbluebutton.org/greenlight/gl-overview.html#accounts-and-profile
|
#S3_SECRET_ACCESS_KEY=
|
||||||
#
|
#S3_REGION=
|
||||||
ALLOW_GREENLIGHT_ACCOUNTS=true
|
#S3_BUCKET=
|
||||||
|
#S3_ENDPOINT=
|
||||||
|
|
||||||
# Set this to true if you want GreenLight to send verification emails upon
|
# Define the default locale language code (i.e. 'en' for English) from the fallowing list:
|
||||||
# the creation of a new account
|
# [en, ar, fr, es]
|
||||||
#
|
#DEFAULT_LOCALE=en
|
||||||
# ALLOW_MAIL_NOTIFICATIONS=true
|
|
||||||
#
|
|
||||||
# The notifications are sent using sendmail, unless the SMTP_SERVER variable is set.
|
|
||||||
# In that case, make sure the rest of the variables are properly set.
|
|
||||||
#
|
|
||||||
# SMTP_SERVER=smtp.gmail.com
|
|
||||||
# SMTP_PORT=587
|
|
||||||
# SMTP_DOMAIN=gmail.com
|
|
||||||
# SMTP_USERNAME=<youremail@gmail.com>
|
|
||||||
# SMTP_PASSWORD=<yourpassword>
|
|
||||||
# SMTP_AUTH=plain
|
|
||||||
# SMTP_STARTTLS_AUTO=true
|
|
||||||
#
|
|
||||||
# If your mail server has a self-signed certificate, you'll also need to include the line below.
|
|
||||||
# Please note that enable this presents its own security risks and should not be done unless necessary.
|
|
||||||
# SMTP_OPENSSL_VERIFY_MODE=none
|
|
||||||
#
|
|
||||||
SMTP_SERVER=
|
|
||||||
SMTP_PORT=
|
|
||||||
SMTP_DOMAIN=
|
|
||||||
SMTP_USERNAME=
|
|
||||||
SMTP_PASSWORD=
|
|
||||||
SMTP_AUTH=
|
|
||||||
SMTP_STARTTLS_AUTO=
|
|
||||||
|
|
||||||
# Specify the email address that all mail is sent from
|
|
||||||
SMTP_SENDER=
|
|
||||||
|
|
||||||
# Prefix for the applications root URL.
|
|
||||||
# Useful for deploying the application to a subdirectory, which is highly recommended
|
|
||||||
# if deploying on a BigBlueButton server. Keep in mind that if you change this, you'll
|
|
||||||
# have to update your authentication callback URL's to reflect this change.
|
|
||||||
#
|
|
||||||
# The recommended prefix is "/b".
|
|
||||||
#
|
|
||||||
RELATIVE_URL_ROOT=/b
|
|
||||||
|
|
||||||
# Specify which settings you would like the users to configure on room creation
|
|
||||||
# or edit after the room has been created
|
|
||||||
# By default, all settings are turned OFF.
|
|
||||||
#
|
|
||||||
# Current settings available:
|
|
||||||
# mute-on-join: Automatically mute users by default when they join a room
|
|
||||||
# require-moderator-approval: Require moderators to approve new users before they can join the room
|
|
||||||
# anyone-can-start: Allows anyone with the join url to start the room in BigBlueButton
|
|
||||||
# all-join-moderator: All users join as moderators in BigBlueButton
|
|
||||||
ROOM_FEATURES=mute-on-join,require-moderator-approval,anyone-can-start,all-join-moderator
|
|
||||||
|
|
||||||
# Specify the maximum number of records to be sent to the BigBlueButton API in one call
|
|
||||||
# Default is set to 25 records
|
|
||||||
PAGINATION_NUMBER=25
|
|
||||||
|
|
||||||
# Specify the maximum number of rows that should be displayed per page for a paginated table
|
|
||||||
# Default is set to 25 rows
|
|
||||||
NUMBER_OF_ROWS=25
|
|
||||||
|
|
||||||
# Specify if you want to display the Google Calendar button
|
|
||||||
# ENABLE_GOOGLE_CALENDAR_BUTTON=true|false
|
|
||||||
ENABLE_GOOGLE_CALENDAR_BUTTON=
|
|
||||||
|
|
||||||
# Set the application into Maintenance Mode
|
|
||||||
#
|
|
||||||
# Current options supported:
|
|
||||||
# true: Renders an error page that does not allow users to access any of the features in the application
|
|
||||||
# false: Application runs normally
|
|
||||||
MAINTENANCE_MODE=false
|
|
||||||
|
|
||||||
# Displays a flash that appears to inform the user of a scheduled maintenance window
|
|
||||||
# This variable should contain ONLY the date and time of the scheduled maintenance
|
|
||||||
#
|
|
||||||
# Ex: MAINTENANCE_WINDOW=Friday August 18 6pm-10pm EST
|
|
||||||
MAINTENANCE_WINDOW=
|
|
||||||
|
|
||||||
# The link to the Report an Issue button that appears on the 500 page and in the Account Dropdown
|
|
||||||
#
|
|
||||||
# Defaults to the Github Issues Page for Greenlight
|
|
||||||
# Button can be disabled by setting the value to blank
|
|
||||||
#
|
|
||||||
# REPORT_ISSUE_URL=https://github.com/bigbluebutton/greenlight/issues/new
|
|
||||||
|
|
||||||
# The link to the Need help? button that appears on the Account Dropdown
|
|
||||||
#
|
|
||||||
# Defaults to the Greenlight documentation
|
|
||||||
# Button can be disabled by setting the value to blank
|
|
||||||
HELP_URL=https://docs.bigbluebutton.org/greenlight/gl-overview.html
|
|
||||||
|
|
||||||
# Comment this out to send logs to STDOUT in production instead of log/production.log .
|
|
||||||
#
|
|
||||||
# RAILS_LOG_TO_STDOUT=true
|
|
||||||
#
|
|
||||||
# When using docker-compose the logs can be sent to an centralized repository like PaperTrail
|
|
||||||
# just by using the built in driver. Make sure to add to docker-compose.yml the next lines:
|
|
||||||
#
|
|
||||||
# logging:
|
|
||||||
# driver: $LOG_DRIVER
|
|
||||||
# options:
|
|
||||||
# syslog-address: $LOG_ADDRESS
|
|
||||||
# tag: $LOG_TAG
|
|
||||||
#
|
|
||||||
# And set this variables up:
|
|
||||||
#
|
|
||||||
# LOG_DRIVER=syslog
|
|
||||||
# LOG_ADDRESS=udp://logs4.papertrailapp.com:[99999]
|
|
||||||
# LOG_TAG=greenlight.example.com:v2
|
|
||||||
#
|
|
||||||
# Check docker-compose and papertrail documentation for encrypting and
|
|
||||||
# protecting access to the log repository.
|
|
||||||
# https://docs.docker.com/config/containers/logging/syslog/#options
|
|
||||||
# https://help.papertrailapp.com/kb/configuration/encrypting-remote-syslog-with-tls-ssl/
|
|
||||||
#
|
|
||||||
# For sending logs to a remote aggregator enable these variables:
|
|
||||||
#
|
|
||||||
# RAILS_LOG_REMOTE_NAME=logxx.papertrailapp.com
|
|
||||||
# RAILS_LOG_REMOTE_PORT=9999
|
|
||||||
# RAILS_LOG_REMOTE_TAG=greenlight
|
|
||||||
#
|
|
||||||
|
|
||||||
# Specify the default registration to be used by Greenlight until an administrator sets the
|
|
||||||
# registration method
|
|
||||||
# Allowed values are:
|
|
||||||
# open - For open registration
|
|
||||||
# invite - For invite only registration
|
|
||||||
# approval - For approve/decline registration
|
|
||||||
DEFAULT_REGISTRATION=open
|
|
||||||
|
@ -16,5 +16,5 @@ if [ ! "$ENABLE_RECORDING" == true ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
docker-compose exec recordings bbb-record $@
|
docker compose exec recordings bbb-record $@
|
||||||
docker-compose logs --tail=15 recordings
|
docker compose logs --tail=15 recordings
|
@ -7,13 +7,18 @@
|
|||||||
set -e
|
set -e
|
||||||
cd "$(dirname "$0")/.."
|
cd "$(dirname "$0")/.."
|
||||||
|
|
||||||
|
git submodule init
|
||||||
|
git submodule update
|
||||||
|
|
||||||
export $(cat tags.env | sed 's/#.*//g' | xargs)
|
export $(cat tags.env | sed 's/#.*//g' | xargs)
|
||||||
|
|
||||||
function checkout {
|
function checkout {
|
||||||
path=$1
|
path=$1
|
||||||
ref=$2
|
ref=$2
|
||||||
pushd $path
|
pushd $path
|
||||||
|
git fetch
|
||||||
git checkout $ref
|
git checkout $ref
|
||||||
|
echo ""
|
||||||
popd > /dev/null
|
popd > /dev/null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,4 +9,4 @@ then
|
|||||||
export $(cat .env | sed 's/#.*//g' | grep "FSESL_PASSWORD" | xargs)
|
export $(cat .env | sed 's/#.*//g' | grep "FSESL_PASSWORD" | xargs)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
docker-compose exec freeswitch fs_cli -H 10.7.7.1 -p "$FSESL_PASSWORD"
|
docker compose exec freeswitch /opt/freeswitch/bin/fs_cli -H 10.7.7.1 -p "$FSESL_PASSWORD"
|
||||||
|
@ -45,18 +45,23 @@ docker run \
|
|||||||
-e TAG_BBB_WEB=${TAG_BBB_WEB} \
|
-e TAG_BBB_WEB=${TAG_BBB_WEB} \
|
||||||
-e TAG_HTML5=${TAG_HTML5} \
|
-e TAG_HTML5=${TAG_HTML5} \
|
||||||
-e TAG_FS_CONFIG=${TAG_FS_CONFIG} \
|
-e TAG_FS_CONFIG=${TAG_FS_CONFIG} \
|
||||||
|
-e TAG_FS_BUILD_FILES=${TAG_FS_BUILD_FILES} \
|
||||||
-e TAG_LEARNING_DASHBOARD=${TAG_LEARNING_DASHBOARD} \
|
-e TAG_LEARNING_DASHBOARD=${TAG_LEARNING_DASHBOARD} \
|
||||||
-e TAG_RECORDINGS=${TAG_RECORDINGS} \
|
-e TAG_RECORDINGS=${TAG_RECORDINGS} \
|
||||||
-e TAG_WEBRTC_SFU=${TAG_WEBRTC_SFU} \
|
-e TAG_WEBRTC_SFU=${TAG_WEBRTC_SFU} \
|
||||||
-e TAG_WEBHOOKS=${TAG_WEBHOOKS} \
|
-e TAG_WEBHOOKS=${TAG_WEBHOOKS} \
|
||||||
-e TAG_PLAYBACK=${TAG_PLAYBACK} \
|
-e TAG_PLAYBACK=${TAG_PLAYBACK} \
|
||||||
-e TAG_PADS=${TAG_PADS} \
|
-e TAG_PADS=${TAG_PADS} \
|
||||||
|
-e TAG_FREESWITCH=${TAG_FREESWITCH} \
|
||||||
|
-e TAG_BBB_PRESENTATION_VIDEO=${TAG_BBB_PRESENTATION_VIDEO} \
|
||||||
|
-e TAG_GREENLIGHT=${TAG_GREENLIGHT} \
|
||||||
-e DEV_MODE=${DEV_MODE:-false} \
|
-e DEV_MODE=${DEV_MODE:-false} \
|
||||||
-e EXTERNAL_IPv6=${EXTERNAL_IPv6:-} \
|
-e EXTERNAL_IPv6=${EXTERNAL_IPv6:-} \
|
||||||
-e ENABLE_RECORDING=${ENABLE_RECORDING:-false} \
|
-e ENABLE_RECORDING=${ENABLE_RECORDING:-false} \
|
||||||
-e REMOVE_OLD_RECORDING=${REMOVE_OLD_RECORDING:-false} \
|
-e REMOVE_OLD_RECORDING=${REMOVE_OLD_RECORDING:-false} \
|
||||||
-e RECORDING_MAX_AGE_DAYS=${RECORDING_MAX_AGE_DAYS:-14} \
|
-e RECORDING_MAX_AGE_DAYS=${RECORDING_MAX_AGE_DAYS:-14} \
|
||||||
-e ENABLE_HTTPS_PROXY=${ENABLE_HTTPS_PROXY:-false} \
|
-e ENABLE_HTTPS_PROXY=${ENABLE_HTTPS_PROXY:-false} \
|
||||||
|
-e RESOLVER_ADDRESS=${RESOLVER_ADDRESS} \
|
||||||
-e ENABLE_WEBHOOKS=${ENABLE_WEBHOOKS:-false} \
|
-e ENABLE_WEBHOOKS=${ENABLE_WEBHOOKS:-false} \
|
||||||
-e ENABLE_COTURN=${ENABLE_COTURN:-false} \
|
-e ENABLE_COTURN=${ENABLE_COTURN:-false} \
|
||||||
-e ENABLE_GREENLIGHT=${ENABLE_GREENLIGHT:-false} \
|
-e ENABLE_GREENLIGHT=${ENABLE_GREENLIGHT:-false} \
|
||||||
|
49
scripts/greenlight-migrate-v2-v3
Executable file
49
scripts/greenlight-migrate-v2-v3
Executable file
@ -0,0 +1,49 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
cd $(dirname $0)/..
|
||||||
|
|
||||||
|
# load .env
|
||||||
|
if [ -f .env ]
|
||||||
|
then
|
||||||
|
export $(cat .env | sed 's/#.*//g' | grep -E "RAILS_SECRET|POSTGRESQL_SECRET" | xargs)
|
||||||
|
fi
|
||||||
|
|
||||||
|
COMPOSE_PREFIX=$(docker compose ps | grep postgres | awk '{print $1}' | sed 's/-postgres-1//')
|
||||||
|
|
||||||
|
docker kill -s SIGKILL greenlight-v2-tmp 2>/dev/null
|
||||||
|
sleep 1
|
||||||
|
|
||||||
|
echo "temporarily starting old greenlight v2..."
|
||||||
|
docker run \
|
||||||
|
--rm \
|
||||||
|
--detach --name greenlight-v2-tmp \
|
||||||
|
--network ${COMPOSE_PREFIX}_bbb-net \
|
||||||
|
--env-file .env \
|
||||||
|
-e DB_ADAPTER=postgresql \
|
||||||
|
-e DB_HOST=10.7.7.22 \
|
||||||
|
-e DB_NAME=greenlight \
|
||||||
|
-e DB_USERNAME=postgres \
|
||||||
|
-e DB_PASSWORD=${POSTGRESQL_SECRET:-password} \
|
||||||
|
-e SECRET_KEY_BASE=${RAILS_SECRET} \
|
||||||
|
-e V3_ENDPOINT="http://10.7.7.21:3000" \
|
||||||
|
-e V3_SECRET_KEY_BASE=${RAILS_SECRET} \
|
||||||
|
bigbluebutton/greenlight:v2.14
|
||||||
|
|
||||||
|
docker logs -f greenlight-v2-tmp &
|
||||||
|
LOGGING_PID=$!
|
||||||
|
|
||||||
|
while ! docker exec greenlight-v2-tmp nc -zw3 127.0.0.1 80
|
||||||
|
do
|
||||||
|
echo "Waiting for greenlight v2 to start up ..."
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "greenlight is up! starting migrations"
|
||||||
|
|
||||||
|
docker exec -it greenlight-v2-tmp bundle exec rake migrations:roles && \
|
||||||
|
docker exec -it greenlight-v2-tmp bundle exec rake migrations:users && \
|
||||||
|
docker exec -it greenlight-v2-tmp bundle exec rake migrations:rooms && \
|
||||||
|
docker exec -it greenlight-v2-tmp bundle exec rake migrations:settings
|
||||||
|
|
||||||
|
kill $LOGGING_PID
|
||||||
|
docker kill greenlight-v2-tmp
|
@ -31,11 +31,11 @@ fi
|
|||||||
docker build -t alangecker/bbb-docker-base-java:latest mod/base-java
|
docker build -t alangecker/bbb-docker-base-java:latest mod/base-java
|
||||||
|
|
||||||
# buld and push other images
|
# buld and push other images
|
||||||
docker-compose build
|
docker compose build
|
||||||
|
|
||||||
# push images
|
# push images
|
||||||
docker push alangecker/bbb-docker-base-java:latest
|
docker push alangecker/bbb-docker-base-java:latest
|
||||||
docker-compose push \
|
docker compose push \
|
||||||
html5-backend-1 \
|
html5-backend-1 \
|
||||||
bbb-web \
|
bbb-web \
|
||||||
freeswitch \
|
freeswitch \
|
||||||
|
@ -208,4 +208,4 @@ echo "make sure to recreate the docker-compose.yml after each change"
|
|||||||
echo " $ ./scripts/generate-compose"
|
echo " $ ./scripts/generate-compose"
|
||||||
echo ""
|
echo ""
|
||||||
echo "to start bigbluebutton run"
|
echo "to start bigbluebutton run"
|
||||||
echo " $ docker-compose up -d"
|
echo " $ docker compose up -d"
|
||||||
|
@ -21,7 +21,7 @@ else
|
|||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "# pull newest images"
|
echo "# pull newest images"
|
||||||
docker-compose pull --ignore-pull-failures
|
docker compose pull --ignore-pull-failures
|
||||||
|
|
||||||
|
|
||||||
COMMIT_HASH=$(git rev-parse --short HEAD)
|
COMMIT_HASH=$(git rev-parse --short HEAD)
|
||||||
@ -33,6 +33,6 @@ else
|
|||||||
echo "we are on $COMMIT_HASH ($BRANCH_NAME)"
|
echo "we are on $COMMIT_HASH ($BRANCH_NAME)"
|
||||||
echo ""
|
echo ""
|
||||||
echo "use following command for restarting bbb:"
|
echo "use following command for restarting bbb:"
|
||||||
echo " $ docker-compose up -d"
|
echo " $ docker compose up -d --no-build"
|
||||||
echo "-------------------------------------"
|
echo "-------------------------------------"
|
||||||
fi
|
fi
|
@ -17,8 +17,7 @@ else
|
|||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "# pull newest git submodules"
|
echo "# pull newest git submodules"
|
||||||
git submodule init
|
./scripts/checkout-submodules
|
||||||
git submodule update
|
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "# recreate docker-compose.yml"
|
echo "# recreate docker-compose.yml"
|
||||||
@ -26,14 +25,14 @@ else
|
|||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "# pull newest images"
|
echo "# pull newest images"
|
||||||
docker-compose pull --ignore-pull-failures
|
docker compose pull --ignore-pull-failures
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "# rebuild images"
|
echo "# rebuild images"
|
||||||
docker build -t alangecker/bbb-docker-base-java:latest mod/base-java
|
docker build -t alangecker/bbb-docker-base-java:latest mod/base-java
|
||||||
|
|
||||||
# rebuild everything which got modified
|
# rebuild everything which got modified
|
||||||
docker-compose build
|
docker compose build
|
||||||
|
|
||||||
COMMIT_HASH=$(git rev-parse --short HEAD)
|
COMMIT_HASH=$(git rev-parse --short HEAD)
|
||||||
BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD)
|
BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD)
|
||||||
@ -44,6 +43,6 @@ else
|
|||||||
echo "we are on $COMMIT_HASH ($BRANCH_NAME)"
|
echo "we are on $COMMIT_HASH ($BRANCH_NAME)"
|
||||||
echo ""
|
echo ""
|
||||||
echo "use following command for restarting bbb:"
|
echo "use following command for restarting bbb:"
|
||||||
echo " $ docker-compose up -d"
|
echo " $ docker compose up -d"
|
||||||
echo "-------------------------------------"
|
echo "-------------------------------------"
|
||||||
fi
|
fi
|
34
tags.env
34
tags.env
@ -1,27 +1,31 @@
|
|||||||
# after changing a tag always run following commands to apply
|
# after changing a tag always run following commands to apply
|
||||||
# - ./scripts/generate-compose
|
# - ./scripts/generate-compose
|
||||||
# - docker-compose build
|
# - docker compose build
|
||||||
|
|
||||||
|
|
||||||
# https://gitlab.senfcall.de/senfcall-public/docker-bbb-build
|
# https://hub.docker.com/r/bigbluebutton/bbb-build
|
||||||
BBB_BUILD_TAG=v2022-03-30
|
BBB_BUILD_TAG=bbb27-2023-06-13-java17
|
||||||
|
|
||||||
# https://github.com/bigbluebutton/bigbluebutton
|
# https://github.com/bigbluebutton/bigbluebutton
|
||||||
TAG_COMMON_MESSAGE=v2.5.5
|
TAG_COMMON_MESSAGE=v2.7.0
|
||||||
TAG_APPS_AKKA=v2.5.5
|
TAG_APPS_AKKA=v2.7.3
|
||||||
TAG_FSESL_AKKA=v2.5.5
|
TAG_FSESL_AKKA=v2.7.0
|
||||||
TAG_BBB_WEB=v2.5.5
|
TAG_BBB_WEB=v2.7.3
|
||||||
TAG_HTML5=v2.5.5
|
TAG_HTML5=v2.7.3
|
||||||
TAG_RECORDINGS=v2.5.5
|
TAG_RECORDINGS=v2.7.0
|
||||||
|
|
||||||
TAG_LEARNING_DASHBOARD=v2.5.5
|
TAG_LEARNING_DASHBOARD=v2.7.3
|
||||||
TAG_FS_CONFIG=v2.5.0
|
TAG_BBB_PRESENTATION_VIDEO=4.0.4
|
||||||
|
TAG_FS_CONFIG=v2.7.0
|
||||||
|
TAG_FS_BUILD_FILES=v2.7.0
|
||||||
|
|
||||||
|
TAG_FREESWITCH=v1.10.10
|
||||||
|
TAG_GREENLIGHT=v3.1.0
|
||||||
|
|
||||||
# individual git submodules
|
# individual git submodules
|
||||||
# use `./scripts/checkout-submodules` to ensure, that the submodules
|
# use `./scripts/checkout-submodules` to ensure, that the submodules
|
||||||
# match the provided tags here
|
# match the provided tags here
|
||||||
TAG_WEBRTC_SFU=v2.8.2
|
TAG_WEBRTC_SFU=v2.12.0
|
||||||
TAG_WEBHOOKS=v2.6.0
|
TAG_WEBHOOKS=v2.6.1
|
||||||
TAG_PLAYBACK=v4.0.0
|
TAG_PLAYBACK=v5.0.2
|
||||||
TAG_PADS=v1.2.1
|
TAG_PADS=v1.5.2
|
||||||
|
Reference in New Issue
Block a user