diff --git a/README.md b/README.md index dc617e5..0135715 100644 --- a/README.md +++ b/README.md @@ -10,57 +10,8 @@ An internet connection is required. It can be a shared network ( no need to forw ## SSL certificate -Running a BigBlueButton server requires a SSL certificate. For this setup we're going to configure our own CA and emit our own certificate. +Running a BigBlueButton server requires a SSL certificate. The install script will automatically generate an self-signed certificate or you can rather specify a folder which contains a previous generated certificate. -### Create root CA - -The following commands will create a root certificate authority with a random private key passphrase. - -```sh -mkdir ~/bbb-docker-dev-setup/ -cd ~/bbb-docker-dev-setup/ - -openssl rand -base64 48 > bbb-dev-ca.pass ; -chmod 600 bbb-dev-ca.pass ; -openssl genrsa -des3 -out bbb-dev-ca.key -passout file:bbb-dev-ca.pass 2048 ; - -openssl req -x509 -new -nodes -key bbb-dev-ca.key -sha256 -days 1460 -passin file:bbb-dev-ca.pass -out bbb-dev-ca.crt -subj "/C=CA/ST=BBB/L=BBB/O=BBB/OU=BBB/CN=BBB-DEV" ; -``` - -Copy the CA to your trusted certificates ( so your browser will accept this certificate ): - -```sh -sudo mkdir /usr/local/share/ca-certificates/bbb-dev/ -sudo cp ~/bbb-docker-dev-setup/bbb-dev-ca.crt /usr/local/share/ca-certificates/bbb-dev/ -sudo chmod 644 /usr/local/share/ca-certificates/bbb-dev/bbb-dev-ca.crt -sudo update-ca-certificates -``` - -### Generate a certificate for your first local BBB server - -Here we're going to generate a certificate for domain `bbb-dev-01.test`. - -```sh -cd ~/bbb-docker-dev-setup/ -# change here if you want a different name -NAME="bbb-dev-01" -HOSTNAME="${NAME}.test" -openssl genrsa -out ${HOSTNAME}.key 2048 -rm ${HOSTNAME}.csr ${HOSTNAME}.crt ${HOSTNAME}.key -cat > ${HOSTNAME}.ext << EOF -authorityKeyIdentifier=keyid,issuer -basicConstraints=CA:FALSE -keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment -subjectAltName = @alt_names -[alt_names] -DNS.1 = ${HOSTNAME} -EOF - -openssl req -nodes -newkey rsa:2048 -keyout ${HOSTNAME}.key -out ${HOSTNAME}.csr -subj "/C=CA/ST=BBB/L=BBB/O=BBB/OU=BBB/CN=${HOSTNAME}" -addext "subjectAltName = DNS:${HOSTNAME}" - -openssl x509 -req -in ${HOSTNAME}.csr -CA bbb-dev-ca.crt -CAkey bbb-dev-ca.key -CAcreateserial -out ${HOSTNAME}.crt -days 825 -sha256 -passin file:bbb-dev-ca.pass -extfile ${HOSTNAME}.ext -cd -``` ## Docker setup @@ -71,105 +22,160 @@ sudo usermod -aG docker `whoami` sudo reboot ``` - ## Container setup -This docker image is running a single container with BBB packages built from `develop` branch. - -Create a script in your home directory named `create_bbb.sh` with the following content: +1. Save (right click, save as) the creation script in home directory (`~`): [create_bbb.sh](create_bbb.sh?raw=1) +2. Add permissions to the script: ```sh -#!/bin/bash -NAME="bbb-dev-01" # change here if you want a different name -HOSTNAME="${NAME}.test" -# IMAGE=imdt/bigbluebutton:2.4.x-develop # (for 2.4 development) -# IMAGE=imdt/bigbluebutton:2.6.x-develop # (for 2.6 development) -IMAGE=imdt/bigbluebutton:2.5.x-develop # (for 2.5 development) - -# retag the commit to force a lookup but keep in cache -docker image inspect $IMAGE &>/dev/null && ( docker image tag $IMAGE $IMAGE-previous ; docker image rm $IMAGE ) - -# kill/remove existing container -docker inspect $NAME &> /dev/null && ( - echo "Container with name $NAME already exists, removing." - docker kill $NAME ; - docker rm $NAME ; -) - -if [ -d $HOME/$NAME ] ; then - echo "Directory $HOME/$NAME already exists, not initializing." - sleep 2; -else - mkdir $HOME/$NAME/ - cd $HOME/$NAME/ - git clone https://github.com/bigbluebutton/bigbluebutton.git -fi - -cd $HOME/$NAME/ -mkdir $HOME/$NAME/certs/ -p -cp ~/bbb-docker-dev-setup/bbb-dev-ca.crt certs/ -cat ~/bbb-docker-dev-setup/$HOSTNAME.crt > certs/fullchain.pem -cat ~/bbb-docker-dev-setup/bbb-dev-ca.crt >> certs/fullchain.pem -cat ~/bbb-docker-dev-setup/$HOSTNAME.key > certs/privkey.pem - -cd -BBB_SRC_FOLDER=$HOME/$NAME/bigbluebutton - -docker run -d --name=$NAME --hostname=$HOSTNAME --env="NODE_EXTRA_CA_CERTS=/usr/local/share/ca-certificates/bbb-dev/bbb-dev-ca.crt" --env="container=docker" --env="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" --env="DEBIAN_FRONTEND=noninteractive" --volume="/var/run/docker.sock:/var/run/docker.sock:rw" --cap-add="NET_ADMIN" --privileged --volume="$HOME/$NAME/certs/:/local/certs:rw" --volume="/sys/fs/cgroup:/sys/fs/cgroup:ro" --volume="$BBB_SRC_FOLDER:/home/bigbluebutton/src:rw" --volume=docker_in_docker$NAME:/var/lib/docker -t $IMAGE - -mkdir $HOME/.bbb/ &> /dev/null -echo "docker exec -u bigbluebutton -w /home/bigbluebutton/ -it $NAME /bin/bash -l" > $HOME/.bbb/$NAME.sh -chmod 755 $HOME/.bbb/$NAME.sh - -echo "docker exec -u bigbluebutton -w /home/bigbluebutton/ $NAME /bin/hostname --ip-address" > $HOME/.bbb/ip-$NAME.sh -chmod 755 $HOME/.bbb/ip-$NAME.sh +chmod +x create_bbb.sh ``` -Add permissions to the script: - -```sh -chmod 755 create_bbb.sh +3. Run the script ( it will remove previously created dockers and create a new one): +Docker **bbb 2.6** +``` +./create_bbb.sh --image=imdt/bigbluebutton:2.6.x-develop --update bbb26 +``` +Docker **bbb 2.5** +``` +./create_bbb.sh --image=imdt/bigbluebutton:2.5.x-develop --update bbb25 +``` +Docker **bbb 2.4** +``` +./create_bbb.sh --image=imdt/bigbluebutton:2.4.x-develop --update bbb24 ``` -Run the script ( it will remove previously created dockers and create a new one): -```sh - ./create_bbb.sh -``` +Parameters: +`./create_bbb.sh [--update] [--fork=github_user] [--domain=domain_name] [--ip=ip_address] [--image=docker_image] [--cert=certificate_dir] {name}` +- {name}: Name of the container (e.g `bbb26`) **(REQUIRED)** +- --update: check for new image version `--update` +- --domain: set the host domain (e.g `--domain=test`), default: `test`. BBB URL will be `https://{NAME} + {DOMAIN}` +- --cert: specify the directory which contains a certificate (`fullchain.pem` and `privkey.pem`) (e.g `--cert=/tmp`) *(if absent a new certificate will be created)* +- --ip: force container IP (e.g `--ip=172.17.0.2`) +- --fork: Username in Github with bbb Fork `--fork=bigbluebutton` +- --image: Force an image different than default `--image=imdt/bigbluebutton:2.6.x-develop` +## Using the container -## Shell session within the container +### SSH session within the container +``` +ssh bbb26 +``` +Replace **bbb26** with the {name} param of `create_bbb.sh` -You can open a shell session with the following command: -```sh -~/.bbb/bbb-dev-01.sh -``` - -## Configure your local machine DNS - -Your computer `/etc/hosts` file must be configured in order to resolve the name of your container. You can do it by running the following command: - -```sh -echo `~/.bbb/ip-bbb-dev-01.sh | xargs -n 1 echo -n`" bbb-dev-01.test." | sudo tee -a /etc/hosts -``` - -## Running HTML5 from source code - -To execute HTML5 component from source code, you need to open a shell session within your container ( see previous section ) and execute: - -```sh -# Restart all BBB services -sudo bbb-conf --restart - -## Stop MongoDB and bbb-html5 services that are running from packages -sudo systemctl stop bbb-html5 mongod - -## Start meteor in development mode ( it starts a bundled mongo too ) -cd ~/src/bigbluebutton-html5/ -npm install -npm start -``` - -That's all, open https://bbb-dev-01.test in your browser and enjoy. +That's all, open https://bbb26.test in your browser and enjoy. PS: if you see certificate error in your browser, you need to add the CA certificate in it's trusted certificates. Instructions for Chrome and Firefox can be found [here](https://github.com/bigbluebutton/docker-dev/issues/1) + +## Removing an existing container +``` +./create_bbb.sh --remove {container_name} +``` + +or rather you can remove a BBB docker image using `docker image rm imdt/bigbluebutton:2.6.x-develop --force` + + +--- +## BBB-Conf +Link to the API-Mate: `bbb-conf --salt` + +Restart BBB: `sudo bbb-conf --restart` + +Check configs: `sudo bbb-conf --check` + +--- +## Troubleshooting + +In case of problems, you can update the packages by running: + +```sh +sudo apt update +sudo apt dist-upgrade -y +``` + +--- +# Instructions to run BigBlueButton from source (via command-line) +- **HTML5 - bigbluebutton-html5**: the Front-End (users meeting interface) [*Meteor*] +- **AKKA - akka-bbb-apps**: Backend that exchange msgs with Frontend through Redis pub/sub msgs (stores the meeting state and execute validations for Html5, *e.g: Can John send a message?*) [*Scala*] +- **API - bigbluebutton-web**: Receives requests e.g: Create room, Enter room (when someone asks to enter the room, enters the API and then is redirected to html5) [*Grails*] + - **-bbb-common-web**: Contains useful functions that are used by the API [*JAVA*] +- **bbb-common-message**: Contains all Redis messages! Akka and the API import this project to know the existing messages [*JAVA*] + +Further informations in https://docs.bigbluebutton.org/2.6/dev.html + +--- +## HTML5 client + +#### Running HTML5 +``` +cd ~/src/bigbluebutton-html5/ +./run-dev.sh +``` + +#### Running HTML5 with **Full RESET** (needed sometimes) +``` +cd ~/src/bigbluebutton-html5/ +./run-dev.sh --reset +``` + +--- +## Common-Message (required for BBB-Web and Akka) +``` +cd ~/src/bbb-common-message +./deploy.sh +``` + +--- +## BBB-Web (API) + +#### Running Bigbluebutton-web +``` +cd ~/src/bigbluebutton-web/ +./run-dev.sh +``` + +**If `bbb-common-web` was changed run:** +``` +cd ~/src/bbb-common-web +./deploy.sh +cd ~/src/bigbluebutton-web/ +./build.sh +``` + + +--- +## Akka-apps + +#### Running Akka within **bbb-docker-dev** +```bash +cd ~/src/akka-bbb-apps/ +./run-dev.sh +``` + +#### Running Akka on **IntelliJ IDEA** +- [Requires Common-Message](#common-message-required-for-bbb-web-and-akka) +- Open bbb-docker-dev SSH connection appending `-with-ports` to the command *(it will create tunnel for Redis port 6379)* +```bash +ssh {container_name}-with-ports +``` +- Run Akka within Docker once, to set the configs +```bash +cd ~/src/akka-bbb-apps/ +./run-dev.sh +``` +- If everything is working, press `Ctrl + C` to stop + +- Open IDEA, open the Sbt tab and run: +``` +~reStart +``` +![image](https://user-images.githubusercontent.com/5660191/158892260-8356d117-3be8-424a-aa24-ca405511f4e5.png) + + +--- +## Redis +- To track the exchange of messages between applications +``` +redis-cli psubscribe "*" | grep --line-buffered -v 'pmessage\|CheckRunningAndRecording\|MeetingInfoAnalyticsServiceMsg\|CheckAliveP\|GetUsersStatusToVoiceConfSysMsg\|SendCursorPosition\|DoLatencyTracerMsg' +``` diff --git a/create_bbb.sh b/create_bbb.sh new file mode 100755 index 0000000..db2d05f --- /dev/null +++ b/create_bbb.sh @@ -0,0 +1,314 @@ +#!/bin/bash +NAME= +DOMAIN=test +IP=172.17.0.2 +IMAGE=imdt/bigbluebutton:2.6.x-develop +GITHUB_USER= +CERT_DIR= +REMOVE_CONTAINER=0 +CONTAINER_IMAGE= + +for var in "$@" +do + if [[ ! $var == *"--"* ]] && [ ! $NAME ]; then + NAME="$var" + elif [[ $var == --image* ]] ; then + IMAGE=${var#*=} + CONTAINER_IMAGE=$IMAGE + elif [[ $var == "--remove" ]] ; then + REMOVE_CONTAINER=1 + fi +done + +echo "Container name: $NAME" + +if [ ! $NAME ] ; then + echo "Missing name: ./create_bbb.sh [--update] [--fork=github_user] [--domain=domain_name] [--ip=ip_address] [--image=docker_image] [--cert=certificate_dir] {name}" + exit 1 +fi + + +for container_id in $(docker ps -f name=$NAME -q) ; do + echo "Killing current $NAME" + docker kill $container_id; +done + +for container_id in $(docker ps -f name=$NAME -q -a); do + CONTAINER_IMAGE="$(docker inspect --format '{{ .Config.Image }}' $NAME)" + echo "Removing container $NAME" + docker rm $container_id; +done + +if [ "$(docker volume ls | grep \docker_in_docker${NAME}$)" ]; then + echo "Removing volume docker_in_docker$NAME" + sudo docker volume rm docker_in_docker$NAME; +fi + +# Remove entries from ~/.ssh/config +if [ -f ~/.ssh/config ] ; then + sed -i '/^Host '"$NAME"'$/,/^$/d' ~/.ssh/config + sed -i '/^Host '"$NAME-with-ports"'$/,/^$/d' ~/.ssh/config +fi + +if [ $REMOVE_CONTAINER == 1 ]; then + if [ $CONTAINER_IMAGE ]; then + echo + echo "----" + read -p "Do you want to remove the image $CONTAINER_IMAGE (y/n)? " -n 1 -r + echo + if [[ $REPLY =~ ^[Yy]$ ]]; then + docker image rm $CONTAINER_IMAGE --force + echo "Image $CONTAINER_IMAGE removed!" + fi + fi + + if [ -d $HOME/$NAME ] ; then + echo + echo "----" + read -p "Do you want to remove all files from $HOME/$NAME (y/n)? " -n 1 -r + echo + if [[ $REPLY =~ ^[Yy]$ ]]; then + rm -rf $HOME/$NAME + fi + fi + + echo "Container $NAME removed!" + exit 0 +fi + + +echo "Using image $IMAGE" + +for var in "$@" +do + if [ $var == "--update" ] ; then + echo "Checking for new version of image $IMAGE" + docker image tag $IMAGE ${IMAGE}_previous + docker image rm $IMAGE + docker pull $IMAGE + docker rmi ${IMAGE}_previous + elif [[ $var == --ip* ]] ; then + IP=${var#*=} + if [[ $IP == 172.17.* ]] ; then + echo "IP address can't start with 172.17" + return 1 2>/dev/null + exit 1 + else + echo "Setting IP to $IP" + fi + elif [[ $var == --fork* ]] ; then + GITHUB_USER=${var#*=} + elif [[ $var == --cert* ]] ; then + CERT_DIR=${var#*=} + elif [[ $var == --domain* ]] ; then + DOMAIN=${var#*=} + fi +done + +mkdir -p $HOME/$NAME/ +HOSTNAME=$NAME.$DOMAIN + + +BBB_SRC_FOLDER=$HOME/$NAME/bigbluebutton +if [ -d $BBB_SRC_FOLDER ] ; then + echo "Directory $HOME/$NAME/bigbluebutton already exists, not initializing." + sleep 2; +else + cd $HOME/$NAME/ + + if [ $GITHUB_USER ] ; then + git clone git@github.com:$GITHUB_USER/bigbluebutton.git + + echo "Adding Git Upstream to https://github.com/bigbluebutton/bigbluebutton.git" + cd $HOME/$NAME/bigbluebutton + git remote add upstream https://github.com/bigbluebutton/bigbluebutton.git + else + git clone https://github.com/bigbluebutton/bigbluebutton.git + fi +fi + +cd + +#Shared folder to exchange data between local machine and container +BBB_SHARED_FOLDER=$HOME/$NAME/shared +mkdir -p $BBB_SHARED_FOLDER + +###Certificate start --> +mkdir $HOME/$NAME/certs/ -p +if [ $CERT_DIR ] ; then + echo "Certificate directory passed: $CERT_DIR" + if [ ! -f $CERT_DIR/fullchain.pem ] ; then + echo "Error! $CERT_DIR/fullchain.pem not found." + exit 0 + elif [ ! -f $CERT_DIR/privkey.pem ] ; then + echo "Error! $CERT_DIR/privkey.pem not found." + exit 0 + fi + + cp $CERT_DIR/fullchain.pem $HOME/$NAME/certs/fullchain.pem + cp $CERT_DIR/privkey.pem $HOME/$NAME/certs/privkey.pem + echo "Using provided certificate successfully!" +elif [ -f $HOME/$NAME/certs/fullchain.pem ] && [ -f $HOME/$NAME/certs/privkey.pem ] ; then + echo "Certificate already exists, not creating." + sleep 2; +else + mkdir $HOME/$NAME/certs-source/ -p + #Create root CA + cd $HOME/$NAME/certs-source/ + openssl rand -base64 48 > bbb-dev-ca.pass ; + chmod 600 bbb-dev-ca.pass ; + openssl genrsa -des3 -out bbb-dev-ca.key -passout file:bbb-dev-ca.pass 2048 ; + + openssl req -x509 -new -nodes -key bbb-dev-ca.key -sha256 -days 1460 -passin file:bbb-dev-ca.pass -out bbb-dev-ca.crt -subj "/C=CA/ST=BBB/L=BBB/O=BBB/OU=BBB/CN=BBB-DEV" ; + + #Copy the CA to your trusted certificates ( so your browser will accept this certificate ) + sudo mkdir /usr/local/share/ca-certificates/bbb-dev/ + sudo cp $HOME/$NAME/certs-source/bbb-dev-ca.crt /usr/local/share/ca-certificates/bbb-dev/ + sudo chmod 644 /usr/local/share/ca-certificates/bbb-dev/bbb-dev-ca.crt + sudo update-ca-certificates + + #Generate a certificate for your first local BBB server + cd $HOME/$NAME/certs-source/ + openssl genrsa -out ${HOSTNAME}.key 2048 + rm ${HOSTNAME}.csr ${HOSTNAME}.crt ${HOSTNAME}.key + cat > ${HOSTNAME}.ext << EOF +authorityKeyIdentifier=keyid,issuer +basicConstraints=CA:FALSE +keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment +subjectAltName = @alt_names +[alt_names] +DNS.1 = ${HOSTNAME} +EOF + + openssl req -nodes -newkey rsa:2048 -keyout ${HOSTNAME}.key -out ${HOSTNAME}.csr -subj "/C=CA/ST=BBB/L=BBB/O=BBB/OU=BBB/CN=${HOSTNAME}" -addext "subjectAltName = DNS:${HOSTNAME}" + openssl x509 -req -in ${HOSTNAME}.csr -CA bbb-dev-ca.crt -CAkey bbb-dev-ca.key -CAcreateserial -out ${HOSTNAME}.crt -days 825 -sha256 -passin file:bbb-dev-ca.pass -extfile ${HOSTNAME}.ext + + cd $HOME/$NAME/ + cp $HOME/$NAME/certs-source/bbb-dev-ca.crt certs/ + cat $HOME/$NAME/certs-source/$HOSTNAME.crt > certs/fullchain.pem + cat $HOME/$NAME/certs-source/bbb-dev-ca.crt >> certs/fullchain.pem + cat $HOME/$NAME/certs-source/$HOSTNAME.key > certs/privkey.pem + rm -r $HOME/$NAME/certs-source + echo "Self-signed certificate created successfully!" +fi +### <-- Certificate end + + +SUBNET="$(echo $IP |cut -d "." -f 1).$(echo $IP |cut -d "." -f 2).0.0" + +if [ $SUBNET == "172.17.0.0" ] ; then + SUBNETNAME="bridge" +else + SUBNETNAME="bbb_network_$(echo $IP |cut -d "." -f 1)_$(echo $IP |cut -d "." -f 2)" +fi + +if [ ! "$(docker network ls | grep $SUBNETNAME)" ]; then + echo "Creating $SUBNETNAME network ..." + docker network create --driver=bridge --subnet=$SUBNET/16 $SUBNETNAME +else + echo "$SUBNETNAME network exists." +fi + + +NETWORKPARAMS="" +if [ $SUBNETNAME != "bridge" ] ; then + NETWORKPARAMS="--ip=$IP --network $SUBNETNAME" +fi + + +#Create sbt publish folders to map in Docker +#It will sync the sbt libs in host machine and docker container (useful for backend development) +mkdir -p $HOME/.m2/repository/org/bigbluebutton +mkdir -p $HOME/.ivy2/local/org.bigbluebutton + +docker run -d --name=$NAME --hostname=$HOSTNAME $NETWORKPARAMS -env="container=docker" --env="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" --env="DEBIAN_FRONTEND=noninteractive" -v "/var/run/docker.sock:/var/run/docker.sock:rw" --cap-add="NET_ADMIN" --privileged -v "$HOME/$NAME/certs/:/local/certs:rw" --cgroupns=host -v "$BBB_SRC_FOLDER:/home/bigbluebutton/src:rw" -v "$BBB_SHARED_FOLDER:/home/bigbluebutton/shared:rw" -v "$HOME/.m2/repository/org/bigbluebutton:/home/bigbluebutton/.m2/repository/org/bigbluebutton:rw" -v "$HOME/.ivy2/local/org.bigbluebutton:/home/bigbluebutton/.ivy2/local/org.bigbluebutton:rw" -v docker_in_docker$NAME:/var/lib/docker -t $IMAGE + +mkdir $HOME/.bbb/ &> /dev/null +echo "docker exec -u bigbluebutton -w /home/bigbluebutton/ -it $NAME /bin/bash -l" > $HOME/.bbb/$NAME.sh +chmod 755 $HOME/.bbb/$NAME.sh + +#Create ssh key if absent +if [ ! -e ~/.ssh/id_rsa.pub ]; then + yes '' | ssh-keygen -N '' +fi + + +docker exec -u bigbluebutton $NAME bash -c "mkdir -p ~/.ssh && echo $(cat ~/.ssh/id_rsa.pub) >> ~/.ssh/authorized_keys" + +sleep 5s +if [ $SUBNETNAME == "bridge" ] ; then + DOCKERIP="$(docker inspect --format '{{ .NetworkSettings.IPAddress }}' $NAME)" +else + DOCKERIP="$(docker inspect --format '{{ .NetworkSettings.Networks.'"$SUBNETNAME"'.IPAddress }}' $NAME)" +fi + +if [ ! $DOCKERIP ] ; then + echo "ERROR! Trying to discover Docker IP" + exit 0 +fi + +sudo sed -i "/$HOSTNAME/d" /etc/hosts +echo $DOCKERIP $HOSTNAME | sudo tee -a /etc/hosts + +ssh-keygen -R "$HOSTNAME" +ssh-keygen -R "$DOCKERIP" +# ssh-keygen -R [hostname],[ip_address] + +ssh-keyscan -H "$DOCKERIP" >> ~/.ssh/known_hosts +ssh-keyscan -H "$HOSTNAME" >> ~/.ssh/known_hosts +# ssh-keyscan -H [hostname],[ip_address] >> ~/.ssh/known_hosts + +if [ ! -z $(tail -1 ~/.ssh/config) ] ; then + echo "" >> ~/.ssh/config +fi + +if ! grep -q "\Host ${NAME}$" ~/.ssh/config ; then + echo "Adding alias $NAME to ~/.ssh/config" + echo "Host $NAME + HostName $HOSTNAME + User bigbluebutton + Port 22 +" >> ~/.ssh/config +fi + +if ! grep -q "\Host ${NAME}-with-ports$" ~/.ssh/config ; then + echo "Adding alias $NAME-with-ports to ~/.ssh/config" + echo "Host $NAME-with-ports + HostName $HOSTNAME + User bigbluebutton + Port 22 + LocalForward 6379 localhost:6379 + LocalForward 4101 localhost:4101 +" >> ~/.ssh/config +fi + +#Set Zsh as default and copy local bindkeys +if [ -d ~/.oh-my-zsh ]; then + echo "Found oh-my-zsh installed. Setting as default in Docker as well." + docker exec -u bigbluebutton $NAME bash -c "sudo chsh -s /bin/zsh bigbluebutton" + grep "^bindkey" ~/.zshrc | xargs -I{} docker exec -u bigbluebutton $NAME bash -c "echo {} >> /home/bigbluebutton/.zshrc" +fi + + +echo "------------------" +echo "Docker infos" +echo "IP $DOCKERIP" +echo "Default user: bigbluebutton" +echo "Default passwork: bigbluebutton" +echo "" +echo "" +docker exec -u bigbluebutton $NAME bash -c "bbb-conf --salt" +echo "" +echo "" +echo "------------------" +tput setaf 2; echo "Container created successfully!"; tput sgr0 +echo "" +tput setaf 3; echo "BBB URL: https://$HOSTNAME"; tput sgr0 +tput setaf 3; echo "Access Docker using: ssh $NAME"; tput sgr0 +echo "" +echo "------------------" +echo "" +echo "" +tput setaf 4; echo "or to run Akka/Mongo locally use: ssh $NAME-with-ports"; tput sgr0 +echo "" +echo ""