From d47e8b0165af470e2488e360e6590f37d5f08918 Mon Sep 17 00:00:00 2001 From: James Turland Date: Mon, 7 Oct 2024 14:59:10 +0100 Subject: [PATCH] mirotalk --- MiroTalk/.env | 169 +++++++++++++++++++++++++++++++++++ MiroTalk/docker-compose.yaml | 35 ++++++++ 2 files changed, 204 insertions(+) create mode 100644 MiroTalk/.env create mode 100644 MiroTalk/docker-compose.yaml diff --git a/MiroTalk/.env b/MiroTalk/.env new file mode 100644 index 0000000..a56d54a --- /dev/null +++ b/MiroTalk/.env @@ -0,0 +1,169 @@ +# Domain + +HOST=localhost + +# Signaling Server listen port + +PORT=3000 + +# Enable self-signed certs (app/ssl) + +HTTPS=false # true or false + +# Time Zone corresponding to timezone identifiers from the IANA Time Zone Database es Europe/Rome default UTC + +TZ=Europe/London + +# Logs + +LOGS_DEBUG=true # true or false +LOGS_COLORS=true # true or false + +# Cors +# Origin: Allow specified origin es '["https://example.com", "https://subdomain.example.com", "http://localhost:3000"]' or +# all origins '*' if not specified as per default. +# Methods: Allow only GET and POST methods + +CORS_ORIGIN='*' +CORS_METHODS='["GET", "POST"]' + +# IP whitelist +# Access to the instance is restricted to only the specified IP addresses in the allowed list. This feature is disabled by default. + +IP_WHITELIST_ENABLED=false # true or false +IP_WHITELIST_ALLOWED='["127.0.0.1", "::1"]' + +# OIDC - OpenID Connect +# 1. Sign up for an account at https://auth0.com. +# 2. Navigate to https://manage.auth0.com/ to create a new application tailored to your specific requirements. +# For those seeking an open-source solution, check out: https://github.com/panva/node-oidc-provider + +OIDC_ENABLED=true # true or false +OIDC_ISSUER_BASE_URL='https://authentik.yourdomain.com/application/o/mirotalk/' +OIDC_BASE_URL='https://mirotalk.yourdomain.com' # https://p2p.mirotalk.com +OIDC_CLIENT_ID='JQsgccwyOHsPMFiQXmCgh3tcrmdatqwJXezxx4gG' +OIDC_CLIENT_SECRET='FqXHbAxsAvCYMYTRKiKyyhuEe3M3lUrT1i9txC0powVbCebDe7NywMpH68kmZGcMlqqYZsSP8fo8BtFrebIjAW00Zp3vCNHSyAHNnTljhwx7tio0AV910y7B5MNceafh' +OIDC_AUTH_REUIRED=true # set to true if authentication is required for all routes +SESSION_SECRET='mirotalk-p2p-oidc-secret' + +# Host protection +# HOST_PROTECTED: +# - When set to true, it requires a valid username and password from the HOST_USERS list to initialize or join a room. +# - When OIDC_ENABLED is utilized alongside host protection, the authenticated user will be recognized as valid.# HOST_USER_AUTH: When set to true, it also requires a valid username and password for joining the room. +# HOST_USERS: This is the list of valid users along with their credentials. + +HOST_PROTECTED=false # true or false +HOST_USER_AUTH=false # true or false +HOST_USERS='[{"username": "username", "password": "password"},{"username": "username2", "password": "password2"}]' + +# JWT token config + +JWT_KEY=mirotalkp2p_jwt_secret +JWT_EXP=1h + +# Presenters list +# In our virtual room, the first participant to join will assume the role of the presenter. +# Additionally, we have the option to include more presenters and co-presenters, each identified by their username. + +PRESENTERS='["Miroslav Pejic", "miroslav.pejic.85@gmail.com"]' + +# Ngrok +# 1. Goto https://ngrok.com +# 2. Get started for free +# 3. Copy YourNgrokAuthToken: https://dashboard.ngrok.com/get-started/your-authtoken + +NGROK_ENABLED=false # true or false +NGROK_AUTH_TOKEN=YourNgrokAuthToken + +# Stun +# About: https://bloggeek.me/webrtcglossary/stun/ +# Check: https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/ + +STUN_SERVER_ENABLED=true # true or false +STUN_SERVER_URL=stun:stun.l.google.com:19302 + +# Turn +# About: https://bloggeek.me/webrtcglossary/turn/ +# Recommended: https://github.com/coturn/coturn +# Installation: https://github.com/miroslavpejic85/mirotalk/blob/master/docs/coturn.md +# Free one: https://www.metered.ca/tools/openrelay/ (Please, create your own account) +# Check: https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/ + +TURN_SERVER_ENABLED=true # true or false +TURN_SERVER_URL=turn:a.relay.metered.ca:443 +TURN_SERVER_USERNAME=e8dd65b92c62d3e36cafb807 +TURN_SERVER_CREDENTIAL=uWdWNmkhvyqTEswO + +# IP lookup +# Using GeoJS to get more info about peer by IP +# Doc: https://www.geojs.io/docs/v1/endpoints/geo/ + +IP_LOOKUP_ENABLED=false # true or false + +# API +# The response will give you a entrypoint / Room URL for your meeting. +# curl -X POST "http://localhost:3000/api/v1/meeting" -H "authorization: mirotalkp2p_default_secret" -H "Content-Type: application/json" + +API_KEY_SECRET=mirotalkp2p_default_secret +API_DISABLED='["token", "meetings"]' + +# Survey URL +# Using to redirect the client after close the call (feedbacks, website...) + +SURVEY_ENABLED=true # true or false +SURVEY_URL=https://www.questionpro.com/t/AUs7VZq00L + +# Redirect URL on leave room +# Upon leaving the room, users who either opt out of providing feedback or if the survey is disabled +# will be redirected to a specified URL. If enabled false the default '/newrcall' URL will be used. + +REDIRECT_ENABLED=false # true or false +REDIRECT_URL='https://p2p.mirotalk.com' + +# Sentry (optional) +# 1. Goto https://sentry.io/ +# 2. Create account +# 3. Goto Settings/Projects/YourProjectName/Client Keys (DSN) + +SENTRY_ENABLED=false # true or false +SENTRY_DSN=YourClientKeyDSN +SENTRY_TRACES_SAMPLE_RATE=1.0 + +# Slack Integration (optional) +# 1. Goto https://api.slack.com/apps/ +# 2. Create your app +# 3. On Settings - Basic Information - App Credentials chose your Signing Secret +# 4. Create a Slash Commands and put as Request URL: https://your.domain.name/slack + +SLACK_ENABLED=false # true or false +SLACK_SIGNING_SECRET=YourSlackSigningSecret + +# ChatGPT/OpenAI +# 1. Goto https://platform.openai.com/ +# 2. Create your account +# 3. Generate your APIKey https://platform.openai.com/account/api-keys + +CHATGPT_ENABLED=false +CHATGPT_BASE_PATH=https://api.openai.com/v1/ +CHATGPT_APIKEY=YourOpenAiApiKey +CHATGPT_MODEL=gpt-3.5-turbo +CHATGPT_MAX_TOKENS=1000 +CHATGPT_TEMPERATURE=0 + +# Configure email settings for notifications or alerts +# Refer to the documentation for Gmail configuration: https://support.google.com/mail/answer/185833?hl=en + +EMAIL_ALERT=false # true or false +EMAIL_HOST=smtp.gmail.com +EMAIL_PORT=587 +EMAIL_USERNAME=your_username +EMAIL_PASSWORD=your_password +EMAIL_SEND_TO=p2p.mirotalk@gmail.com + +# Stats +# Umami: https://github.com/umami-software/umami +# We use our Self-hosted Umami to track aggregated usage statistics in order to improve our service. + +STATS_ENABLED=false # true or false +STATS_SCR=https://stats.mirotalk.com/script.js +STATS_ID=c7615aa7-ceec-464a-baba-54cb605d7261 \ No newline at end of file diff --git a/MiroTalk/docker-compose.yaml b/MiroTalk/docker-compose.yaml new file mode 100644 index 0000000..bc8f518 --- /dev/null +++ b/MiroTalk/docker-compose.yaml @@ -0,0 +1,35 @@ +version: '3' + +services: + mirotalk: + image: mirotalk/p2p:latest + container_name: mirotalk + hostname: mirotalk + volumes: + - .env:/src/.env:ro + # These volumes are not mandatory, uncomment if you want to use it + # - ./app/:/src/app/:ro # useful for changing the UI JS + # - ./public/:/src/public/:ro + restart: unless-stopped + networks: + proxy: + # Uncomment ports and comment labels if you're not using a reverse proxy + #ports: + # - '${PORT}:${PORT}' + labels: + - "traefik.enable=true" + - "traefik.docker.network=proxy" + - "traefik.http.routers.mirotalk.entrypoints=http" + - "traefik.http.routers.mirotalk.rule=Host(`mirotalk.yourdomain.com`)" + - "traefik.http.middlewares.mirotalk-https-redirect.redirectscheme.scheme=https" + - "traefik.http.routers.mirotalk.middlewares=mirotalk-https-redirect" + - "traefik.http.routers.mirotalk-secure.entrypoints=https" + - "traefik.http.routers.mirotalk-secure.rule=Host(`mirotalk.yourdomain.com`)" + - "traefik.http.routers.mirotalk-secure.tls=true" + - "traefik.http.routers.mirotalk-secure.tls.certresolver=cloudflare" + - "traefik.http.routers.mirotalk-secure.service=mirotalk" + - "traefik.http.services.mirotalk.loadbalancer.server.port=3000" # make sure the loadbalancer is the last line!!! + +networks: + proxy: + external: true