mirror of
https://github.com/bigbluebutton/docker.git
synced 2025-08-15 07:12:32 +02:00
Compare commits
14 Commits
Author | SHA1 | Date | |
---|---|---|---|
b627949e22 | |||
45d13f46cc | |||
40e54de7f0 | |||
75f7a1fc26 | |||
437022b6bf | |||
f6e71fc9e3 | |||
bf1820c102 | |||
2ad8ccf20c | |||
7960113f3a | |||
608bf78d15 | |||
6e0d7520d3 | |||
da20874a6e | |||
2bee0acb10 | |||
2f2907d5d6 |
11
CHANGELOG.md
11
CHANGELOG.md
@ -2,6 +2,17 @@
|
|||||||
|
|
||||||
## Unreleased
|
## Unreleased
|
||||||
|
|
||||||
|
## Release v3.0.4 (2025-03-27)
|
||||||
|
- update to 3.0.4 @tibroc [#347](https://github.com/bigbluebutton/docker/pull/347
|
||||||
|
- fix not accepting length of dial in / voiceBridge numbers @alangecker
|
||||||
|
- upgrade: migrate postgres & greenlight data @alangecker
|
||||||
|
|
||||||
|
## Release v3.0.1 (2025-03-11)
|
||||||
|
**Breaking change!** make sure to read the [upgrading notes](https://github.com/bigbluebutton/docker/blob/develop/docs/upgrading.md)
|
||||||
|
|
||||||
|
- :tada: **BigBlueButton 3.0** [#313](https://github.com/bigbluebutton/docker/pull/313)
|
||||||
|
|
||||||
|
|
||||||
## Release v2.7.3 (2023-12-08)
|
## Release v2.7.3 (2023-12-08)
|
||||||
|
|
||||||
**Breaking change!** make sure to read the [upgrading notes](https://github.com/bigbluebutton/docker/blob/develop/docs/upgrading.md)
|
**Breaking change!** make sure to read the [upgrading notes](https://github.com/bigbluebutton/docker/blob/develop/docs/upgrading.md)
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
# 📦 BigBlueButton 3.0 Docker
|
# 📦 BigBlueButton 3.0 Docker
|
||||||
|
|
||||||
Version: 3.0.1 | [Changelog](CHANGELOG.md) | [Issues](https://github.com/bigbluebutton/docker/issues) | [Upgrading](docs/upgrading.md) | [Development](docs/development.md)
|
Version: 3.0.4 | [Changelog](CHANGELOG.md) | [Issues](https://github.com/bigbluebutton/docker/issues) | [Upgrading](docs/upgrading.md) | [Development](docs/development.md)
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
- Easy installation
|
- Easy installation
|
||||||
@ -24,6 +24,7 @@ Version: 3.0.1 | [Changelog](CHANGELOG.md) | [Issues](https://github.com/bigblue
|
|||||||
- Root access (bbb-docker uses host networking, so it won't work with Kubernetes, any "CaaS"-Service, etc.)
|
- 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)
|
- Public IPv4 (expect issues with a firewall / NAT)
|
||||||
- firewall allows internal networking (e.g. for ufw: `ufw allow 10.7.7.0/24`)
|
- firewall allows internal networking (e.g. for ufw: `ufw allow 10.7.7.0/24`)
|
||||||
|
- git installed
|
||||||
|
|
||||||
## Install production server
|
## Install production server
|
||||||
1. Ensure the requirements above are fulfilled (it really doesn't work without them)
|
1. Ensure the requirements above are fulfilled (it really doesn't work without them)
|
||||||
@ -40,7 +41,7 @@ Version: 3.0.1 | [Changelog](CHANGELOG.md) | [Issues](https://github.com/bigblue
|
|||||||
$ git clone https://github.com/bigbluebutton/docker.git bbb-docker
|
$ git clone https://github.com/bigbluebutton/docker.git bbb-docker
|
||||||
$ cd bbb-docker
|
$ cd bbb-docker
|
||||||
|
|
||||||
# use the more stable main branch (sometimes older)
|
# optional: use the more stable main branch (often much older)
|
||||||
$ git checkout main
|
$ git checkout main
|
||||||
```
|
```
|
||||||
4. Run setup:
|
4. Run setup:
|
||||||
|
@ -509,7 +509,7 @@ services:
|
|||||||
- redis
|
- redis
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
DATABASE_URL: postgres://postgres:${POSTGRESQL_SECRET:-password}@postgres:5432/greenlight-v3
|
DATABASE_URL: postgres://postgres:${POSTGRESQL_SECRET:-password}@postgres:5432/greenlight
|
||||||
REDIS_URL: redis://redis:6379
|
REDIS_URL: redis://redis:6379
|
||||||
{{ if $ignore_tls_cert_errors }}
|
{{ if $ignore_tls_cert_errors }}
|
||||||
BIGBLUEBUTTON_ENDPOINT: http://10.7.7.1:48083/bigbluebutton/api
|
BIGBLUEBUTTON_ENDPOINT: http://10.7.7.1:48083/bigbluebutton/api
|
||||||
|
@ -2,7 +2,9 @@
|
|||||||
|
|
||||||
### Breaking changes `v2.7.x` -> `v3.0.x`
|
### Breaking changes `v2.7.x` -> `v3.0.x`
|
||||||
- **A setup behind NAT does currently not work!**
|
- **A setup behind NAT does currently not work!**
|
||||||
- on every SIP Profiles the extension field needs to be set to "DIALIN"
|
- `LETSENCRYPT_EMAIL` is now required in `.env` when used with the integrated HAProxy
|
||||||
|
- the greenlight postgres database is now called `greenlight` instead of `greenlight-v3`
|
||||||
|
|
||||||
|
|
||||||
### Breaking changes `v2.6.x` -> `v2.7.x`
|
### Breaking changes `v2.6.x` -> `v2.7.x`
|
||||||
- We use now Docker Compose V2
|
- We use now Docker Compose V2
|
||||||
|
@ -21,4 +21,6 @@ presentationBaseURL=http://{{ .Env.DOMAIN }}/bigbluebutton/presentation
|
|||||||
beans.presentationService.defaultUploadedPresentation=${bigbluebutton.web.serverURL}/default.pdf
|
beans.presentationService.defaultUploadedPresentation=${bigbluebutton.web.serverURL}/default.pdf
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|
||||||
learningDashboardEnabled={{ .Env.ENABLE_LEARNING_DASHBOARD }}
|
learningDashboardEnabled={{ .Env.ENABLE_LEARNING_DASHBOARD }}
|
||||||
|
|
||||||
|
defaultNumDigitsForTelVoice=9
|
@ -11,7 +11,24 @@ RUN cd /bbb-playback && npm install && npm run-script build
|
|||||||
FROM bigbluebutton/bbb-build:$BBB_BUILD_TAG AS builder-html5
|
FROM bigbluebutton/bbb-build:$BBB_BUILD_TAG AS builder-html5
|
||||||
COPY --from=src-html5 / /source
|
COPY --from=src-html5 / /source
|
||||||
RUN cd /source && CI=true npm ci
|
RUN cd /source && CI=true npm ci
|
||||||
RUN cd /source && DISABLE_ESLINT_PLUGIN=true npm run build
|
RUN cd /source && DISABLE_ESLINT_PLUGIN=true npm run build-safari && npm run build
|
||||||
|
RUN cd /source/dist && \
|
||||||
|
HASH=$(ls | grep -Eo 'bundle\.[a-f0-9]{20}\.js' | head -n 1 | grep -Eo '[a-f0-9]{20}') && \
|
||||||
|
if [ -z "$HASH" ]; then \
|
||||||
|
echo "Bundle hash not found."; \
|
||||||
|
else \
|
||||||
|
for FILE in *.safari.js *.safari.js.map; do \
|
||||||
|
if [[ "$FILE" == *"$HASH"* ]]; then \
|
||||||
|
continue; \
|
||||||
|
fi; \
|
||||||
|
PREFIX="${FILE%%.safari.js*}"; \
|
||||||
|
SUFFIX="${FILE#*.safari.js}"; \
|
||||||
|
NEW_NAME="${PREFIX}.${HASH}.safari.js${SUFFIX}"; \
|
||||||
|
echo "Renaming $FILE → $NEW_NAME"; \
|
||||||
|
mv "$FILE" "$NEW_NAME"; \
|
||||||
|
done; \
|
||||||
|
fi
|
||||||
|
|
||||||
RUN find /source/dist -name '*.js' -exec gzip -k -f -9 '{}' \; \
|
RUN find /source/dist -name '*.js' -exec gzip -k -f -9 '{}' \; \
|
||||||
&& find /source/dist -name '*.css' -exec gzip -k -f -9 '{}' \; \
|
&& find /source/dist -name '*.css' -exec gzip -k -f -9 '{}' \; \
|
||||||
&& find /source/dist -name '*.wasm' -exec gzip -k -f -9 '{}' \;
|
&& find /source/dist -name '*.wasm' -exec gzip -k -f -9 '{}' \;
|
||||||
|
Submodule repos/bbb-playback updated: 4c8e3166a9...a2e4676d56
Submodule repos/bbb-webhooks updated: a3e2f1fe2f...7ed5fdb417
Submodule repos/bbb-webrtc-recorder updated: b121d3caa4...95ab45f4c7
Submodule repos/bbb-webrtc-sfu updated: 0bda4b00a2...e5a4bab5bd
Submodule repos/bigbluebutton updated: 398c4bc47c...ef2dda435e
10
repos/tags
10
repos/tags
@ -6,9 +6,9 @@
|
|||||||
repos/bbb-etherpad-plugin 88f3f6b
|
repos/bbb-etherpad-plugin 88f3f6b
|
||||||
repos/bbb-etherpad-skin 8328b77
|
repos/bbb-etherpad-skin 8328b77
|
||||||
repos/bbb-pads v1.5.3
|
repos/bbb-pads v1.5.3
|
||||||
repos/bbb-playback v5.2.1
|
repos/bbb-playback v5.3.1
|
||||||
repos/bbb-webhooks v3.3.0
|
repos/bbb-webhooks v3.3.1
|
||||||
repos/bbb-webrtc-recorder v0.7.0
|
repos/bbb-webrtc-recorder v0.8.0
|
||||||
repos/bbb-webrtc-sfu v2.17.0-beta.4
|
repos/bbb-webrtc-sfu v2.17.0-beta.6
|
||||||
repos/bigbluebutton v3.0.1
|
repos/bigbluebutton v3.0.4
|
||||||
repos/freeswitch v1.10.12
|
repos/freeswitch v1.10.12
|
||||||
|
@ -36,7 +36,7 @@ function get_tag {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# https://hub.docker.com/r/bigbluebutton/bbb-build
|
# https://hub.docker.com/r/bigbluebutton/bbb-build
|
||||||
BBB_BUILD_TAG=v3.0.x-release--2025-02-06-143818
|
BBB_BUILD_TAG=v3.0.x-release
|
||||||
|
|
||||||
docker run \
|
docker run \
|
||||||
--rm \
|
--rm \
|
||||||
|
57
scripts/postgres-migrate
Executable file
57
scripts/postgres-migrate
Executable file
@ -0,0 +1,57 @@
|
|||||||
|
#!/bin/bash -e
|
||||||
|
|
||||||
|
OLD_DATA_DIR=$(realpath "$1")
|
||||||
|
NEW_DATA_DIR=$(realpath "$2")
|
||||||
|
NEW_POSTGRES_VERSION=$3
|
||||||
|
|
||||||
|
if [ -d "$NEW_DATA_DIR" ]; then
|
||||||
|
echo "new postgres data directory $2 already exists. this is not expected"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
OLD_PG_VERSION=$(cat "$OLD_DATA_DIR/PG_VERSION")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
echo spin up a temporary postgres instance on $OLD_DATA_DIR
|
||||||
|
TEMP_CONTAINER_ID=$(docker run --detach --rm "-v=$OLD_DATA_DIR:/var/lib/postgresql/data" -e POSTGRES_HOST_AUTH_METHOD=trust postgres:$OLD_PG_VERSION-alpine)
|
||||||
|
|
||||||
|
until docker exec $TEMP_CONTAINER_ID psql -U postgres -c "select 1" > /dev/null 2>&1; do
|
||||||
|
echo "Waiting for postgres server..."
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "find old greenlight database..."
|
||||||
|
if docker exec $TEMP_CONTAINER_ID psql -U postgres -lqt | cut -d \| -f 1 | grep greenlight-v3; then
|
||||||
|
OLD_DATABASE=greenlight-v3
|
||||||
|
elif docker exec $TEMP_CONTAINER_ID psql -U postgres -lqt | cut -d \| -f 1 | grep greenlight; then
|
||||||
|
OLD_DATABASE=greenlight
|
||||||
|
fi
|
||||||
|
echo "old database is called $OLD_DATABASE"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo "dumping data from old databse..."
|
||||||
|
GREENLIGHT_DUMP=$(mktemp)
|
||||||
|
docker exec $TEMP_CONTAINER_ID pg_dump -U postgres $OLD_DATABASE > $GREENLIGHT_DUMP
|
||||||
|
docker stop $TEMP_CONTAINER_ID
|
||||||
|
|
||||||
|
|
||||||
|
echo spin up a temporary postgres instance on $NEW_DATA_DIR
|
||||||
|
TEMP_CONTAINER_ID=$(docker run --detach --rm "-v=$NEW_DATA_DIR:/var/lib/postgresql/data" -e POSTGRES_HOST_AUTH_METHOD=trust postgres:$NEW_POSTGRES_VERSION-alpine)
|
||||||
|
|
||||||
|
until docker exec $TEMP_CONTAINER_ID psql -U postgres -c "select 1" > /dev/null 2>&1; do
|
||||||
|
echo "Waiting for postgres server..."
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "create all databases..."
|
||||||
|
for database in "bbb_graphql" "hasura_app" "greenlight"; do
|
||||||
|
echo "creating $database"
|
||||||
|
docker exec $TEMP_CONTAINER_ID psql -U postgres -c "CREATE DATABASE $database;" -c "GRANT ALL PRIVILEGES ON DATABASE $database TO postgres;"
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "restoring greenlight from dump..."
|
||||||
|
cat $GREENLIGHT_DUMP | docker exec -i $TEMP_CONTAINER_ID psql -U postgres greenlight
|
||||||
|
|
||||||
|
docker stop $TEMP_CONTAINER_ID
|
@ -24,7 +24,7 @@ else
|
|||||||
echo "# checking for old volumes & migrate them"
|
echo "# checking for old volumes & migrate them"
|
||||||
COMPOSE_PREFIX=$(docker compose config | grep '^name:' | awk '{print $2}')
|
COMPOSE_PREFIX=$(docker compose config | grep '^name:' | awk '{print $2}')
|
||||||
|
|
||||||
function migrate {
|
function migrate_vol {
|
||||||
VOLUME=${COMPOSE_PREFIX}_${1}
|
VOLUME=${COMPOSE_PREFIX}_${1}
|
||||||
EXISTING=$(docker volume ls | grep $VOLUME | tail -n1 | awk '{print $2}')
|
EXISTING=$(docker volume ls | grep $VOLUME | tail -n1 | awk '{print $2}')
|
||||||
if [ -n "$EXISTING" ]; then
|
if [ -n "$EXISTING" ]; then
|
||||||
@ -36,12 +36,25 @@ else
|
|||||||
docker volume rm $EXISTING
|
docker volume rm $EXISTING
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
migrate bigbluebutton ./data/bigbluebutton
|
migrate_vol bigbluebutton ./data/bigbluebutton
|
||||||
migrate vol-freeswitch ./data/freeswitch-meetings
|
migrate_vol vol-freeswitch ./data/freeswitch-meetings
|
||||||
migrate vol-mediasoup ./data/mediasoup
|
migrate_vol vol-mediasoup ./data/mediasoup
|
||||||
|
|
||||||
# TODO: migrate postgres database
|
if [ -d "./postgres-data" ]; then
|
||||||
# TODO: migrate greenlight-data
|
echo "folder ./postgres-data still exists and probably uses postgres 12. migrating to a fresh postgres 16 data directory..."
|
||||||
|
docker compose down --remove-orphans
|
||||||
|
./scripts/postgres-migrate ./postgres-data ./data/postgres 16
|
||||||
|
mv postgres-data postgres-data.automigrate-bak
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -d "./greenlight-data" ]; then
|
||||||
|
if [ -d "./data/greenlight" ]; then
|
||||||
|
mv ./data/greenlight ./data/greenlight.automigrate-bak
|
||||||
|
fi
|
||||||
|
mv ./greenlight-data ./data/greenlight
|
||||||
|
fi
|
||||||
|
|
||||||
|
# TODO: ask for LETSENCRYPT_EMAIL
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "# pull newest images"
|
echo "# pull newest images"
|
||||||
|
Reference in New Issue
Block a user