diff --git a/.github/workflows/packer-big-blue-button.yml b/.github/workflows/packer-big-blue-button.yml deleted file mode 100644 index 8dcc788..0000000 --- a/.github/workflows/packer-big-blue-button.yml +++ /dev/null @@ -1,25 +0,0 @@ ---- -name: hetzner/big-blue-button - -on: - push: - paths: - - "apps/hetzner/big-blue-button/**" - - ".github/workflows/packer-big-blue-button.yml" - - ".github/actions/build-image/**" - - "apps/shared/**" - schedule: - - cron: '0 0 * * *' - workflow_dispatch: - -jobs: - packer: - runs-on: [self-hosted, Linux, X64] - name: packer - steps: - - name: Checkout Repository - uses: actions/checkout@v2 - - uses: ./.github/actions/build-image - with: - app: big-blue-button - token: ${{ github.ref == 'refs/heads/main' && secrets.HCLOUD_API_TOKEN || secrets.HCLOUD_API_TOKEN_STAGING }} diff --git a/.prettierignore b/.prettierignore index 52f84f0..6f3eecb 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,4 +1,3 @@ -.github/workflows/packer-big-blue-button.yml .github/workflows/packer-docker-ce.yml .github/workflows/packer-gitlab.yml .github/workflows/packer-jitsi.yml diff --git a/apps/hetzner/big-blue-button/README.de.md b/apps/hetzner/big-blue-button/README.de.md deleted file mode 100644 index d9fd4ae..0000000 --- a/apps/hetzner/big-blue-button/README.de.md +++ /dev/null @@ -1,134 +0,0 @@ -# Hetzner Cloud BigBlueButton - - - -Diese App enthält eine fertige BigBlueButton-Installation mit Greenlight 2.0 Benutzeroberfläche. -Sie können sie über die [Hetzner Cloud Console](https://console.hetzner.cloud) oder die [Hetzner Cloud API](https://docs.hetzner.cloud/#servers-create-a-server) installieren. - -[BigBlueButton](https://bigbluebutton.org/) wurde von Lehrern für Lehrer entwickelt und ist die einzige Plattform, die von Grund auf als virtuelles Klassenzimmer aufgebaut wurde. Es stehen 65 Sprachen zur Verfügung und Lehrer aus der ganzen Welt haben zu dem Webkonferenzsystem beigetragen. - -## Getting Started - -Erstellen Sie sich Ihren Server wie gewohnt über die [Hetzner Cloud Console](https://console.hetzner.cloud). Alternativ zum Betriebssystem können Sie eine App wählen, die Sie gerne vorinstalliert hätten. - -BigBlueButton ist vorinstalliert, wenn das Image gebootet wird, aber nicht aktiviert. - -Um BigBlueButton zu aktivieren, melden Sie sich bitte auf Ihrem Server an: - -- Per _SSH-Key_, falls Sie beim Erstellen Ihres Servers einen angegeben haben -- Per _root-Passwort_, das Sie beim Erstellen Ihres Servers per E-Mail von uns erhalten haben, wenn kein SSH-Key angegeben wurde - -Dies führt Sie durch den Prozess, ermöglicht zusätzliche Let's Encrypt-Unterstützung und anschließend können Sie BigBlueButton wie gewohnt aus dem Web nutzen. Sollten Sie _Let's Encrypt_ beim ersten Mal anmelden überspringen, ist es später immer noch möglich das Zertifikat zu aktivieren (siehe _Let's Encrypt nachträglich aktivieren_). - -### Hetzner Cloud API - -Anstelle der Hetzner Cloud Console kann zum Einrichten eines Servers mit vorinstalliertem BigBlueButton auch die Hetzner Cloud API genutzt werden. - -- Zum Beispiel per Curl-Befehl über die Kommandozeile - - ``` - curl \ - -X POST \ - -H "Authorization: Bearer $API_TOKEN" \ - -H "Content-Type: application/json" \ - -d '{"name":"my-server", "server_type":"cx31", "image":"big-blue-button"}' \ - 'https://api.hetzner.cloud/v1/servers' - ``` - -- Oder über [hcloud-cli](https://github.com/hetznercloud/cli) - - ``` - hcloud server create --name my-server --type cx31 --image big-blue-button - ``` - -## BigBlueButton Aufzeichnungsfunktion - -BigBlueButton bietet die Funktion, Konferenzen aufzuzeichnen. Diese Funktion ist im Image standardmäßig aktiviert. - -Bitte beachten Sie, dass diese Funktion viel Speicherplatz benötigen kann. - -Aufnahmen können über die Benutzeroberfläche unter **Alle Aufzeichnungen** abgespielt und gelöscht werden. - -Es ist zudem möglich die Aufzeichnungen über die Kommandozeile zu löschen: - -1. Aufnahmen auflisten - - ``` - bbb-record --list - ``` - -2. Bestimmte Aufnahme löschen - - ``` - bbb-record --delete 6e35e3b2778883f5db637d7a5dba0a427f692e91-1379965122603 - ``` - -3. Alle Aufnahmen auf einmal löschen - - ``` - bbb-record --deleteall - ``` - -## Let's Encrypt nachträglich aktivieren - -Let’s Encrypt stellt kostenfrei digitale Zertifikate zur Verfügung. Diese werden auf Webseiten zur Aktivierung von HTTPS (SSL/TLS) benötigt. - -Beachten Sie, dass selfsigned Zertifikate nicht gut mit BigBlueButton funktionieren. Wir empfehlen Let's Encrypt. - -Um Let's Encrypt nachträglich zu aktivieren, führen Sie bitte folgende Schritte aus: - -1. Certbot (vorinstalliert) mit Nginx-Plugin ausführen - - ``` - certbot --nginx - ``` - - Sie werden durch den Prozess geleitet, durch den Sie ein gültiges SSL-Zertifikat erhalten. - -2. BBB (BigBlueButton) neustarten - - ``` - bbb-conf --restart - ``` - -## Image Inhalt - -### Betriebssystem - -- [x] Ubuntu 18.04 - -### Installierte Pakete - -| NAME | LIZENZ | -| ------------- | ------------------ | -| BigBlueButton | LGPL | -| Docker CE | GPLv3 (Apache-2.0) | -| Nginx | GPL (BSD) | -| OpenJDK8 | GPL | -| Haveged | GPL | -| Certbot | GPLv3 (Apache-2.0) | - -### Passwörter - -Wir verwenden automatisch generierte Passwörter, die im folgenden Ordner gespeichert werden: - -``` -/root/.hcloud_password -``` - -## Links - -Weitere Informationen über die installierten Pakete erhalten Sie in den offiziellen Dokumentationen: - -- [BigBlueButton](https://docs.bigbluebutton.org/) -- [Nginx](http://nginx.org/en/docs/) -- [Certbot](https://certbot.eff.org/docs/) -- [OpenJDK8](https://openjdk.java.net/projects/jdk8/) -- [Haveged](https://www.issihosts.com/haveged/index.html) - -- [Let’s Encrypt](https://letsencrypt.org/de/docs/) - -Weitere Informationen über Hetzner Cloud und Hetzner Cloud Apps erhalten Sie in unserer offiziellen Dokumentation: - -- [Hetzner Cloud Dokumentation](https://docs.hetzner.com/de/cloud/) -- [Hetzner Cloud API](https://docs.hetzner.cloud/) diff --git a/apps/hetzner/big-blue-button/README.md b/apps/hetzner/big-blue-button/README.md deleted file mode 100644 index cb2e327..0000000 --- a/apps/hetzner/big-blue-button/README.md +++ /dev/null @@ -1,136 +0,0 @@ -# Hetzner Cloud BigBlueButton - - - -This app contains a ready to use BigBlueButton installation with Greenlight 2.0 User-Interface. -You can install it via the [Hetzner Cloud Console](https://console.hetzner.cloud) or the [Hetzner Cloud API](https://docs.hetzner.cloud/#servers-create-a-server). - -[BigBlueButton](https://bigbluebutton.org/) is a global teaching platform that can be used for web conferences. It was developed in a school and is the only virtual classroom built from the ground up, just for teachers. It’s available in 65 languages and teachers all over the world have contributed to its design. - -## Getting started - -Create your server on our [Hetzner Cloud Console](https://console.hetzner.cloud). Instead of an image, you will be able to choose the app that you would like to have preinstalled on your server. - -BigBlueButton is preinstalled when the image is booted, but it is not enabled. - -In order to enable BigBlueButton, first, please log into your server: - -- Via _SSH key_, if you selected one when you created the server -- Via _root password_, which will be mailed to you if you created a server without selecting an SSH key - -This will guide you through the process and give you additional Let's Encrypt support. If you choose to skip _Let's Encrypt_, you will still be able to activate it another time (see _Activate Let's Encrypt post installation_). - -When you are done, you will be able to use BigBlueButton as usual from the web. - -## Hetzner Cloud API - -In addition to the Hetzner Cloud Console you can also use the Hetzner Cloud API to set up a server with pre-installed BigBlueButton. - -- For example with a curl command via CLI - - ``` - curl \ - -X POST \ - -H "Authorization: Bearer $API_TOKEN" \ - -H "Content-Type: application/json" \ - -d '{"name":"my-server", "server_type":"cx31", "image":"big-blue-button"}' \ - 'https://api.hetzner.cloud/v1/servers' - ``` - -- Or via [hcloud-cli](https://github.com/hetznercloud/cli) - - ``` - hcloud server create --name my-server --type cx31 --image big-blue-button - ``` - -## BigBlueButton Recording - -BigBlueButton offers a function to record and playback meetings. This function is enabled by default. - -Please note that this function can take a lot of storage capacity. - -To play and delete your recordings, go to the **All Recordings** tab of the User Interface. - -To delete them via CLI, please use the commands below. - -1. List all recordings - - ``` - bbb-record --list - ``` - -2. Delete a specific recording - - ``` - bbb-record --delete 6e35e3b2778883f5db637d7a5dba0a427f692e91-1379965122603 - ``` - -3. Delete all recordings at once - - ``` - bbb-record --deleteall - ``` - -## Activate Let's Encrypt post installation - -Let’s Encrypt provides digital certificates that are needed to enable HTTPS (SSL/TLS) for websites. - -Important note: Self-signed certificates will not work well with BigBlueButton. We recommend using Let's Encrypt. - -To activate Let's Encrypt after the initial script has run, please follow the steps below. - -1. Run Certbot (preinstalled) with the Nginx plugin - - ``` - certbot --nginx - ``` - - It will guide you through the process of obtaining a valid SSL certificate. - -2. Restart BBB (BigBlueButton) - - ``` - bbb-conf --restart - ``` - -## Image content - -### Base OS - -- [x] Ubuntu 18.04 - -### Installed packages - -| NAME | LICENSE | -| ------------- | ------------------ | -| BigBlueButton | LGPL | -| Docker CE | GPLv3 (Apache-2.0) | -| Nginx | GPL (BSD) | -| OpenJDK8 | GPL | -| Haveged | GPL | -| Certbot | GPLv3 (Apache-2.0) | - -### Passwords - -We use auto-generated passwords which are stored in: - -``` -/root/.hcloud_password -``` - -## Links - -For more information about the installed packages, please refer to their official documentation: - -- [BigBlueButton](https://docs.bigbluebutton.org/) -- [Nginx](http://nginx.org/en/docs/) -- [Certbot](https://certbot.eff.org/docs/) -- [OpenJDK8](https://openjdk.java.net/projects/jdk8/) -- [Haveged](https://www.issihosts.com/haveged/index.html) - -- [Let’s Encrypt](https://letsencrypt.org/docs/) - -For more information about Hetzner Cloud and Hetzner Cloud Apps, please refer to our official documentation: - -- [Hetzner Cloud Documentation](https://docs.hetzner.com/cloud/) -- [Hetzner Cloud API](https://docs.hetzner.cloud/) diff --git a/apps/hetzner/big-blue-button/files/etc/cloud/templates/hosts.debian.tmpl b/apps/hetzner/big-blue-button/files/etc/cloud/templates/hosts.debian.tmpl deleted file mode 100644 index e33af4a..0000000 --- a/apps/hetzner/big-blue-button/files/etc/cloud/templates/hosts.debian.tmpl +++ /dev/null @@ -1,26 +0,0 @@ -## template:jinja -{# -This file (/etc/cloud/templates/hosts.debian.tmpl) is only utilized -if enabled in cloud-config. Specifically, in order to enable it -you need to add the following to config: - manage_etc_hosts: True --#} -# Your system has configured 'manage_etc_hosts' as True. -# As a result, if you wish for changes to this file to persist -# then you will need to either -# a.) make changes to the master file in /etc/cloud/templates/hosts.debian.tmpl -# b.) change or remove the value of 'manage_etc_hosts' in -# /etc/cloud/cloud.cfg or cloud-config from user-data -# -{# The value '{{hostname}}' will be replaced with the local-hostname -#} -127.0.1.1 {{hostname}} $domain -127.0.0.1 localhost -$host_ip_address {{hostname}} $domain - -# The following lines are desirable for IPv6 capable hosts -::1 ip6-localhost ip6-loopback -fe00::0 ip6-localnet -ff00::0 ip6-mcastprefix -ff02::1 ip6-allnodes -ff02::2 ip6-allrouters -ff02::3 ip6-allhosts diff --git a/apps/hetzner/big-blue-button/files/etc/nginx/sites-available/bigbluebutton b/apps/hetzner/big-blue-button/files/etc/nginx/sites-available/bigbluebutton deleted file mode 100644 index 7b25db3..0000000 --- a/apps/hetzner/big-blue-button/files/etc/nginx/sites-available/bigbluebutton +++ /dev/null @@ -1,52 +0,0 @@ -server_tokens off; - -server { - listen 443 ssl; - listen [::]:443 ssl; - server_name $domain; - - access_log /var/log/nginx/bigbluebutton.access.log; - - # BigBlueButton landing page. - location / { - root /var/www/bigbluebutton-default; - index index.html index.htm; - expires 1m; - } - - # Include specific rules for record and playback - include /etc/bigbluebutton/nginx/*.nginx; - - #error_page 404 /404.html; - - # Redirect server error pages to the static page /50x.html - # - error_page 500 502 503 504 /50x.html; - location = /50x.html { - root /var/www/nginx-default; - } - - ssl_certificate $selfsigned_ssl_certificate; - ssl_certificate_key $selfsigned_key_certificate; - ssl_session_cache shared:SSL:10m; - ssl_session_timeout 10m; - ssl_protocols TLSv1 TLSv1.1 TLSv1.2; - ssl_ciphers "ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS:!AES256"; - ssl_prefer_server_ciphers on; - ssl_dhparam /etc/ssl/private/dhparam.pem; - -} - -server { - if ($host = $domain) { - return 301 https://$host$request_uri; - } - - - listen 80; - listen [::]:80; - server_name $domain; - return 404; - - -} diff --git a/apps/hetzner/big-blue-button/files/etc/nginx/sites-available/hetzner b/apps/hetzner/big-blue-button/files/etc/nginx/sites-available/hetzner deleted file mode 100644 index 9dd295b..0000000 --- a/apps/hetzner/big-blue-button/files/etc/nginx/sites-available/hetzner +++ /dev/null @@ -1,22 +0,0 @@ -server_tokens off; - -server { - listen 80; - listen [::]:80; - - location / { - root /var/www/html; - index index.html index.htm; - expires 1m; - } - - access_log /var/log/nginx/hetzner.access.log; - - # Redirect server error pages to the static page /50x.html - # - error_page 500 502 503 504 /50x.html; - location = /50x.html { - root /var/www/nginx-default; - } - -} diff --git a/apps/hetzner/big-blue-button/files/etc/update-motd.d/90-hcloud-app b/apps/hetzner/big-blue-button/files/etc/update-motd.d/90-hcloud-app deleted file mode 100755 index e81f6dd..0000000 --- a/apps/hetzner/big-blue-button/files/etc/update-motd.d/90-hcloud-app +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh - -cat </dev/null 2>&1; then - break - else - echo "Please enter a valid FQDN." - fi - done - - while [ -z $username ] - do - read -p "Your BBB Admin Username [Default: admin]: " username - : ${username:="admin"} - done - - while true - do - read -p "Your BBB Admin EMail Address: " email - if grep -oP '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$' <<<"${email}" >/dev/null 2>&1; then - break - else - echo "Please enter a valid E-Mail." - fi - done - - while true - do - read -s -p "Your BBB Admin Password [8-32 characters, A-Z, a-z, 0-9, #?!@$%^&*-]: " password - echo - read -s -p "Your BBB Admin Password (again): " password2 - echo - if [ "$password" = "$password2" ]; then - if grep -oP '^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])[^.(){}[\]:;<>,.\/~_+=|]{8,32}$' <<<"${password}" >/dev/null 2>&1; then - break - else - echo "Password invalid." - fi - else - echo "Passwords don't match." - fi - done - -} - -# Remove Hetzner static page -remove_static_page(){ - - rm -rf /var/www/html - rm /etc/nginx/sites-enabled/default - rm /etc/nginx/sites-enabled/hetzner - rm /etc/nginx/sites-available/hetzner - ln -s /etc/nginx/sites-available/bigbluebutton /etc/nginx/sites-enabled/bigbluebutton - -} - -certbot_crontab() { - -echo -en "\n" -echo "Setting up Crontab for Let's Encrypt." -crontab -l > certbot -echo "30 2 * * 1 /usr/bin/certbot renew >> /var/log/le-renew.log" >> certbot -echo "35 2 * * 1 systemctl reload nginx" >> certbot -crontab certbot -rm certbot - -} - -selfsigned_cert(){ - - echo -en "\n" - echo "Generating selfsigned certificate." - - organization=localdomain - organizationalunit=bbb-test - cert_email=$email - commonname=$domain - - openssl rand -writerand /root/.rnd - openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/bbb-selfsigned.key -out /etc/ssl/certs/bbb-selfsigned.crt -subj "/O=$organization/OU=$organizationalunit/CN=$domain/emailAddress=$cert_email" - - openssl dhparam -dsaparam -out /etc/ssl/private/dhparam.pem 4096 - - sed -i "s/\$selfsigned_ssl_certificate/\/etc\/ssl\/certs\/bbb-selfsigned.crt/g" /etc/nginx/sites-available/bigbluebutton - sed -i "s/\$selfsigned_key_certificate/\/etc\/ssl\/private\/bbb-selfsigned.key/g" /etc/nginx/sites-available/bigbluebutton - -} - -configure_html5() { -# https://github.com/bigbluebutton/bbb-install/blob/master/bbb-install.sh - - sed -i "s/^attendeesJoinViaHTML5Client=.*/attendeesJoinViaHTML5Client=true/" /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties - sed -i "s/^moderatorsJoinViaHTML5Client=.*/moderatorsJoinViaHTML5Client=true/" /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties - sed -i "s/swfSlidesRequired=true/swfSlidesRequired=false/g" /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties - -} - -install_greenlight() { -# https://github.com/bigbluebutton/bbb-install/blob/master/bbb-install.sh - - echo -en "\n" - echo "Setting up Greenlight Frontend.." - echo -en "\n" - - source /root/.hcloud_password - - bbb_security_salt=$(cat /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties /etc/bigbluebutton/bbb-web.properties | grep -v '#' | grep ^securitySalt | tail -n 1 | cut -d= -f2) - greenlight_rake_secret=$(docker run --rm bigbluebutton/greenlight:v2 bundle exec rake secret) - - sed -i "s|SECRET_KEY_BASE=.*|SECRET_KEY_BASE=$greenlight_rake_secret|" /root/greenlight/.env - sed -i "s|.*BIGBLUEBUTTON_ENDPOINT=.*|BIGBLUEBUTTON_ENDPOINT=https:\/\/$domain\/bigbluebutton\/|" /root/greenlight/.env - sed -i "s|.*BIGBLUEBUTTON_SECRET=.*|BIGBLUEBUTTON_SECRET=$bbb_security_salt|" /root/greenlight/.env - sed -i "s|SAFE_HOSTS=.*|SAFE_HOSTS=$domain|" /root/greenlight/.env - - systemctl restart nginx - - sed -i "s/POSTGRES_PASSWORD=password/POSTGRES_PASSWORD=$greenlight_postgres_pass/g" /root/greenlight/docker-compose.yml - sed -i "s/DB_PASSWORD=password/DB_PASSWORD=$greenlight_postgres_pass/g" /root/greenlight/.env - - # Check if greenlight already exists and - if [[ $(docker network ls | grep greenlight) ]] || [[ $(docker container ls | grep greenlight) ]] - then - docker-compose -f /root/greenlight/docker-compose.yml down - fi - - docker-compose -f /root/greenlight/docker-compose.yml up -d - -} - -echo -en "\n" -echo "Please enter your details to set up your new BigBlueButton Instance." - -user_input - -while true -do - echo -en "\n" - read -p "Is everything correct? [Y/n] " confirm - : ${confirm:="Y"} - - case $confirm in - [yY][eE][sS]|[yY] ) break;; - [nN][oO]|[nN] ) unset domain email; user_input;; - * ) echo "Please type y or n.";; - esac -done - - -# populate nginx with domain -sed -i "s/\$domain/$domain/g" /etc/nginx/sites-available/bigbluebutton - -# change serverURL in bigbluebutton.properties -sed -i 's/bigbluebutton.web.serverURL=.*/bigbluebutton.web.serverURL=https:\/\/$domain/g' /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties - -# change /etc/hosts -sed -i "s/\$domain/$domain/g" /etc/hosts -sed -i "s/\$host_ip_address/$host_ip_address/g" /etc/hosts - -# Set up cloud-init hosts template || temporare fix -sed -i "s/\$domain/$domain/g" /etc/cloud/templates/hosts.debian.tmpl -sed -i "s/\$host_ip_address/$host_ip_address/g" /etc/cloud/templates/hosts.debian.tmpl - -# Setup -remove_static_page -selfsigned_cert -systemctl restart nginx - -echo -en "\n\n" - echo -en "Do you want to create a Let's Encrypt Certificate for Domain $domain? \n" - read -p "Note that the Domain needs to exist. [Y/n]: " le - : ${le:="Y"} - case $le in - [Yy][eE][sS]|[yY] ) - while true - do - read -p "Your Email Address (for Let's Encrypt Notifications): " le_email - if grep -oP '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$' <<<"${le_email}" >/dev/null 2>&1; then - break - else - echo "Please enter a valid E-Mail." - fi - done - certbot --noninteractive --nginx -d $domain --agree-tos --email $le_email --redirect - certbot_crontab - greenlight_use_selfsigned=false;; - [nN][oO]|[nN] ) - echo -en "\nSkipping Let's Encrypt and using selfsigned Certificate.\n" - greenlight_use_selfsigned=true;; - * ) echo "Please type y or n.";; - esac - -echo -en "\n" -configure_html5 -install_greenlight -echo -en "\n" -echo "Setting up user and assigning domain to BigBlueButton." -echo -en "\n" -sleep 20 - -# Update CA for selfsigned -if $greenlight_use_selfsigned; then - docker cp /etc/ssl/certs/bbb-selfsigned.crt greenlight-v2:/usr/local/share/ca-certificates/CA.crt - docker exec greenlight-v2 update-ca-certificates -fi -echo -en "\n" -docker exec greenlight-v2 bundle exec rake user:create["$username","$email","$password","admin"] -echo -en "\n\n" -bbb-conf --setip "$domain" -sleep 20 - -echo -en "\n\n" -echo "The installation is complete and BigBlueButton should be running at your Domain." -echo "--- $domain ---" -echo -en "\n" - - -# Remove startup script from .bashrc -sed -i "/bbb_setup/d" /root/.bashrc diff --git a/apps/hetzner/big-blue-button/files/usr/share/keyrings/bigbluebutton-archive-keyring.gpg b/apps/hetzner/big-blue-button/files/usr/share/keyrings/bigbluebutton-archive-keyring.gpg deleted file mode 100644 index ba1b063..0000000 Binary files a/apps/hetzner/big-blue-button/files/usr/share/keyrings/bigbluebutton-archive-keyring.gpg and /dev/null differ diff --git a/apps/hetzner/big-blue-button/files/usr/share/keyrings/docker-archive-keyring.gpg b/apps/hetzner/big-blue-button/files/usr/share/keyrings/docker-archive-keyring.gpg deleted file mode 100644 index e5dc8cf..0000000 Binary files a/apps/hetzner/big-blue-button/files/usr/share/keyrings/docker-archive-keyring.gpg and /dev/null differ diff --git a/apps/hetzner/big-blue-button/files/usr/share/keyrings/mongodb-archive-keyring.gpg b/apps/hetzner/big-blue-button/files/usr/share/keyrings/mongodb-archive-keyring.gpg deleted file mode 100644 index fe02f99..0000000 Binary files a/apps/hetzner/big-blue-button/files/usr/share/keyrings/mongodb-archive-keyring.gpg and /dev/null differ diff --git a/apps/hetzner/big-blue-button/files/var/lib/cloud/scripts/per-instance/001_onboot b/apps/hetzner/big-blue-button/files/var/lib/cloud/scripts/per-instance/001_onboot deleted file mode 100755 index 1983453..0000000 --- a/apps/hetzner/big-blue-button/files/var/lib/cloud/scripts/per-instance/001_onboot +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/bash - -# Generate passwords -greenlight_postgres_pass=$(openssl rand -hex 24) - -# Save the passwords -cat > /root/.hcloud_password <> /root/.bashrc < - - - - - - - - Hetzner Cloud - - -
-
- -
- -
- -
-
-
-
- -
-
- Your BigBlueButton installation is almost done. -
-
- Please log into your server with SSH to configure the BigBlueButton - installation. If you want to use Let's Encrypt, please go ahead and - make sure the Domain exists before continuing. -
- Learn more -
-
-
- - - - diff --git a/apps/hetzner/big-blue-button/images/BigBlueButton_logo.svg.png b/apps/hetzner/big-blue-button/images/BigBlueButton_logo.svg.png deleted file mode 100644 index 01cc921..0000000 Binary files a/apps/hetzner/big-blue-button/images/BigBlueButton_logo.svg.png and /dev/null differ diff --git a/apps/hetzner/big-blue-button/images/logo_flat.svg b/apps/hetzner/big-blue-button/images/logo_flat.svg deleted file mode 100755 index 5e5a332..0000000 --- a/apps/hetzner/big-blue-button/images/logo_flat.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/apps/hetzner/big-blue-button/images/logo_full.svg b/apps/hetzner/big-blue-button/images/logo_full.svg deleted file mode 100644 index 8b3e372..0000000 --- a/apps/hetzner/big-blue-button/images/logo_full.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/apps/hetzner/big-blue-button/metadata.json b/apps/hetzner/big-blue-button/metadata.json deleted file mode 100644 index 98e49ca..0000000 --- a/apps/hetzner/big-blue-button/metadata.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "description_de": "BigBlueButton wurde von Lehrern f\u00fcr Lehrer entwickelt und ist die einzige Plattform, die von Grund auf als virtuelles Klassenzimmer aufgebaut wurde. Es stehen 65 Sprachen zur Verf\u00fcgung und Lehrer aus der ganzen Welt haben zu dem Webkonferenzsystem beigetragen.", - "description_en": "BigBlueButton is a global teaching platform that can be used for web conferences. It was developed in a school and is the only virtual classroom built from the ground up, just for teachers. It\u2019s available in 65 languages and teachers all over the world have contributed to its design.", - "documentation_url": "https://docs.hetzner.com/cloud/apps/list/big-blue-button", - "name": "Big Blue Button", - "os_id": 168855, - "packages": [ - { - "license": "LGPL", - "name": "BigBlueButton" - }, - { - "license": "GPL (BSD)", - "name": "Nginx" - }, - { - "license": "GPLv3 (Apache-2.0)", - "name": "Certbot" - }, - { - "license": "GPLv3 (Apache-2.0)", - "name": "Docker CE" - }, - { - "license": "GPLv3 (Apache-2.0)", - "name": "Containerd" - }, - { - "license": "GPL", - "name": "Haveged" - }, - { - "license": "GPL", - "name": "openJDK8" - }, - { - "license": "GPL", - "name": "MongoDB" - }, - { - "license": "GPL (Expat)", - "name": "NodeJS" - }, - { - "license": "GPLv3 (Apache-2.0)", - "name": "Kurento Media Server" - }, - { - "license": "GPL", - "name": "FFmpeg" - }, - { - "license": "LGPL (MPL-2.0)", - "name": "Libreoffice" - }, - { - "license": "PostgreSQL (BSD)", - "name": "PostgreSQL" - } - ], - "recommended_server_type": 25, - "version": "2.4.6" -} diff --git a/apps/hetzner/big-blue-button/scripts/bbb-install.sh b/apps/hetzner/big-blue-button/scripts/bbb-install.sh deleted file mode 100644 index 91f868e..0000000 --- a/apps/hetzner/big-blue-button/scripts/bbb-install.sh +++ /dev/null @@ -1,84 +0,0 @@ -#!/bin/bash - -# Add needed apt-repositories -add-apt-repository ppa:bigbluebutton/support -y -add-apt-repository ppa:rmescandon/yq -y -add-apt-repository ppa:libreoffice/ppa -y -yes | add-apt-repository ppa:libreoffice/ppa - -apt-get update && apt-get dist-upgrade -y - -# install mongodb 4.2.13 -echo \ - "deb [arch=amd64 signed-by=/usr/share/keyrings/mongodb-archive-keyring.gpg] https://repo.mongodb.org/apt/ubuntu \ - $(lsb_release -cs)/mongodb-org/4.2 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-4.2.list - -apt-get update && apt-get install -y mongodb-org - - -# install nodejs 12.22.1 -curl -sL https://deb.nodesource.com/setup_12.x | bash - - - -apt-get install -y nodejs - - -# install kurento media server 6.15.0 -apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 5AFA7A83 - -tee "/etc/apt/sources.list.d/kurento.list" >/dev/null < /root/greenlight/.env -docker run --rm bigbluebutton/greenlight:v2 cat ./docker-compose.yml > /root/greenlight/docker-compose.yml -docker run --rm bigbluebutton/greenlight:v2 cat ./greenlight.nginx | tee /etc/bigbluebutton/nginx/greenlight.nginx > /dev/null - -cat > /etc/bigbluebutton/nginx/greenlight-redirect.nginx << EOF -location = / { - return 307 /b; -} -EOF diff --git a/apps/hetzner/big-blue-button/template.pkr.hcl b/apps/hetzner/big-blue-button/template.pkr.hcl deleted file mode 100644 index 2dafd01..0000000 --- a/apps/hetzner/big-blue-button/template.pkr.hcl +++ /dev/null @@ -1,105 +0,0 @@ - -variable "app_name" { - type = string - default = "big-blue-button" -} - -variable "app_version" { - type = string - default = "2.4.6" -} - -variable "hcloud_image" { - type = string - default = "ubuntu-18.04" -} - -variable "apt_packages" { - type = string - default = "nginx certbot python-certbot-nginx haveged openjdk-8-jre ruby" -} - -variable "git-sha" { - type = string - default = "${env("GITHUB_SHA")}" -} - -variable "hcloud_api_token" { - type = string - default = "${env("HCLOUD_API_TOKEN")}" - sensitive = true -} - -variable "snapshot_name" { - type = string - default = "packer-{{timestamp}}" -} - -source "hcloud" "autogenerated_1" { - image = "${var.hcloud_image}" - location = "nbg1" - server_name = "hcloud-app-builder-${var.app_name}-{{timestamp}}" - server_type = "cx21" - snapshot_labels = { - git-sha = "${var.git-sha}" - version = "${var.app_version}" - slug = "oneclick-${var.app_name}-${var.app_version}-${var.hcloud_image}" - } - snapshot_name = "${var.snapshot_name}" - ssh_username = "root" - token = "${var.hcloud_api_token}" -} - -build { - sources = ["source.hcloud.autogenerated_1"] - - provisioner "shell" { - inline = ["cloud-init status --wait"] - } - - provisioner "file" { - destination = "/opt/" - source = "apps/hetzner/big-blue-button/files/opt/" - } - - provisioner "file" { - destination = "/usr/" - source = "apps/hetzner/big-blue-button/files/usr/" - } - - provisioner "file" { - destination = "/var/" - source = "apps/hetzner/big-blue-button/files/var/" - } - - provisioner "file" { - destination = "/var/www/" - source = "apps/shared/www/" - } - - provisioner "file" { - destination = "/var/www/html/assets/" - source = "apps/hetzner/big-blue-button/images/" - } - - provisioner "shell" { - environment_vars = ["DEBIAN_FRONTEND=noninteractive", "LC_ALL=C", "LANG=en_US.UTF-8", "LC_CTYPE=en_US.UTF-8"] - scripts = ["apps/shared/scripts/apt-upgrade.sh"] - } - - provisioner "shell" { - environment_vars = ["DEBIAN_FRONTEND=noninteractive", "LC_ALL=C", "LANG=en_US.UTF-8", "LC_CTYPE=en_US.UTF-8"] - inline = ["apt -qqy -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold' install ${var.apt_packages}"] - } - - provisioner "shell" { - environment_vars = ["application_version=${var.app_version}", "DEBIAN_FRONTEND=noninteractive", "LC_ALL=C", "LANG=en_US.UTF-8", "LC_CTYPE=en_US.UTF-8"] - scripts = ["apps/hetzner/big-blue-button/scripts/bbb-install.sh", "apps/shared/scripts/cleanup.sh"] - } - - provisioner "file" { - destination = "/etc/" - source = "apps/hetzner/big-blue-button/files/etc/" - } - -} diff --git a/apps/hetzner/big-blue-button/test.sh b/apps/hetzner/big-blue-button/test.sh deleted file mode 100644 index b9473af..0000000 --- a/apps/hetzner/big-blue-button/test.sh +++ /dev/null @@ -1,75 +0,0 @@ -#!/bin/bash -set -uexo pipefail - -export DEBIAN_FRONTEND=noninteractive - -apt-get update -apt-get install -y expect tcl - -# Run installer. -expect <<"EXPECT" -#!/usr/bin/expect -f -# -# This Expect script was generated by autoexpect on Wed Dec 1 13:02:46 2021 -# Expect and autoexpect were both written by Don Libes, NIST. -# -# Note that autoexpect does not guarantee a working script. It -# necessarily has to guess about certain things. Two reasons a script -# might fail are: -# -# 1) timing - A surprising number of programs (rn, ksh, zsh, telnet, -# etc.) and devices discard or ignore keystrokes that arrive "too -# quickly" after prompts. If you find your new script hanging up at -# one spot, try adding a short sleep just before the previous send. -# Setting "force_conservative" to 1 (see below) makes Expect do this -# automatically - pausing briefly before sending each character. This -# pacifies every program I know of. The -c flag makes the script do -# this in the first place. The -C flag allows you to define a -# character to toggle this mode off and on. - -set force_conservative 0 ;# set to 1 to force conservative mode even if - ;# script wasn't run conservatively originally -if {$force_conservative} { - set send_slow {1 .1} - proc send {ignore arg} { - sleep .1 - exp_send -s -- $arg - } -} - -# -# 2) differing output - Some programs produce different output each time -# they run. The "date" command is an obvious example. Another is -# ftp, if it produces throughput statistics at the end of a file -# transfer. If this causes a problem, delete these patterns or replace -# them with wildcards. An alternative is to use the -p flag (for -# "prompt") which makes Expect only look for the last line of output -# (i.e., the prompt). The -P flag allows you to define a character to -# toggle this mode off and on. -# -# Read the man page for more info. -# -# -Don - - -set timeout -1 -spawn /opt/hcloud/bbb_setup.sh -match_max 100000 -expect -exact "Your Domain: " -send -- "test.com\r" -expect -exact "Your BBB Admin Username \[Default: admin\]: " -send -- "test\r" -expect -exact "Your BBB Admin EMail Address: " -send -- "test@test.com\r" -expect -exact "Your BBB Admin Password \[8-32 characters, A-Z, a-z, 0-9, #?!@$%^&*-\]: " -send -- "Test123!\r" -expect -exact "Your BBB Admin Password (again): " -send -- "Test123!\r" -expect -exact "Is everything correct? \[Y/n\] " -send -- "Y\r" -expect -exact "Note that the Domain needs to exist. \[Y/n\]: " -send -- "N\r" -expect eof -EXPECT - -curl -sk https://localhost/b -Hhost:test.com | grep 'BigBlueButton'