From b1b41bb8da0ddf7e4759e623db2a817083e776fe Mon Sep 17 00:00:00 2001 From: holzi1005 Date: Tue, 3 Jun 2025 19:02:17 +0200 Subject: [PATCH 01/20] Update .docker-compose.https.yml --- .docker-compose.https.yml | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/.docker-compose.https.yml b/.docker-compose.https.yml index e6726a3..43666c6 100644 --- a/.docker-compose.https.yml +++ b/.docker-compose.https.yml @@ -1,8 +1,6 @@ -version: '3.8' - services: traefik-ja: - image: "traefik:v2.5" + image: "traefik:v3.3" command: - "--log.level=DEBUG" @@ -141,6 +139,32 @@ services: - external - internal + livekit-ja: + image: livekit/livekit-server:v1.8 + command: --config /etc/livekit.yaml + restart: unless-stopped + network_mode: host + labels: + - "traefik.enable=true" + - "traefik.http.routers.livekit-ja.tls=true" + - "traefik.http.routers.livekit-ja.rule=Host(``)" + - "traefik.http.routers.livekit-ja.entrypoints=web" + - "traefik.http.routers.livekit-ja.tls.certresolver=letsencrypt" + - "traefik.http.services.livekit-ja.loadbalancer.server.port=7880" + volumes: + - ./livekit/livekit.yaml:/etc/livekit.yaml + networks: + - external + - internal + redis-ja: + image: redis:7-alpine + command: redis-server /etc/redis.conf + restart: unless-stopped + volumes: + - ./redis/redis.conf:/etc/redis.conf + networks: + - internal + networks: external: internal: -- 2.39.5 From 3d3c916acf5f237c6bdb10cc0ab5450b5b602f1e Mon Sep 17 00:00:00 2001 From: holzi1005 Date: Tue, 3 Jun 2025 19:03:19 +0200 Subject: [PATCH 02/20] Add livekit/livekit.yaml --- livekit/livekit.yaml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 livekit/livekit.yaml diff --git a/livekit/livekit.yaml b/livekit/livekit.yaml new file mode 100644 index 0000000..a9e5280 --- /dev/null +++ b/livekit/livekit.yaml @@ -0,0 +1,23 @@ +port: 7880 +bind_addresses: + - "" +rtc: + tcp_port: 7881 + port_range_start: 50000 + port_range_end: 60000 + use_external_ip: false + enable_loopback_candidate: false +redis: + address: redis-ja:6379 + username: "" + password: "" + db: 0 + use_tls: false + sentinel_master_name: "" + sentinel_username: "" + sentinel_password: "" + sentinel_addresses: [] + cluster_addresses: [] + max_redirects: null +keys: + APIVg6jLoiMwFHp: O7CKx1ptmrBOtM6bMePQq0derknyE5jbjnYXlRm4oG0 -- 2.39.5 From c600cbd1715242324aba0e925d17096c6d89003c Mon Sep 17 00:00:00 2001 From: holzi1005 Date: Tue, 3 Jun 2025 19:04:02 +0200 Subject: [PATCH 03/20] Update .docker-compose.https.yml --- .docker-compose.https.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.docker-compose.https.yml b/.docker-compose.https.yml index 43666c6..94979bd 100644 --- a/.docker-compose.https.yml +++ b/.docker-compose.https.yml @@ -158,6 +158,7 @@ services: - internal redis-ja: image: redis:7-alpine + hostname: redis-ja command: redis-server /etc/redis.conf restart: unless-stopped volumes: -- 2.39.5 From ba3567022c3b83574a2280584b2b838c12cd4f71 Mon Sep 17 00:00:00 2001 From: holzi1005 Date: Tue, 3 Jun 2025 19:04:40 +0200 Subject: [PATCH 04/20] Add redis/redis.conf --- redis/redis.conf | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 redis/redis.conf diff --git a/redis/redis.conf b/redis/redis.conf new file mode 100644 index 0000000..f009419 --- /dev/null +++ b/redis/redis.conf @@ -0,0 +1,5 @@ +bind 0.0.0.0 +protected-mode no +port 6379 +timeout 0 +tcp-keepalive 300 \ No newline at end of file -- 2.39.5 From ce75bd9a476d52b1bdde9bd22e900b247078a1b1 Mon Sep 17 00:00:00 2001 From: holzi1005 Date: Tue, 3 Jun 2025 19:07:20 +0200 Subject: [PATCH 05/20] Update setup.sh --- setup.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/setup.sh b/setup.sh index 5195554..c4386bf 100644 --- a/setup.sh +++ b/setup.sh @@ -66,6 +66,12 @@ fi sed -i '/PUBLIC_URL/d' $FILE echo "PUBLIC_URL=$PUBLIC_URL" >> $FILE + LIVEKIT_URL=${LIVEKIT_URL:=livekit-dev.domain.de} + read -p "Enter the url you want run your livekit server on (no http/https) [$LIVEKIT_URL]: " input + LIVEKIT_URL=${input:=$LIVEKIT_URL} + sed -i '/LIVEKIT_URL/d' $FILE + echo "LIVEKIT_URL=$LIVEKIT_URL" >> $FILE + default_language=${default_language:=en} read -p "Which language you want to set as default allowed values: [de, en, fr, es, vi, zh, ru, ja, pt]: [$default_language] " input default_language=${input:=$default_language} @@ -148,9 +154,11 @@ echo ------------------------------------------------------------ echo "" cp .docker-compose.$HTTP_METHOD.yml docker-compose.yml sed -i "s||$PUBLIC_URL|g" docker-compose.yml +sed -i "s||$LIVEKIT_URL|g" docker-compose.yml sed -i "s||$HOST_IP|g" docker-compose.yml sed -i "s||$VERSION|g" docker-compose.yml + echo ------------------------------------------------------------ echo --------- 4. Migrate and Setup Docker Volume User ---------- echo ------------------------------------------------------------ -- 2.39.5 From d40a01c42f0384f6971dd609fa1b971a61f1f90b Mon Sep 17 00:00:00 2001 From: holzi1005 Date: Tue, 3 Jun 2025 19:09:17 +0200 Subject: [PATCH 06/20] Update .docker-compose.https.yml --- .docker-compose.https.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.docker-compose.https.yml b/.docker-compose.https.yml index 94979bd..1925da0 100644 --- a/.docker-compose.https.yml +++ b/.docker-compose.https.yml @@ -108,7 +108,7 @@ services: - internal keycloak-ja: - image: quay.io/keycloak/keycloak:22.0.3 + image: quay.io/keycloak/keycloak:26.0.1 depends_on: app-ja: condition: service_healthy @@ -121,7 +121,8 @@ services: KC_DB: mariadb KC_DB_USERNAME: keycloak KC_HTTP_RELATIVE_PATH: /keycloak - KC_PROXY: passthrough + KC_PROXY: edge + KC_HOSTNAME: /keycloak restart: unless-stopped command: - start-dev -- 2.39.5 From 4288b745f5dbba31721c777b1e7695ebccd6a494 Mon Sep 17 00:00:00 2001 From: holzi1005 Date: Tue, 3 Jun 2025 19:10:33 +0200 Subject: [PATCH 07/20] Update setup.sh --- setup.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.sh b/setup.sh index c4386bf..0c8f5b5 100644 --- a/setup.sh +++ b/setup.sh @@ -139,11 +139,11 @@ KC_DB=mariadb KC_DB_USERNAME=keycloak KC_DB_PASSWORD=$KEYCLOAK_PW KC_DB_URL='jdbc:mariadb://db-ja:3306/keycloak' -KC_HOSTNAME_URL='$HTTP_METHOD://$PUBLIC_URL/keycloak' +KC_HOSTNAME='$HTTP_METHOD://$PUBLIC_URL/keycloak' KC_HOSTNAME_PATH='$HTTP_METHOD://$PUBLIC_URL/keycloak' KC_HOSTNAME_ADMIN_URL='$HTTP_METHOD://$PUBLIC_URL/keycloak' KC_HTTP_RELATIVE_PATH=/keycloak -KC_PROXY=passthrough +KC_PROXY=edge EOL echo ".env.local Datei wurde erfolgreich erstellt." -- 2.39.5 From b800fd381e2c84e5754a8f70c8c87ad98499df5d Mon Sep 17 00:00:00 2001 From: holzi1005 Date: Wed, 11 Jun 2025 09:37:31 +0200 Subject: [PATCH 08/20] add livekit --- .docker-compose.https.yml | 32 +------ .docker-compose.livekit.yml | 181 ++++++++++++++++++++++++++++++++++++ .templates/livekit.yaml | 13 +++ livekit/livekit.yaml | 23 ----- setup.sh | 11 +++ 5 files changed, 207 insertions(+), 53 deletions(-) create mode 100644 .docker-compose.livekit.yml create mode 100644 .templates/livekit.yaml delete mode 100644 livekit/livekit.yaml diff --git a/.docker-compose.https.yml b/.docker-compose.https.yml index 1925da0..b6f693e 100644 --- a/.docker-compose.https.yml +++ b/.docker-compose.https.yml @@ -108,7 +108,7 @@ services: - internal keycloak-ja: - image: quay.io/keycloak/keycloak:26.0.1 + image: quay.io/keycloak/keycloak:22.0.3 depends_on: app-ja: condition: service_healthy @@ -121,8 +121,7 @@ services: KC_DB: mariadb KC_DB_USERNAME: keycloak KC_HTTP_RELATIVE_PATH: /keycloak - KC_PROXY: edge - KC_HOSTNAME: /keycloak + KC_PROXY: passthrough restart: unless-stopped command: - start-dev @@ -140,33 +139,6 @@ services: - external - internal - livekit-ja: - image: livekit/livekit-server:v1.8 - command: --config /etc/livekit.yaml - restart: unless-stopped - network_mode: host - labels: - - "traefik.enable=true" - - "traefik.http.routers.livekit-ja.tls=true" - - "traefik.http.routers.livekit-ja.rule=Host(``)" - - "traefik.http.routers.livekit-ja.entrypoints=web" - - "traefik.http.routers.livekit-ja.tls.certresolver=letsencrypt" - - "traefik.http.services.livekit-ja.loadbalancer.server.port=7880" - volumes: - - ./livekit/livekit.yaml:/etc/livekit.yaml - networks: - - external - - internal - redis-ja: - image: redis:7-alpine - hostname: redis-ja - command: redis-server /etc/redis.conf - restart: unless-stopped - volumes: - - ./redis/redis.conf:/etc/redis.conf - networks: - - internal - networks: external: internal: diff --git a/.docker-compose.livekit.yml b/.docker-compose.livekit.yml new file mode 100644 index 0000000..7aeeb41 --- /dev/null +++ b/.docker-compose.livekit.yml @@ -0,0 +1,181 @@ +services: + traefik-ja: + image: "traefik:v3.3" + + command: + - "--log.level=DEBUG" + - "--api.insecure=true" + - "--providers.docker=true" + - "--providers.docker.exposedbydefault=false" + - "--entrypoints.unsecure.address=:80" + # Global HTTPS + - "--entrypoints.web.address=:443" + - "--entrypoints.unsecure.http.redirections.entryPoint.to=web" + - "--entrypoints.unsecure.http.redirections.entryPoint.scheme=https" + # SSL configuration + - "--certificatesresolvers.letsencrypt.acme.httpchallenge=true" + - "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=unsecure" + - "--certificatesresolvers.letsencrypt.acme.email=webmaster@odc-master.de" + - "--certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json" + + networks: + - external + restart: unless-stopped + ports: + - "80:80" + - "443:443" + volumes: + - "/var/run/docker.sock:/var/run/docker.sock:ro" + - ./data/letsencrypt:/letsencrypt + - ./tools/traefik/config.yml:/etc/traefik/dynamic_conf/conf.yml:ro + + websocket-ja: + hostname: websocket-ja + image: git.h2-invent.com/meetling/websocket: + restart: unless-stopped + depends_on: + - traefik-ja + env_file: + - ./.env + - ./.env.local + - ./.env.custom + healthcheck: + test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:3000/healthz"] + interval: 10s + retries: 5 + timeout: 10s + start_period: 10s + + labels: + - "traefik.enable=true" + - "traefik.http.routers.websocket-ja.rule=Host(``) && PathPrefix(`/ws`)" + - "traefik.http.routers.websocket-ja.entrypoints=web" + - "traefik.http.routers.websocket-ja.tls=true" + - "traefik.http.routers.websocket-ja.tls.certresolver=letsencrypt" + - "traefik.http.middlewares.sslheader.headers.customrequestheaders.X-Forwarded-Proto=http" + - "traefik.http.routers.app-secure.middlewares=sslheader@docker" + networks: + - external + - internal + volumes: + - caddy_data:/data + - caddy_config:/config + + #Here is the Jitsi-Admin app + app-ja: + image: git.h2-invent.com/meetling/application: + restart: unless-stopped + depends_on: + db-ja: + condition: service_healthy + env_file: + - ./.env + - ./.env.local + - ./.env.custom + volumes: + - theme_data:/var/www/html/theme + - image_upload:/var/www/html/public/uploads/images + - theme_assests_data:/var/www/html/public/theme + - recording_uploads:/var/www/html/data/recording + networks: + - external + - internal + labels: + - "traefik.enable=true" + - "traefik.http.routers.app-ja.tls=true" + - "traefik.http.routers.app-ja.rule=Host(``)" + - "traefik.http.routers.app-ja.entrypoints=web" + - "traefik.http.routers.app-ja.tls.certresolver=letsencrypt" + + db-ja: + image: mariadb:latest + hostname: db-ja + healthcheck: + test: [ "CMD", "mariadb-admin" ,"ping", "-h", "localhost","-ptest" ] + timeout: 20s + retries: 10 + env_file: + - ./.env + - ./.env.local + - ./.env.custom + restart: unless-stopped + environment: + MARIADB_ROOT_PASSWORD: test + volumes: + - mariadb:/var/lib/mysql + - ./mysql-initdb:/docker-entrypoint-initdb.d + networks: + - internal + + keycloak-ja: + image: quay.io/keycloak/keycloak:26.0.1 + depends_on: + app-ja: + condition: service_healthy + env_file: + - ./.env + - ./.env.local + - ./.env.custom + environment: + KEYCLOAK_ADMIN: admin + KC_DB: mariadb + KC_DB_USERNAME: keycloak + KC_HTTP_RELATIVE_PATH: /keycloak + KC_PROXY: edge + KC_HOSTNAME: /keycloak + restart: unless-stopped + command: + - start-dev + - --import-realm + labels: + - "traefik.enable=true" + - "traefik.http.routers.keycloak-ja.tls=true" + - "traefik.http.routers.keycloak-ja.rule=Host(``) && PathPrefix(`/keycloak`)" + - "traefik.http.routers.keycloak-ja.entrypoints=web" + - "traefik.http.routers.keycloak-ja.tls.certresolver=letsencrypt" + - "traefik.http.services.keycloak-ja.loadbalancer.server.port=8080" + volumes: + - ./keycloak/:/opt/keycloak/data/import + networks: + - external + - internal + + livekit-ja: + image: livekit/livekit-server:v1.8 + command: --config /etc/livekit.yaml --node-ip + restart: unless-stopped + network_mode: host + labels: + - "traefik.enable=true" + - "traefik.http.routers.livekit-ja.tls=true" + - "traefik.http.routers.livekit-ja.rule=Host(``)" + - "traefik.http.routers.livekit-ja.entrypoints=web" + - "traefik.http.routers.livekit-ja.tls.certresolver=letsencrypt" + - "traefik.http.services.livekit-ja.loadbalancer.server.port=7880" + volumes: + - ./livekit/livekit.yaml:/etc/livekit.yaml + networks: + - external + - internal + redis-ja: + image: redis:7-alpine + hostname: redis-ja + command: redis-server /etc/redis.conf + restart: unless-stopped + volumes: + - ./redis/redis.conf:/etc/redis.conf + networks: + - internal + +networks: + external: + internal: + +volumes: + mariadb: + caddy_data: + caddy_config: + image_upload: + theme_data: + theme_assests_data: + recording_uploads: diff --git a/.templates/livekit.yaml b/.templates/livekit.yaml new file mode 100644 index 0000000..ab65c8d --- /dev/null +++ b/.templates/livekit.yaml @@ -0,0 +1,13 @@ +port: 7880 +bind_addresses: + - "" +rtc: + tcp_port: 7881 + port_range_start: 50000 + port_range_end: 60000 + use_external_ip: false + enable_loopback_candidate: false +redis: + address: redis-ja:6379 +keys: + meetling: diff --git a/livekit/livekit.yaml b/livekit/livekit.yaml deleted file mode 100644 index a9e5280..0000000 --- a/livekit/livekit.yaml +++ /dev/null @@ -1,23 +0,0 @@ -port: 7880 -bind_addresses: - - "" -rtc: - tcp_port: 7881 - port_range_start: 50000 - port_range_end: 60000 - use_external_ip: false - enable_loopback_candidate: false -redis: - address: redis-ja:6379 - username: "" - password: "" - db: 0 - use_tls: false - sentinel_master_name: "" - sentinel_username: "" - sentinel_password: "" - sentinel_addresses: [] - cluster_addresses: [] - max_redirects: null -keys: - APIVg6jLoiMwFHp: O7CKx1ptmrBOtM6bMePQq0derknyE5jbjnYXlRm4oG0 diff --git a/setup.sh b/setup.sh index 0c8f5b5..ba0793d 100644 --- a/setup.sh +++ b/setup.sh @@ -34,11 +34,13 @@ else MERCURE_JWT_SECRET=$(date +%s | sha256sum | base64 | head -c 32) KEYCLOAK_ADMIN_PW=$(date +%s | sha256sum | base64 | head -c 32) NEW_UUID=$(date +%s | sha256sum | base64 | head -c 32) + LIVEKIT_KEY=$(date +%s | sha256sum | base64 | head -c 32) echo "KEYCLOAK_PW=$KEYCLOAK_PW" >> $FILE echo "JITSI_ADMIN_PW=$JITSI_ADMIN_PW" >> $FILE echo "MERCURE_JWT_SECRET=$MERCURE_JWT_SECRET" >> $FILE echo "KEYCLOAK_ADMIN_PW=$KEYCLOAK_ADMIN_PW" >> $FILE echo "NEW_UUID=$NEW_UUID" >> $FILE + echo "LIVEKIT_KEY=$LIVEKIT_KEY" >> $FILE source $FILE fi @@ -159,6 +161,15 @@ sed -i "s||$HOST_IP|g" docker-compose.yml sed -i "s||$VERSION|g" docker-compose.yml +echo ------------------------------------------------------------ +echo --------- 3. Build Docker Compose File --------------------- +echo ------------------------------------------------------------ +echo "" +cp .templates/livekit.yaml livekit/livekit.yaml +sed -i "s||$LIVEKIT_KEY|g" livekit/livekit.yaml +sed -i "s||$KEYCLOAK_PW|g" livekit/livekit.yaml + + echo ------------------------------------------------------------ echo --------- 4. Migrate and Setup Docker Volume User ---------- echo ------------------------------------------------------------ -- 2.39.5 From 9780936fde3f4a6c64fd4591eb3a574a715c64cd Mon Sep 17 00:00:00 2001 From: holzi1005 Date: Wed, 11 Jun 2025 09:46:44 +0200 Subject: [PATCH 09/20] update --- livekit/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 livekit/.gitkeep diff --git a/livekit/.gitkeep b/livekit/.gitkeep new file mode 100644 index 0000000..e69de29 -- 2.39.5 From b55803b9b278b6ecee22ea0b9ce475f7cfc4031c Mon Sep 17 00:00:00 2001 From: holzi1005 Date: Wed, 11 Jun 2025 09:48:24 +0200 Subject: [PATCH 10/20] update --- .docker-compose.livekit.yml | 6 +----- .templates/livekit.yaml | 2 +- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/.docker-compose.livekit.yml b/.docker-compose.livekit.yml index 7aeeb41..1ca5521 100644 --- a/.docker-compose.livekit.yml +++ b/.docker-compose.livekit.yml @@ -154,9 +154,6 @@ services: - "traefik.http.services.livekit-ja.loadbalancer.server.port=7880" volumes: - ./livekit/livekit.yaml:/etc/livekit.yaml - networks: - - external - - internal redis-ja: image: redis:7-alpine hostname: redis-ja @@ -164,8 +161,7 @@ services: restart: unless-stopped volumes: - ./redis/redis.conf:/etc/redis.conf - networks: - - internal + network_mode: host networks: external: diff --git a/.templates/livekit.yaml b/.templates/livekit.yaml index ab65c8d..d90346e 100644 --- a/.templates/livekit.yaml +++ b/.templates/livekit.yaml @@ -8,6 +8,6 @@ rtc: use_external_ip: false enable_loopback_candidate: false redis: - address: redis-ja:6379 + address: 127.0.0.1:6379 keys: meetling: -- 2.39.5 From 935d4e96bac7cfb77084f0e4f810078ded54ff5b Mon Sep 17 00:00:00 2001 From: holzi1005 Date: Wed, 11 Jun 2025 10:02:14 +0200 Subject: [PATCH 11/20] update --- .docker-compose.livekit.yml | 7 ------- setup.sh | 8 ++++---- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/.docker-compose.livekit.yml b/.docker-compose.livekit.yml index 1ca5521..54ec957 100644 --- a/.docker-compose.livekit.yml +++ b/.docker-compose.livekit.yml @@ -116,13 +116,6 @@ services: - ./.env - ./.env.local - ./.env.custom - environment: - KEYCLOAK_ADMIN: admin - KC_DB: mariadb - KC_DB_USERNAME: keycloak - KC_HTTP_RELATIVE_PATH: /keycloak - KC_PROXY: edge - KC_HOSTNAME: /keycloak restart: unless-stopped command: - start-dev diff --git a/setup.sh b/setup.sh index ba0793d..dce7af8 100644 --- a/setup.sh +++ b/setup.sh @@ -135,8 +135,8 @@ DEFAULT_LANGUAGE=$default_language MERCURE_URL='http://websocket-ja:3000/.well-known/mercure' MERCURE_PUBLIC_URL='$HTTP_METHOD://$PUBLIC_URL' WEBSOCKET_SECRET=$MERCURE_JWT_SECRET -KEYCLOAK_ADMIN=admin -KEYCLOAK_ADMIN_PASSWORD=$KEYCLOAK_ADMIN_PW +KEYCLOAK_BOOTSTRAP_ADMIN_username=admin +KEYCLOAK_BOOTSTRAP_ADMIN_PASSWORD=$KEYCLOAK_ADMIN_PW KC_DB=mariadb KC_DB_USERNAME=keycloak KC_DB_PASSWORD=$KEYCLOAK_PW @@ -144,8 +144,8 @@ KC_DB_URL='jdbc:mariadb://db-ja:3306/keycloak' KC_HOSTNAME='$HTTP_METHOD://$PUBLIC_URL/keycloak' KC_HOSTNAME_PATH='$HTTP_METHOD://$PUBLIC_URL/keycloak' KC_HOSTNAME_ADMIN_URL='$HTTP_METHOD://$PUBLIC_URL/keycloak' -KC_HTTP_RELATIVE_PATH=/keycloak -KC_PROXY=edge +KC_HTTP_RELATIVE_PATH: /keycloak +KC_PROXY_HEADERS: xforwarded EOL echo ".env.local Datei wurde erfolgreich erstellt." -- 2.39.5 From b592c5775ead1dba30eadf8468ffac19dbf0a212 Mon Sep 17 00:00:00 2001 From: holzi1005 Date: Wed, 11 Jun 2025 10:05:24 +0200 Subject: [PATCH 12/20] update --- setup.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/setup.sh b/setup.sh index dce7af8..4a17908 100644 --- a/setup.sh +++ b/setup.sh @@ -141,9 +141,7 @@ KC_DB=mariadb KC_DB_USERNAME=keycloak KC_DB_PASSWORD=$KEYCLOAK_PW KC_DB_URL='jdbc:mariadb://db-ja:3306/keycloak' -KC_HOSTNAME='$HTTP_METHOD://$PUBLIC_URL/keycloak' -KC_HOSTNAME_PATH='$HTTP_METHOD://$PUBLIC_URL/keycloak' -KC_HOSTNAME_ADMIN_URL='$HTTP_METHOD://$PUBLIC_URL/keycloak' +KC_HOSTNAME='$PUBLIC_URL/keycloak' KC_HTTP_RELATIVE_PATH: /keycloak KC_PROXY_HEADERS: xforwarded EOL -- 2.39.5 From b4dfbaf37c5b60a96a8cd90f5e56726b64d17dd0 Mon Sep 17 00:00:00 2001 From: holzi1005 Date: Wed, 11 Jun 2025 10:11:17 +0200 Subject: [PATCH 13/20] udpate --- setup.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/setup.sh b/setup.sh index 4a17908..610a536 100644 --- a/setup.sh +++ b/setup.sh @@ -51,7 +51,7 @@ fi echo "VERSION=$VERSION" >> $FILE ENVIRONMENT=${ENVIRONMENT:=prod} - read -p "Enter the environment dev/prod[$ENVIRONMENT]: " input + read -p "Enter the environment dev/prod/livekit [$ENVIRONMENT]: " input ENVIRONMENT=${input:=$ENVIRONMENT} sed -i '/ENVIRONMENT/d' $FILE echo "ENVIRONMENT=$ENVIRONMENT" >> $FILE @@ -119,6 +119,7 @@ if [ -f .env.local ]; then fi cat < .env.local +APP_DEBUG='$ENVIRONMENT' APP_SCHEME='$HTTP_METHOD' MAILER_DSN='null://null' DATABASE_URL='mysql://jitsiadmin:$JITSI_ADMIN_PW@db-ja:3306/jitsiadmin' @@ -152,7 +153,7 @@ echo ------------------------------------------------------------ echo --------- 3. Build Docker Compose File --------------------- echo ------------------------------------------------------------ echo "" -cp .docker-compose.$HTTP_METHOD.yml docker-compose.yml +cp .docker-compose.$ENVIRONMENT.yml docker-compose.yml sed -i "s||$PUBLIC_URL|g" docker-compose.yml sed -i "s||$LIVEKIT_URL|g" docker-compose.yml sed -i "s||$HOST_IP|g" docker-compose.yml -- 2.39.5 From 301e0125ad711bfeedf9ef3af8b92f10126d076c Mon Sep 17 00:00:00 2001 From: holzi1005 Date: Wed, 11 Jun 2025 15:53:13 +0200 Subject: [PATCH 14/20] update --- .docker-compose.livekit.yml | 7 ------- .templates/traefik-livekit.yaml | 15 +++++++++++++++ setup.sh | 11 +++++++---- traefik/.gitkeep | 0 4 files changed, 22 insertions(+), 11 deletions(-) create mode 100644 .templates/traefik-livekit.yaml create mode 100644 traefik/.gitkeep diff --git a/.docker-compose.livekit.yml b/.docker-compose.livekit.yml index 54ec957..5053851 100644 --- a/.docker-compose.livekit.yml +++ b/.docker-compose.livekit.yml @@ -138,13 +138,6 @@ services: command: --config /etc/livekit.yaml --node-ip restart: unless-stopped network_mode: host - labels: - - "traefik.enable=true" - - "traefik.http.routers.livekit-ja.tls=true" - - "traefik.http.routers.livekit-ja.rule=Host(``)" - - "traefik.http.routers.livekit-ja.entrypoints=web" - - "traefik.http.routers.livekit-ja.tls.certresolver=letsencrypt" - - "traefik.http.services.livekit-ja.loadbalancer.server.port=7880" volumes: - ./livekit/livekit.yaml:/etc/livekit.yaml redis-ja: diff --git a/.templates/traefik-livekit.yaml b/.templates/traefik-livekit.yaml new file mode 100644 index 0000000..f46f9fd --- /dev/null +++ b/.templates/traefik-livekit.yaml @@ -0,0 +1,15 @@ +http: + routers: + livekit-ja: + rule: "Host(``)" + entryPoints: + - web + service: livekit-ja + tls: + certResolver: letsencrypt + + services: + livekit-ja: + loadBalancer: + servers: + - url: "http://host.docker.internal:7880" diff --git a/setup.sh b/setup.sh index 610a536..666b15d 100644 --- a/setup.sh +++ b/setup.sh @@ -124,8 +124,8 @@ APP_SCHEME='$HTTP_METHOD' MAILER_DSN='null://null' DATABASE_URL='mysql://jitsiadmin:$JITSI_ADMIN_PW@db-ja:3306/jitsiadmin' laF_baseUrl='$HTTP_METHOD://$PUBLIC_URL' +laF_startpage='0' VICH_BASE='$HTTP_METHOD://$PUBLIC_URL' -GIT_VERSION=1.0.12 PUBLIC_URL='$PUBLIC_URL' OAUTH_KEYCLOAK_CLIENT_SECRET=$NEW_UUID OAUTH_KEYCLOAK_SERVER='$HTTP_METHOD://$PUBLIC_URL/keycloak' @@ -136,8 +136,8 @@ DEFAULT_LANGUAGE=$default_language MERCURE_URL='http://websocket-ja:3000/.well-known/mercure' MERCURE_PUBLIC_URL='$HTTP_METHOD://$PUBLIC_URL' WEBSOCKET_SECRET=$MERCURE_JWT_SECRET -KEYCLOAK_BOOTSTRAP_ADMIN_username=admin -KEYCLOAK_BOOTSTRAP_ADMIN_PASSWORD=$KEYCLOAK_ADMIN_PW +KC_BOOTSTRAP_ADMIN_USERNAME=admin +KC_BOOTSTRAP_ADMIN_PASSWORD=$KEYCLOAK_ADMIN_PW KC_DB=mariadb KC_DB_USERNAME=keycloak KC_DB_PASSWORD=$KEYCLOAK_PW @@ -161,13 +161,16 @@ sed -i "s||$VERSION|g" docker-compose.yml echo ------------------------------------------------------------ -echo --------- 3. Build Docker Compose File --------------------- +echo --------- 3. Setup Livekit --------------------------------- echo ------------------------------------------------------------ echo "" cp .templates/livekit.yaml livekit/livekit.yaml sed -i "s||$LIVEKIT_KEY|g" livekit/livekit.yaml sed -i "s||$KEYCLOAK_PW|g" livekit/livekit.yaml +cp .templates/traefik-livekit.yaml traefik/config.yaml +sed -i "s||$LIVEKIT_URL|g" traefik/config.yaml + echo ------------------------------------------------------------ echo --------- 4. Migrate and Setup Docker Volume User ---------- diff --git a/traefik/.gitkeep b/traefik/.gitkeep new file mode 100644 index 0000000..e69de29 -- 2.39.5 From 3048b89cf3f9283c3586a3bfe4bb0cff6fc47996 Mon Sep 17 00:00:00 2001 From: holzi1005 Date: Wed, 11 Jun 2025 15:59:04 +0200 Subject: [PATCH 15/20] update --- .docker-compose.livekit.yml | 4 +++- setup.sh | 33 ++++++++++++++++++--------------- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/.docker-compose.livekit.yml b/.docker-compose.livekit.yml index 5053851..c79e1ab 100644 --- a/.docker-compose.livekit.yml +++ b/.docker-compose.livekit.yml @@ -7,6 +7,8 @@ services: - "--api.insecure=true" - "--providers.docker=true" - "--providers.docker.exposedbydefault=false" + - "--providers.file.directory=/etc/traefik/dynamic" + - "--providers.file.watch=true" - "--entrypoints.unsecure.address=:80" # Global HTTPS - "--entrypoints.web.address=:443" @@ -27,7 +29,7 @@ services: volumes: - "/var/run/docker.sock:/var/run/docker.sock:ro" - ./data/letsencrypt:/letsencrypt - - ./tools/traefik/config.yml:/etc/traefik/dynamic_conf/conf.yml:ro + - ./traefik/:/etc/traefik/dynamic:ro websocket-ja: hostname: websocket-ja diff --git a/setup.sh b/setup.sh index 666b15d..d85829a 100644 --- a/setup.sh +++ b/setup.sh @@ -68,11 +68,13 @@ fi sed -i '/PUBLIC_URL/d' $FILE echo "PUBLIC_URL=$PUBLIC_URL" >> $FILE - LIVEKIT_URL=${LIVEKIT_URL:=livekit-dev.domain.de} - read -p "Enter the url you want run your livekit server on (no http/https) [$LIVEKIT_URL]: " input - LIVEKIT_URL=${input:=$LIVEKIT_URL} - sed -i '/LIVEKIT_URL/d' $FILE - echo "LIVEKIT_URL=$LIVEKIT_URL" >> $FILE + if [ "$ENVIRONMENT" = "livekit" ]; then + LIVEKIT_URL=${LIVEKIT_URL:=livekit-dev.domain.de} + read -p "Enter the url you want run your livekit server on (no http/https) [$LIVEKIT_URL]: " input + LIVEKIT_URL=${input:=$LIVEKIT_URL} + sed -i '/LIVEKIT_URL/d' $FILE + echo "LIVEKIT_URL=$LIVEKIT_URL" >> $FILE + fi default_language=${default_language:=en} read -p "Which language you want to set as default allowed values: [de, en, fr, es, vi, zh, ru, ja, pt]: [$default_language] " input @@ -160,17 +162,18 @@ sed -i "s||$HOST_IP|g" docker-compose.yml sed -i "s||$VERSION|g" docker-compose.yml -echo ------------------------------------------------------------ -echo --------- 3. Setup Livekit --------------------------------- -echo ------------------------------------------------------------ -echo "" -cp .templates/livekit.yaml livekit/livekit.yaml -sed -i "s||$LIVEKIT_KEY|g" livekit/livekit.yaml -sed -i "s||$KEYCLOAK_PW|g" livekit/livekit.yaml - -cp .templates/traefik-livekit.yaml traefik/config.yaml -sed -i "s||$LIVEKIT_URL|g" traefik/config.yaml +if [ "$ENVIRONMENT" = "livekit" ]; then + echo ------------------------------------------------------------ + echo --------- 3. Setup Livekit --------------------------------- + echo ------------------------------------------------------------ + echo "" + cp .templates/livekit.yaml livekit/livekit.yaml + sed -i "s||$LIVEKIT_KEY|g" livekit/livekit.yaml + sed -i "s||$KEYCLOAK_PW|g" livekit/livekit.yaml + cp .templates/traefik-livekit.yaml traefik/config.yaml + sed -i "s||$LIVEKIT_URL|g" traefik/config.yaml +fi echo ------------------------------------------------------------ echo --------- 4. Migrate and Setup Docker Volume User ---------- -- 2.39.5 From 2b0e0df98b2450418d09b0d19904ce154aec31f0 Mon Sep 17 00:00:00 2001 From: holzi1005 Date: Wed, 11 Jun 2025 16:00:21 +0200 Subject: [PATCH 16/20] update --- setup.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.sh b/setup.sh index d85829a..1805e57 100644 --- a/setup.sh +++ b/setup.sh @@ -164,7 +164,7 @@ sed -i "s||$VERSION|g" docker-compose.yml if [ "$ENVIRONMENT" = "livekit" ]; then echo ------------------------------------------------------------ - echo --------- 3. Setup Livekit --------------------------------- + echo --------- 4. Setup Livekit --------------------------------- echo ------------------------------------------------------------ echo "" cp .templates/livekit.yaml livekit/livekit.yaml @@ -176,7 +176,7 @@ if [ "$ENVIRONMENT" = "livekit" ]; then fi echo ------------------------------------------------------------ -echo --------- 4. Migrate and Setup Docker Volume User ---------- +echo --------- Option: Migrate and Setup Docker Volume User ----- echo ------------------------------------------------------------ echo "" -- 2.39.5 From 2de8c44b4d89e201a813bf6637891dc30e94cb3b Mon Sep 17 00:00:00 2001 From: holzi1005 Date: Wed, 11 Jun 2025 16:07:09 +0200 Subject: [PATCH 17/20] update --- setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.sh b/setup.sh index 1805e57..82d1f21 100644 --- a/setup.sh +++ b/setup.sh @@ -144,7 +144,7 @@ KC_DB=mariadb KC_DB_USERNAME=keycloak KC_DB_PASSWORD=$KEYCLOAK_PW KC_DB_URL='jdbc:mariadb://db-ja:3306/keycloak' -KC_HOSTNAME='$PUBLIC_URL/keycloak' +KC_HOSTNAME='$HTTP_METHOD://$PUBLIC_URL/keycloak' KC_HTTP_RELATIVE_PATH: /keycloak KC_PROXY_HEADERS: xforwarded EOL -- 2.39.5 From d9776809b41a3d9a02059891c25a39b71093fcf0 Mon Sep 17 00:00:00 2001 From: holzi1005 Date: Wed, 11 Jun 2025 16:11:58 +0200 Subject: [PATCH 18/20] update --- .docker-compose.livekit.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.docker-compose.livekit.yml b/.docker-compose.livekit.yml index c79e1ab..cb98745 100644 --- a/.docker-compose.livekit.yml +++ b/.docker-compose.livekit.yml @@ -26,6 +26,8 @@ services: ports: - "80:80" - "443:443" + extra_hosts: + - "host.docker.internal:host-gateway" volumes: - "/var/run/docker.sock:/var/run/docker.sock:ro" - ./data/letsencrypt:/letsencrypt -- 2.39.5 From 5defe923fcda5c67481e95d3bfeee49a26073c20 Mon Sep 17 00:00:00 2001 From: holzi1005 Date: Mon, 16 Jun 2025 15:55:29 +0200 Subject: [PATCH 19/20] add turn server config --- .docker-compose.livekit.yml | 2 +- .templates/livekit.yaml | 5 +++++ setup.sh | 13 ++++++++++++- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/.docker-compose.livekit.yml b/.docker-compose.livekit.yml index cb98745..3ef9868 100644 --- a/.docker-compose.livekit.yml +++ b/.docker-compose.livekit.yml @@ -25,7 +25,7 @@ services: restart: unless-stopped ports: - "80:80" - - "443:443" + - "8443:443" extra_hosts: - "host.docker.internal:host-gateway" volumes: diff --git a/.templates/livekit.yaml b/.templates/livekit.yaml index d90346e..d1f6589 100644 --- a/.templates/livekit.yaml +++ b/.templates/livekit.yaml @@ -7,6 +7,11 @@ rtc: port_range_end: 60000 use_external_ip: false enable_loopback_candidate: false + turn_servers: + - host: + port: 443 + protocol: tls + credential: redis: address: 127.0.0.1:6379 keys: diff --git a/setup.sh b/setup.sh index 82d1f21..335f59e 100644 --- a/setup.sh +++ b/setup.sh @@ -35,12 +35,14 @@ else KEYCLOAK_ADMIN_PW=$(date +%s | sha256sum | base64 | head -c 32) NEW_UUID=$(date +%s | sha256sum | base64 | head -c 32) LIVEKIT_KEY=$(date +%s | sha256sum | base64 | head -c 32) + COTURN_KEY=$(date +%s | sha256sum | base64 | head -c 32) echo "KEYCLOAK_PW=$KEYCLOAK_PW" >> $FILE echo "JITSI_ADMIN_PW=$JITSI_ADMIN_PW" >> $FILE echo "MERCURE_JWT_SECRET=$MERCURE_JWT_SECRET" >> $FILE echo "KEYCLOAK_ADMIN_PW=$KEYCLOAK_ADMIN_PW" >> $FILE echo "NEW_UUID=$NEW_UUID" >> $FILE echo "LIVEKIT_KEY=$LIVEKIT_KEY" >> $FILE + echo "COTURN_KEY=$COTURN_KEY" >> $FILE source $FILE fi @@ -74,6 +76,12 @@ fi LIVEKIT_URL=${input:=$LIVEKIT_URL} sed -i '/LIVEKIT_URL/d' $FILE echo "LIVEKIT_URL=$LIVEKIT_URL" >> $FILE + + TURN_URL=${TURN_URL:=turn-dev.domain.de} + read -p "Enter the url for your Turn Server (no http/https) [$TURN_URL]: " input + TURN_URL=${input:=$TURN_URL} + sed -i '/TURN_URL/d' $FILE + echo "TURN_URL=$TURN_URL" >> $FILE fi default_language=${default_language:=en} @@ -170,9 +178,12 @@ if [ "$ENVIRONMENT" = "livekit" ]; then cp .templates/livekit.yaml livekit/livekit.yaml sed -i "s||$LIVEKIT_KEY|g" livekit/livekit.yaml sed -i "s||$KEYCLOAK_PW|g" livekit/livekit.yaml - + sed -i "s||$TURN_URL|g" livekit/livekit.yaml + sed -i "s||$COTURN_KEY|g" livekit/livekit.yaml + cp .templates/traefik-livekit.yaml traefik/config.yaml sed -i "s||$LIVEKIT_URL|g" traefik/config.yaml + fi echo ------------------------------------------------------------ -- 2.39.5 From 739685f1c2e5bf723006cd9be195ba25e135d434 Mon Sep 17 00:00:00 2001 From: holzi1005 Date: Mon, 16 Jun 2025 16:03:07 +0200 Subject: [PATCH 20/20] update turn domain --- setup.sh | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/setup.sh b/setup.sh index 335f59e..e2681cc 100644 --- a/setup.sh +++ b/setup.sh @@ -65,20 +65,20 @@ fi echo "HTTP_METHOD=$HTTP_METHOD" >> $FILE PUBLIC_URL=${PUBLIC_URL:=dev.domain.de} - read -p "Enter the url you want to enter the jitsi-admin with no protocoll (no http/https) [$PUBLIC_URL]: " input + read -p "Enter the Domain you want to enter the jitsi-admin with no protocoll [$PUBLIC_URL]: " input PUBLIC_URL=${input:=$PUBLIC_URL} sed -i '/PUBLIC_URL/d' $FILE echo "PUBLIC_URL=$PUBLIC_URL" >> $FILE if [ "$ENVIRONMENT" = "livekit" ]; then LIVEKIT_URL=${LIVEKIT_URL:=livekit-dev.domain.de} - read -p "Enter the url you want run your livekit server on (no http/https) [$LIVEKIT_URL]: " input + read -p "Enter the Domain you want run your livekit server on [$LIVEKIT_URL]: " input LIVEKIT_URL=${input:=$LIVEKIT_URL} sed -i '/LIVEKIT_URL/d' $FILE echo "LIVEKIT_URL=$LIVEKIT_URL" >> $FILE - TURN_URL=${TURN_URL:=turn-dev.domain.de} - read -p "Enter the url for your Turn Server (no http/https) [$TURN_URL]: " input + TURN_URL=${TURN_URL:=""} + read -p "Enter the Domain for your Turn Server (Empty if no Coturn setup) [$TURN_URL]: " input TURN_URL=${input:=$TURN_URL} sed -i '/TURN_URL/d' $FILE echo "TURN_URL=$TURN_URL" >> $FILE @@ -175,17 +175,23 @@ if [ "$ENVIRONMENT" = "livekit" ]; then echo --------- 4. Setup Livekit --------------------------------- echo ------------------------------------------------------------ echo "" - cp .templates/livekit.yaml livekit/livekit.yaml - sed -i "s||$LIVEKIT_KEY|g" livekit/livekit.yaml - sed -i "s||$KEYCLOAK_PW|g" livekit/livekit.yaml - sed -i "s||$TURN_URL|g" livekit/livekit.yaml - sed -i "s||$COTURN_KEY|g" livekit/livekit.yaml - cp .templates/traefik-livekit.yaml traefik/config.yaml sed -i "s||$LIVEKIT_URL|g" traefik/config.yaml + cp .templates/livekit.yaml livekit/livekit.yaml + sed -i "s||$LIVEKIT_KEY|g" livekit/livekit.yaml + sed -i "s||$KEYCLOAK_PW|g" livekit/livekit.yaml + + if [ -z "$COTURN_KEY" ]; then + sed -i '/turn_servers:/,/^ *credential: /d' livekit/livekit.yaml + else + sed -i "s||$TURN_URL|g" livekit/livekit.yaml + sed -i "s||$COTURN_KEY|g" livekit/livekit.yaml + fi + fi + echo ------------------------------------------------------------ echo --------- Option: Migrate and Setup Docker Volume User ----- echo ------------------------------------------------------------ -- 2.39.5