From 4940b2d93fc14272d6f280e650800327cf6c6d0a Mon Sep 17 00:00:00 2001 From: "Trez.One" Date: Sun, 20 Apr 2025 13:36:11 -0400 Subject: [PATCH 1/3] Adding Mirotalk and removing Jitsi. --- ansible/app-configs/mirotalk_src_config.js.j2 | 159 +++++ docker-compose.yml | 648 +++--------------- 2 files changed, 237 insertions(+), 570 deletions(-) create mode 100644 ansible/app-configs/mirotalk_src_config.js.j2 diff --git a/ansible/app-configs/mirotalk_src_config.js.j2 b/ansible/app-configs/mirotalk_src_config.js.j2 new file mode 100644 index 00000000..7753ab37 --- /dev/null +++ b/ansible/app-configs/mirotalk_src_config.js.j2 @@ -0,0 +1,159 @@ +'use strict'; + +const packageJson = require('../../package.json'); + +module.exports = { + // Branding and customizations require a license: https://codecanyon.net/item/mirotalk-p2p-webrtc-realtime-video-conferences/38376661 + brand: { + app: { + language: 'en', // https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes + name: 'MiroTalk', + title: '

MiroTalk

Free browser based Real-time video calls.
Simple, Secure, Fast.', + description: + 'Start your next video call with a single click. No download, plug-in, or login is required. Just get straight to talking, messaging, and sharing your screen.', + joinDescription: 'Pick a room name.
How about this one?', + joinButtonLabel: 'JOIN ROOM', + joinLastLabel: 'Your recent room:', + }, + og: { + type: 'app-webrtc', + siteName: 'MiroTalk', + title: 'Click the link to make a call.', + description: + 'MiroTalk calling provides real-time HD quality and latency simply not available with traditional technology.', + image: 'https://p2p.mirotalk.com/images/preview.png', + url: 'https://p2p.mirotalk.com', + }, + site: { + shortcutIcon: '../images/logo.svg', + appleTouchIcon: '../images/logo.svg', + landingTitle: 'MiroTalk a Free Secure Video Calls, Chat & Screen Sharing.', + newCallTitle: 'MiroTalk a Free Secure Video Calls, Chat & Screen Sharing.', + newCallRoomTitle: 'Pick name.
Share URL.
Start conference.', + newCallRoomDescription: + "Each room has its disposable URL. Just pick a room name and share your custom URL. It's that easy.", + loginTitle: 'MiroTalk - Host Protected login required.', + clientTitle: 'MiroTalk WebRTC Video call, Chat Room & Screen Sharing.', + privacyPolicyTitle: 'MiroTalk - privacy and policy.', + stunTurnTitle: 'Test Stun/Turn Servers.', + notFoundTitle: 'MiroTalk - 404 Page not found.', + }, + html: { + features: true, + browsers: true, + teams: true, // please keep me always true ;) + tryEasier: true, + poweredBy: true, + sponsors: true, + advertisers: true, + footer: true, + }, + about: { + imageUrl: '../images/mirotalk-logo.gif', + title: `WebRTC P2P v${packageJson.version}`, + html: ` + +


+ Author: + Miroslav Pejic + +

+ Email: + miroslav.pejic.85@gmail.com + +

+
+ © 2025 MiroTalk P2P, all rights reserved +
+ `, + }, + //... + }, + /** + * Configuration for controlling the visibility of buttons in the MiroTalk P2P client. + * Set properties to true to show the corresponding buttons, or false to hide them. + * captionBtn, showSwapCameraBtn, showScreenShareBtn, showFullScreenBtn, showVideoPipBtn, showDocumentPipBtn -> (auto-detected). + */ + buttons: { + main: { + showShareQr: true, + showShareRoomBtn: true, // For guests + showHideMeBtn: true, + showAudioBtn: true, + showVideoBtn: true, + showScreenBtn: true, // autodetected + showRecordStreamBtn: true, + showChatRoomBtn: true, + showCaptionRoomBtn: true, + showRoomEmojiPickerBtn: true, + showMyHandBtn: true, + showWhiteboardBtn: true, + showSnapshotRoomBtn: true, + showFileShareBtn: true, + showDocumentPipBtn: true, + showMySettingsBtn: true, + showAboutBtn: true, // Please keep me always true, Thank you! + }, + chat: { + showTogglePinBtn: true, + showMaxBtn: true, + showSaveMessageBtn: true, + showMarkDownBtn: true, + showChatGPTBtn: true, + showFileShareBtn: true, + showShareVideoAudioBtn: true, + showParticipantsBtn: true, + }, + caption: { + showTogglePinBtn: true, + showMaxBtn: true, + }, + settings: { + showMicOptionsBtn: true, + showTabRoomPeerName: true, + showTabRoomParticipants: true, + showTabRoomSecurity: true, + showTabEmailInvitation: true, + showCaptionEveryoneBtn: true, + showMuteEveryoneBtn: true, + showHideEveryoneBtn: true, + showEjectEveryoneBtn: true, + showLockRoomBtn: true, + showUnlockRoomBtn: true, + showShortcutsBtn: true, + }, + remote: { + showAudioVolume: true, + audioBtnClickAllowed: true, + videoBtnClickAllowed: true, + showVideoPipBtn: true, + showKickOutBtn: true, + showSnapShotBtn: true, + showFileShareBtn: true, + showShareVideoAudioBtn: true, + showPrivateMessageBtn: true, + showZoomInOutBtn: false, + showVideoFocusBtn: true, + }, + local: { + showVideoPipBtn: true, + showSnapShotBtn: true, + showVideoCircleBtn: true, + showZoomInOutBtn: false, + }, + whiteboard: { + whiteboardLockBtn: false, + }, + }, +}; diff --git a/docker-compose.yml b/docker-compose.yml index d1578013..535c3c6c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2119,575 +2119,6 @@ services: - ${DOCKER_VOLUME_STORAGE}/Movies:/storage/movies - /etc/localtime:/etc/localtime - /usr/share/fonts:/usr/local/share/fonts/custom - jitsi-etherpad: - container_name: jitsi-etherpad - environment: - TITLE: ${JITSI__ETHERPAD_TITLE} - DEFAULT_PAD_TEXT: ${JITSI__ETHERPAD_DEFAULT_PAD_TEXT} - SKIN_NAME: ${JITSI__ETHERPAD_SKIN_NAME} - SKIN_VARIANTS: ${JITSI__ETHERPAD_SKIN_VARIANTS} - SUPPRESS_ERRORS_IN_PAD_TEXT: true - image: etherpad/etherpad:1.8.6 - networks: - default: null - restart: unless-stopped - jitsi-jibri: - cap_add: - - SYS_ADMIN - container_name: jitsi-jibri - depends_on: - jitsi-jicofo: - condition: service_started - required: true - environment: - AUTOSCALER_SIDECAR_KEY_FILE: - AUTOSCALER_SIDECAR_KEY_ID: - AUTOSCALER_SIDECAR_GROUP_NAME: - AUTOSCALER_SIDECAR_HOST_ID: - AUTOSCALER_SIDECAR_INSTANCE_ID: - AUTOSCALER_SIDECAR_PORT: - AUTOSCALER_SIDECAR_REGION: - AUTOSCALER_SIDECAR_SHUTDOWN_POLLING_INTERVAL: - AUTOSCALER_SIDECAR_STATS_POLLING_INTERVAL: - AUTOSCALER_URL: - CHROMIUM_FLAGS: - DISPLAY: :0 - ENABLE_STATS_D: - JIBRI_WEBHOOK_SUBSCRIBERS: - JIBRI_HTTP_API_EXTERNAL_PORT: - JIBRI_HTTP_API_INTERNAL_PORT: - JIBRI_RECORDING_RESOLUTION: - JIBRI_RECORDING_VIDEO_ENCODE_PRESET: - JIBRI_RECORDING_CONSTANT_RATE_FACTOR: - JIBRI_RECORDING_FRAMERATE: - JIBRI_RECORDING_QUEUE_SIZE: - JIBRI_RECORDING_STREAMING_MAX_BITRATE: - JIBRI_USAGE_TIMEOUT: - JIBRI_XMPP_USER: - JIBRI_XMPP_PASSWORD: ${JITSI__JIBRI_XMPP_PASSWORD} - JIBRI_BREWERY_MUC: - JIBRI_RECORDER_USER: jibri-recorder - JIBRI_RECORDER_PASSWORD: ${JITSI__JIBRI_RECORDER_PASSWORD} - JIBRI_RECORDING_DIR: - JIBRI_FINALIZE_RECORDING_SCRIPT_PATH: - JIBRI_STRIP_DOMAIN_JID: - JIBRI_STATSD_HOST: - JIBRI_STATSD_PORT: - LOCAL_ADDRESS: - PUBLIC_URL: ${JITSI__PUBLIC_URL} - TZ: ${JITSI__TZ} - XMPP_AUTH_DOMAIN: - XMPP_DOMAIN: - XMPP_INTERNAL_MUC_DOMAIN: - XMPP_MUC_DOMAIN: - XMPP_RECORDER_DOMAIN: - XMPP_SERVER: - XMPP_PORT: - XMPP_TRUST_ALL_CERTS: - image: jitsi/jibri:${JITSI_IMAGE_VERSION:-stable} - networks: - default: null - restart: unless-stopped - shm_size: 2gb - volumes: - - source: ${DOCKER_VOLUME_CONFIG}/jitsi/jibri - target: /config - type: bind - bind: - create_host_path: true - jitsi-jicofo: - container_name: focus.meet.jitsi - depends_on: - jitsi-prosody: - condition: service_started - required: true - environment: - AUTH_TYPE: - BRIDGE_AVG_PARTICIPANT_STRESS: - BRIDGE_STRESS_THRESHOLD: - ENABLE_AUTH: - ENABLE_AUTO_OWNER: - ENABLE_CODEC_VP8: - ENABLE_CODEC_VP9: - ENABLE_CODEC_H264: - ENABLE_CODEC_OPUS_RED: - ENABLE_JVB_XMPP_SERVER: - ENABLE_OCTO: - ENABLE_RECORDING: 1 - ENABLE_SCTP: - ENABLE_AUTO_LOGIN: - JICOFO_AUTH_LIFETIME: - JICOFO_AUTH_PASSWORD: ${JITSI__JICOFO_AUTH_PASSWORD} - JICOFO_AUTH_TYPE: - JICOFO_BRIDGE_REGION_GROUPS: - JICOFO_ENABLE_AUTH: - JICOFO_ENABLE_BRIDGE_HEALTH_CHECKS: - JICOFO_CONF_INITIAL_PARTICIPANT_WAIT_TIMEOUT: - JICOFO_CONF_SINGLE_PARTICIPANT_TIMEOUT: - JICOFO_CONF_SOURCE_SIGNALING_DELAYS: - JICOFO_CONF_MAX_AUDIO_SENDERS: - JICOFO_CONF_MAX_VIDEO_SENDERS: - JICOFO_CONF_STRIP_SIMULCAST: - JICOFO_CONF_SSRC_REWRITING: - JICOFO_ENABLE_HEALTH_CHECKS: - JICOFO_ENABLE_REST: - JICOFO_HEALTH_CHECKS_USE_PRESENCE: - JICOFO_MULTI_STREAM_BACKWARD_COMPAT: - JICOFO_OCTO_REGION: - JIBRI_BREWERY_MUC: - JIBRI_REQUEST_RETRIES: - JIBRI_PENDING_TIMEOUT: - JIGASI_BREWERY_MUC: - JIGASI_SIP_URI: - JVB_BREWERY_MUC: - JVB_XMPP_AUTH_DOMAIN: - JVB_XMPP_INTERNAL_MUC_DOMAIN: - JVB_XMPP_PORT: - JVB_XMPP_SERVER: - MAX_BRIDGE_PARTICIPANTS: - OCTO_BRIDGE_SELECTION_STRATEGY: - SENTRY_DSN: "${JICOFO_SENTRY_DSN:-0}" - SENTRY_ENVIRONMENT: - SENTRY_RELEASE: - TZ: ${JITSI__JIGAGI_SIP_SERVER} - XMPP_DOMAIN: - XMPP_AUTH_DOMAIN: - XMPP_INTERNAL_MUC_DOMAIN: - XMPP_MUC_DOMAIN: - XMPP_RECORDER_DOMAIN: - XMPP_SERVER: - XMPP_PORT: - image: jitsi/jicofo:${JITSI_IMAGE_VERSION:-stable} - networks: - default: null - ports: - - 8889:8888 - restart: unless-stopped - volumes: - - bind: - create_host_path: true - selinux: Z - source: ${DOCKER_VOLUME_CONFIG}/jitsi/jicofo - target: /config - type: bind - jitsi-jigasi: - container_name: jitsi-jigasi - depends_on: - jitsi-prosody: - condition: service_started - required: true - environment: - ENABLE_AUTH: 1 - ENABLE_GUESTS: 1 - XMPP_AUTH_DOMAIN: - XMPP_GUEST_DOMAIN: - XMPP_MUC_DOMAIN: - XMPP_INTERNAL_MUC_DOMAIN: - XMPP_SERVER: - XMPP_PORT: - XMPP_DOMAIN: - PUBLIC_URL: ${JITSI__PUBLIC_URL} - JIGASI_DISABLE_SIP: - JIGASI_SIP_URI: ${JITSI__SIP_URI} - JIGASI_SIP_PASSWORD: ${JITSI__JIGAGI_SIP_PASSWORD} - JIGASI_SIP_SERVER: ${JITSI__JIGAGI_SIP_SERVER} - JIGASI_SIP_PORT: ${JITSI__JIGAGI_SIP_PORT} - JIGASI_SIP_TRANSPORT: ${JITSI__JIGAGI_SIP_TRANSPORT} - JIGASI_SIP_DEFAULT_ROOM: - JIGASI_XMPP_USER: - JIGASI_XMPP_PASSWORD: ${JITSI__JIGASI_XMPP_PASSWORD} - JIGASI_BREWERY_MUC: - JIGASI_PORT_MIN: - JIGASI_PORT_MAX: - JIGASI_HEALTH_CHECK_SIP_URI: - JIGASI_HEALTH_CHECK_INTERVAL: - JIGASI_SIP_KEEP_ALIVE_METHOD: - JIGASI_ENABLE_SDES_SRTP: - ENABLE_TRANSCRIPTIONS: - JIGASI_TRANSCRIBER_ADVERTISE_URL: - JIGASI_TRANSCRIBER_RECORD_AUDIO: - JIGASI_TRANSCRIBER_SEND_TXT: - GC_PROJECT_ID: - GC_PRIVATE_KEY_ID: - GC_PRIVATE_KEY: - GC_CLIENT_EMAIL: - GC_CLIENT_ID: - GC_CLIENT_CERT_URL: - SHUTDOWN_REST_ENABLED: - SENTRY_DSN: "${JIGASI_SENTRY_DSN:-0}" - SENTRY_ENVIRONMENT: - SENTRY_RELEASE: - TZ: ${JITSI__TZ} - image: jitsi/jigasi:${JITSI_IMAGE_VERSION:-stable} - networks: - default: null - ports: - - 20000-20050:20000-20050/udp - restart: unless-stopped - volumes: - - bind: - create_host_path: true - selinux: Z - source: ${DOCKER_VOLUME_CONFIG}/jitsi/jigasi - target: /config - type: bind - - bind: - create_host_path: true - selinux: Z - source: ${DOCKER_VOLUME_CONFIG}/jitsi/transcripts - target: /tmp/transcripts - type: bind - jitsi-jvb: - container_name: video.meet.jitsi - depends_on: - jitsi-prosody: - condition: service_started - required: true - environment: - DOCKER_HOST_ADDRESS: - ENABLE_COLIBRI_WEBSOCKET: - ENABLE_JVB_XMPP_SERVER: - ENABLE_OCTO: - JVB_ADVERTISE_IPS: - JVB_ADVERTISE_PRIVATE_CANDIDATES: - JVB_AUTH_USER: - JVB_AUTH_PASSWORD: ${JITSI__JVB_AUTH_PASSWORD} - JVB_BREWERY_MUC: - JVB_DISABLE_STUN: - JVB_PORT: - JVB_MUC_NICKNAME: - JVB_STUN_SERVERS: - JVB_OCTO_BIND_ADDRESS: - JVB_OCTO_REGION: - JVB_OCTO_RELAY_ID: - JVB_WS_DOMAIN: - JVB_WS_SERVER_ID: - JVB_XMPP_AUTH_DOMAIN: - JVB_XMPP_INTERNAL_MUC_DOMAIN: - JVB_XMPP_PORT: - JVB_XMPP_SERVER: - PUBLIC_URL: ${JITSI__PUBLIC_URL} - SENTRY_DSN: "${JVB_SENTRY_DSN:-0}" - SENTRY_ENVIRONMENT: - SENTRY_RELEASE: - COLIBRI_REST_ENABLED: - SHUTDOWN_REST_ENABLED: - TZ: ${JITSI__JIGAGI_SIP_SERVER} - XMPP_AUTH_DOMAIN: - XMPP_INTERNAL_MUC_DOMAIN: - XMPP_SERVER: - XMPP_PORT: - image: jitsi/jvb:${JITSI_IMAGE_VERSION:-stable} - networks: - default: null - ports: - - 10000:10000/udp - - 8091:8080 - restart: unless-stopped - volumes: - - bind: - create_host_path: true - selinux: Z - source: ${DOCKER_VOLUME_CONFIG}/jitsi/jvb - target: /config - type: bind - jitsi-prosody: - container_name: xmpp.meet.jitsi - environment: - AUTH_TYPE: - DISABLE_POLLS: - ENABLE_AUTH: - ENABLE_AV_MODERATION: - ENABLE_BREAKOUT_ROOMS: - ENABLE_END_CONFERENCE: - ENABLE_GUESTS: 1 - ENABLE_IPV6: - ENABLE_LOBBY: - ENABLE_RECORDING: 1 - ENABLE_XMPP_WEBSOCKET: - ENABLE_JAAS_COMPONENTS: - GC_TYPE: - GC_INC_TH: - GC_INC_SPEED: - GC_INC_STEP_SIZE: - GC_GEN_MIN_TH: - GC_GEN_MAX_TH: - GLOBAL_CONFIG: - GLOBAL_MODULES: - JIBRI_RECORDER_USER: - JIBRI_RECORDER_PASSWORD: ${JITSI__JIBRI_RECORDER_PASSWORD} - JIBRI_XMPP_USER: - JIBRI_XMPP_PASSWORD: ${JITSI__JIBRI_XMPP_PASSWORD} - JICOFO_AUTH_PASSWORD: ${JITSI__JICOFO_AUTH_PASSWORD} - JICOFO_COMPONENT_SECRET: - JIGASI_XMPP_USER: - JIGASI_XMPP_PASSWORD: ${JITSI__JIGASI_XMPP_PASSWORD} - JVB_AUTH_USER: - JVB_AUTH_PASSWORD: ${JITSI__JVB_AUTH_PASSWORD} - JWT_APP_ID: - JWT_APP_SECRET: - JWT_ACCEPTED_ISSUERS: - JWT_ACCEPTED_AUDIENCES: - JWT_ASAP_KEYSERVER: - JWT_ALLOW_EMPTY: - JWT_AUTH_TYPE: - JWT_ENABLE_DOMAIN_VERIFICATION: - JWT_TOKEN_AUTH_MODULE: - MATRIX_UVS_URL: - MATRIX_UVS_ISSUER: - MATRIX_UVS_AUTH_TOKEN: - MATRIX_UVS_SYNC_POWER_LEVELS: - LOG_LEVEL: - LDAP_AUTH_METHOD: - LDAP_BASE: - LDAP_BINDDN: - LDAP_BINDPW: - LDAP_FILTER: - LDAP_VERSION: - LDAP_TLS_CIPHERS: - LDAP_TLS_CHECK_PEER: - LDAP_TLS_CACERT_FILE: - LDAP_TLS_CACERT_DIR: - LDAP_START_TLS: - LDAP_URL: - LDAP_USE_TLS: - MAX_PARTICIPANTS: - PROSODY_AUTH_TYPE: - PROSODY_RESERVATION_ENABLED: - PROSODY_RESERVATION_REST_BASE_URL: - PROSODY_ENABLE_RATE_LIMITS: - PROSODY_RATE_LIMIT_LOGIN_RATE: - PROSODY_RATE_LIMIT_SESSION_RATE: - PROSODY_RATE_LIMIT_TIMEOUT: - PROSODY_RATE_LIMIT_ALLOW_RANGES: - PROSODY_RATE_LIMIT_CACHE_SIZE: - PUBLIC_URL: ${JITSI__PUBLIC_URL} - TURN_CREDENTIALS: - TURN_HOST: - TURNS_HOST: - TURN_PORT: - TURNS_PORT: - TURN_TRANSPORT: - TZ: ${JITSI__JIGAGI_SIP_SERVER} - XMPP_DOMAIN: - XMPP_AUTH_DOMAIN: - XMPP_GUEST_DOMAIN: - XMPP_MUC_DOMAIN: - XMPP_INTERNAL_MUC_DOMAIN: - XMPP_MODULES: - XMPP_MUC_MODULES: - XMPP_MUC_CONFIGURATION: - XMPP_INTERNAL_MUC_MODULES: - XMPP_RECORDER_DOMAIN: - XMPP_PORT: - expose: - - 5222 - - "5347" - - "5280" - image: jitsi/prosody:${JITSI_IMAGE_VERSION:-stable} - networks: - default: null - restart: unless-stopped - volumes: - - bind: - create_host_path: true - selinux: Z - source: ${DOCKER_VOLUME_CONFIG}/jitsi/prosody/config - target: /config - type: bind - - bind: - create_host_path: true - selinux: Z - source: ${DOCKER_VOLUME_CONFIG}/jitsi/prosody/prosody-plugins-custom - target: /prosody-plugins-custom - type: bind - jitsi-web: - container_name: meet.jitsi - environment: - AMPLITUDE_ID: - ANALYTICS_SCRIPT_URLS: - ANALYTICS_WHITELISTED_EVENTS: - AUDIO_QUALITY_OPUS_BITRATE: - AUTO_CAPTION_ON_RECORD: - BRANDING_DATA_URL: - CALLSTATS_CUSTOM_SCRIPT_URL: - CALLSTATS_ID: - CALLSTATS_SECRET: - CHROME_EXTENSION_BANNER_JSON: - COLIBRI_WEBSOCKET_PORT: - CONFCODE_URL: - CONFIG_EXTERNAL_CONNECT: - DEFAULT_LANGUAGE: - DEPLOYMENTINFO_ENVIRONMENT: - DEPLOYMENTINFO_ENVIRONMENT_TYPE: - DEPLOYMENTINFO_REGION: - DEPLOYMENTINFO_SHARD: - DEPLOYMENTINFO_USERREGION: - DESKTOP_SHARING_FRAMERATE_MIN: - DESKTOP_SHARING_FRAMERATE_MAX: - DIALIN_NUMBERS_URL: - DIALOUT_AUTH_URL: - DIALOUT_CODES_URL: - DISABLE_AUDIO_LEVELS: - DISABLE_DEEP_LINKING: - DISABLE_GRANT_MODERATOR: - DISABLE_HTTPS: - DISABLE_KICKOUT: - DISABLE_LOCAL_RECORDING: - DISABLE_POLLS: - DISABLE_PRIVATE_CHAT: - DISABLE_PROFILE: - DISABLE_REACTIONS: - DISABLE_REMOTE_VIDEO_MENU: - DISABLE_START_FOR_ALL: - DROPBOX_APPKEY: - DROPBOX_REDIRECT_URI: - DYNAMIC_BRANDING_URL: - ENABLE_AUDIO_PROCESSING: - ENABLE_AUTH: - ENABLE_BREAKOUT_ROOMS: - ENABLE_CALENDAR: - ENABLE_COLIBRI_WEBSOCKET: - ENABLE_E2EPING: - ENABLE_FILE_RECORDING_SHARING: - ENABLE_GUESTS: 1 - ENABLE_HSTS: - ENABLE_HTTP_REDIRECT: - ENABLE_IPV6: - ENABLE_LETSENCRYPT: - ENABLE_LIPSYNC: - ENABLE_NO_AUDIO_DETECTION: - ENABLE_NOISY_MIC_DETECTION: - ENABLE_OCTO: - ENABLE_OPUS_RED: - ENABLE_PREJOIN_PAGE: - ENABLE_P2P: - ENABLE_WELCOME_PAGE: - ENABLE_CLOSE_PAGE: - ENABLE_LIVESTREAMING: - ENABLE_LIVESTREAMING_DATA_PRIVACY_LINK: - ENABLE_LIVESTREAMING_HELP_LINK: - ENABLE_LIVESTREAMING_TERMS_LINK: - ENABLE_LIVESTREAMING_VALIDATOR_REGEXP_STRING: - ENABLE_LOCAL_RECORDING_NOTIFY_ALL_PARTICIPANT: - ENABLE_LOCAL_RECORDING_SELF_START: - ENABLE_RECORDING: 1 - ENABLE_REMB: - ENABLE_REQUIRE_DISPLAY_NAME: - ENABLE_SERVICE_RECORDING: - ENABLE_SIMULCAST: - ENABLE_STATS_ID: - ENABLE_STEREO: - ENABLE_SUBDOMAINS: - ENABLE_TALK_WHILE_MUTED: - ENABLE_TCC: - ENABLE_TRANSCRIPTIONS: - ENABLE_XMPP_WEBSOCKET: - ENABLE_JAAS_COMPONENTS: - ETHERPAD_PUBLIC_URL: - ETHERPAD_URL_BASE: ${JITSI__ETHERPAD_URL_BASE} - E2EPING_NUM_REQUESTS: - E2EPING_MAX_CONFERENCE_SIZE: - E2EPING_MAX_MESSAGE_PER_SECOND: - GOOGLE_ANALYTICS_ID: - GOOGLE_API_APP_CLIENT_ID: - HIDE_PREMEETING_BUTTONS: - HIDE_PREJOIN_DISPLAY_NAME: - HIDE_PREJOIN_EXTRA_BUTTONS: - INVITE_SERVICE_URL: - LETSENCRYPT_DOMAIN: - LETSENCRYPT_EMAIL: - LETSENCRYPT_USE_STAGING: - MATOMO_ENDPOINT: - MATOMO_SITE_ID: - MICROSOFT_API_APP_CLIENT_ID: - NGINX_RESOLVER: - NGINX_WORKER_PROCESSES: - NGINX_WORKER_CONNECTIONS: - PEOPLE_SEARCH_URL: - PREFERRED_LANGUAGE: - PUBLIC_URL: ${JITSI__PUBLIC_URL} - P2P_PREFERRED_CODEC: - RESOLUTION: - RESOLUTION_MIN: - RESOLUTION_WIDTH: - RESOLUTION_WIDTH_MIN: - START_AUDIO_MUTED: - START_AUDIO_ONLY: - START_BITRATE: - START_SILENT: - START_WITH_AUDIO_MUTED: - START_VIDEO_MUTED: - START_WITH_VIDEO_MUTED: - TESTING_CAP_SCREENSHARE_BITRATE: - TESTING_OCTO_PROBABILITY: - TOKEN_AUTH_URL: - TOOLBAR_BUTTONS: - TRANSLATION_LANGUAGES: - TRANSLATION_LANGUAGES_HEAD: - TZ: ${JITSI__JIGAGI_SIP_SERVER} - USE_APP_LANGUAGE: - VIDEOQUALITY_BITRATE_H264_LOW: - VIDEOQUALITY_BITRATE_H264_STANDARD: - VIDEOQUALITY_BITRATE_H264_HIGH: - VIDEOQUALITY_BITRATE_VP8_LOW: - VIDEOQUALITY_BITRATE_VP8_STANDARD: - VIDEOQUALITY_BITRATE_VP8_HIGH: - VIDEOQUALITY_BITRATE_VP9_LOW: - VIDEOQUALITY_BITRATE_VP9_STANDARD: - VIDEOQUALITY_BITRATE_VP9_HIGH: - VIDEOQUALITY_ENFORCE_PREFERRED_CODEC: - VIDEOQUALITY_PREFERRED_CODEC: - XMPP_AUTH_DOMAIN: - XMPP_BOSH_URL_BASE: - XMPP_DOMAIN: - XMPP_GUEST_DOMAIN: - XMPP_MUC_DOMAIN: - XMPP_RECORDER_DOMAIN: - XMPP_PORT: - WHITEBOARD_ENABLED: - WHITEBOARD_COLLAB_SERVER_PUBLIC_URL: - image: jitsi/web:${JITSI_IMAGE_VERSION:-stable} - labels: - swag: enable - swag_proto: https - swag_url: meet.${MY_TLD} - swag_server_custom_directive: | - access_log /config/log/$$host_access.log ; - error_log /config/log/$$host_error.log ; - swag.uptime-kuma.enabled: true - swag.uptime-kuma.monitor.url: https://meet.${MY_TLD} - swag.uptime-kuma.monitor.interval: 300 - homepage.group: Social - homepage.name: Jitsi - homepage.href: https://meet.${MY_TLD} - homepage.icon: jitsi.png - homepage.description: Web Conferencing - networks: - default: null - ports: - - 8001:80 - - 8002:443 - restart: unless-stopped - volumes: - - bind: - create_host_path: true - selinux: Z - source: ${DOCKER_VOLUME_CONFIG}/jitsi/web - target: /config - type: bind - - bind: - create_host_path: true - selinux: Z - source: ${DOCKER_VOLUME_CONFIG}/jitsi/web/crontabs - target: /var/spool/cron/crontabs - type: bind - - bind: - create_host_path: true - selinux: Z - source: ${DOCKER_VOLUME_CONFIG}/jitsi/transcripts - target: /usr/share/jitsi-meet/transcripts - type: bind joplin-db: container_name: joplin-db environment: @@ -3234,7 +2665,7 @@ services: image: postgres:17-alpine restart: always volumes: - - mastodon-pg-db:/var/lib/postgresql/data + - mastodon-pg-db:/var/lib/postgresql/data meilisearch: container_name: meilisearch environment: @@ -3289,6 +2720,83 @@ services: type: bind bind: create_host_path: true + mirotalk: + container_name: mirotalk + environment: + NODE_ENV: production #development or production + PORT: 3000 + TRUST_PROXY: false #true or false + TZ: ${TZ} + LOGS_DEBUG: true # true or false + LOGS_COLORS: true # true or false + CORS_ORIGIN: '*' + CORS_METHODS: '["GET", "POST"]' + IP_WHITELIST_ENABLED: false # true or false + IP_WHITELIST_ALLOWED: '["127.0.0.1", "::1"]' + OIDC_ENABLED: false # true or false + HOST_PROTECTED: false # true or false + HOST_USER_AUTH: false # true or false + JWT_KEY: ${MIROTALK_JWT_KEY} + JWT_EXP: 1h + PRESENTERS: '["Mirotalk Rinoa", "noreply@trez.wtf"]' + NGROK_ENABLED: true + NGROK_AUTH_TOKEN: ${NGROK_AUTH_TOKEN} + STUN_SERVER_ENABLED: true # true or false + STUN_SERVER_URL: stun:stun.l.google.com:19302 + TURN_SERVER_ENABLED: true # true or false + TURN_SERVER_URL: turn:a.relay.metered.ca:443 + TURN_SERVER_USERNAME: ${MIROTALK_METERED_TURNSERVER_USER} + TURN_SERVER_CREDENTIAL: ${MIROTALK_METERED_TURNSERVER_PASSWORD} + IP_LOOKUP_ENABLED: false # true or false + API_KEY_SECRET: ${MIROTALK_API_KEY_SECRRET} + API_DISABLED: '["token", "meetings"]' + SURVEY_ENABLED: false + REDIRECT_ENABLED: false # true or false + SENTRY_ENABLED: false # true or false + SLACK_ENABLED: false # true or false + MATTERMOST_ENABLED: false # true or false + CHATGPT_ENABLED: false # true or false + CHATGPT_BASE_PATH: https://api.openai.com/v1/ + CHATGPT_APIKEY: ${LIBRECHAT_OPENAI_API_KEY} + CHATGPT_MODEL: gpt-3.5-turbo + CHATGPT_MAX_TOKENS: 1000 + CHATGPT_TEMPERATURE: 0 + EMAIL_ALERT: true # true or false + EMAIL_HOST: postal-smtp + EMAIL_PORT: 25 + EMAIL_USERNAME: ${POSTAL_SMTP_AUTH_USER} + EMAIL_PASSWORD: ${POSTAL_SMTP_AUTH_PASSWORD} + EMAIL_SEND_TO: noreply@${MY_TLD} + STATS_ENABLED: true # true or false + STATS_SCR: https://stats.mirotalk.com/script.js + STATS_ID: c7615aa7-ceec-464a-baba-54cb605d7261 + expose: + - 3000 + hostname: mirotalk + image: mirotalk/p2p:latest + labels: + swag: enable + swag_port: 3000 + swag_proto: http + swag_url: meet.${MY_TLD} + swag_server_custom_directive: | + access_log /config/log/$$host_access.log ; + error_log /config/log/$$host_error.log ; + swag.uptime-kuma.enabled: true + swag.uptime-kuma.monitor.url: https://social.${MY_TLD} + swag.uptime-kuma.monitor.interval: 300 + homepage.group: Social + homepage.name: MiroTalk + homepage.href: https://meet.${MY_TLD} + homepage.icon: sh-mirotalk.svg + homepage.description: Simple, secure, and fast real-time video conferences + ports: + - '${PORT}:${PORT}' + restart: unless-stopped + volumes: + - ${DOCKER_VOLUME_CONFIG}/mirotalk/app/src/config.js:/src/app/src/config.js:ro + - ${DOCKER_VOLUME_CONFIG}/mirotalk/app/:/src/app/:ro + - ${DOCKER_VOLUME_CONFIG}/mirotalk/public/:/src/public/:ro mixpost: container_name: mixpost image: inovector/mixpost:latest From f3194795ce3a0049f59af908cb5c6c3ad43c7f38 Mon Sep 17 00:00:00 2001 From: "Trez.One" Date: Sun, 20 Apr 2025 14:35:15 -0400 Subject: [PATCH 2/3] Typo fix for MiroTalk. --- docker-compose.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 535c3c6c..f2199776 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2748,7 +2748,7 @@ services: TURN_SERVER_USERNAME: ${MIROTALK_METERED_TURNSERVER_USER} TURN_SERVER_CREDENTIAL: ${MIROTALK_METERED_TURNSERVER_PASSWORD} IP_LOOKUP_ENABLED: false # true or false - API_KEY_SECRET: ${MIROTALK_API_KEY_SECRRET} + API_KEY_SECRET: ${MIROTALK_API_KEY_SECRET} API_DISABLED: '["token", "meetings"]' SURVEY_ENABLED: false REDIRECT_ENABLED: false # true or false @@ -2790,8 +2790,6 @@ services: homepage.href: https://meet.${MY_TLD} homepage.icon: sh-mirotalk.svg homepage.description: Simple, secure, and fast real-time video conferences - ports: - - '${PORT}:${PORT}' restart: unless-stopped volumes: - ${DOCKER_VOLUME_CONFIG}/mirotalk/app/src/config.js:/src/app/src/config.js:ro From caa0479294d2fa7f2d57ec61637aa10e848303f2 Mon Sep 17 00:00:00 2001 From: "Trez.One" Date: Sun, 20 Apr 2025 19:22:09 +0000 Subject: [PATCH 3/3] chore: Update README --- README.md | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/README.md b/README.md index 59c6ec56..6898c67b 100644 --- a/README.md +++ b/README.md @@ -63,13 +63,6 @@ | invidious-db | docker.io/library/postgres:14 | | it-tools | ghcr.io/corentinth/it-tools:latest | | jellyfin | jellyfin/jellyfin | -| jitsi-etherpad | etherpad/etherpad:1.8.6 | -| jitsi-jibri | jitsi/jibri:stable | -| jitsi-jicofo | jitsi/jicofo:stable | -| jitsi-jigasi | jitsi/jigasi:stable | -| jitsi-jvb | jitsi/jvb:stable | -| jitsi-prosody | jitsi/prosody:stable | -| jitsi-web | jitsi/web:stable | | joplin-db | postgres:17-alpine | | joplin | joplin/server:latest | | librechat-api | ghcr.io/danny-avila/librechat-dev:latest | @@ -88,6 +81,7 @@ | mastodon-pg-db | postgres:17-alpine | | meilisearch | getmeili/meilisearch:v1.12.3 | | minio | minio/minio | +| mirotalk | mirotalk/p2p:latest | | mixpost | inovector/mixpost:latest | | mongodb | bitnami/mongodb:7.0 | | multi-scrobbler | foxxmd/multi-scrobbler |