zoom을 대체할 수 있는 오픈소스 mirotalk

간단하게 쓸 용도의 WebRTC기반의 화상회의 플랫폼입니다. 오픈소스이고 도커로 쉽게 설치가 가능합니다.

Mirotalk은 오픈소스 WebRTC 기반의 화상 회의 플랫폼입니다. 주요 특징들을 설명해드리겠습니다:

주요 특징:

  1. 브라우저 기반으로 별도의 설치가 필요 없습니다.
  2. 실시간 화상/음성 통화를 지원합니다.
  3. 화면 공유 기능을 제공합니다.
  4. 채팅 기능이 포함되어 있습니다.
  5. 개인정보 보호를 위한 P2P(Peer-to-Peer) 연결을 사용합니다.

기술적 특징:

  • WebRTC 기술을 기반으로 구축되었습니다
  • 오픈소스로 제공되어 직접 호스팅이 가능합니다
  • Node.js로 개발되었습니다
  • Socket.io를 사용하여 실시간 통신을 구현했습니다

사용 방법:

  1. 웹사이트에 접속합니다
  2. 회의실 생성 또는 참여를 선택합니다
  3. 카메라와 마이크 권한을 허용합니다
  4. URL을 공유하여 다른 참가자를 초대할 수 있습니다

보안 기능:

  • 종단간 암호화(E2EE) 지원
  • 회의실 비밀번호 설정 가능
  • 참가자 권한 관리 기능

Mirotalk은 특히 자체 호스팅이 가능한 오픈소스 솔루션을 찾는 기업이나 단체에게 적합한 선택이 될 수 있습니다.

라고 클로드가 설명해 주는데요, 깃헙에 있는 내용을 추가로 기재 하자면

Mirotalk의 주요 특징들을 번역해드리겠습니다:

  • 100% 무료 – AGPLv3 라이선스의 오픈소스 – 자체 호스팅 가능하며 PWA(Progressive Web App) 지원!
  • 다운로드, 플러그인, 로그인이 필요 없음 – 완전한 브라우저 기반
  • 시간 제한 없는 무제한 회의실 제공
  • 133개 언어로 번역 지원
  • OpenID Connect (OIDC) 인증 레이어 지원
  • 무단 접근 방지를 위한 호스트 보호 기능
  • 무단 접근 방지를 위한 사용자 인증
  • 회의실 비밀번호 보호
  • JWT.io를 통한 호스트 구성 및 사용자 인증을 위한 보안 자격 증명 관리로 보안 강화 및 프로세스 간소화
  • 데스크톱 및 모바일 기기 호환
  • 최적화된 모바일 회의실 URL 공유
  • 모바일 기기의 전면/후면 카메라 지원 웹캠 스트리밍
  • 발언 감지 및 볼륨 표시기가 있는 선명한 오디오 스트리밍
  • 프레젠테이션을 위한 화면 공유
  • 드래그 앤 드롭 지원 파일 공유
  • 오디오 입력, 출력 및 비디오 소스 선택 가능
  • 최대 8K 및 60 FPS의 비디오 품질 지원
  • 더욱 간소화되고 유연한 시청 경험을 제공하는 향상된 PiP(Picture-in-Picture) 지원
  • 화면, 오디오 및 비디오 녹화
  • 비디오 프레임을 스냅샷으로 촬영하여 PNG 이미지로 저장
  • 이모티콘 선택기, 개인 메시지, 마크다운 지원, 대화 저장이 가능한 채팅
  • ChatGPT(OpenAI 제공)를 통한 질문 답변, 정보 제공 및 관련 리소스 연결
  • 음성 메시지 전송을 위한 음성 인식
  • 무전기와 유사한 Push-to-talk 기능
  • 교사를 위한 고급 협업 화이트보드
  • YouTube 임베드 비디오, 비디오 파일(MP4, WebM, OGG) 및 오디오 파일(MP3)의 실시간 공유
  • 원클릭 비디오 요소 확대 및 고정/고정 해제가 가능한 전체 화면 모드
  • 사용자 정의 가능한 UI 테마
  • 추가 제어를 위한 비디오 요소의 우클릭 옵션
  • WebRTC를 통한 저지연 통신을 위한 직접적인 P2P 연결
  • REST API(Application Programming Interface) 지원
  • 향상된 커뮤니케이션을 위한 Mattermost 통합
  • 향상된 커뮤니케이션을 위한 Slack 통합
  • 오류 보고를 위한 Sentry 활용

oidc를 지원해서 구성원들만 사용하도록 할 수 있고, 방 만들고 나서 설정에서 방을 비번으로 잠글 수도 있어서 나름 괜찮은 솔루션인것 같습니다.

요거를 일단 회사 내부 서버에 설치해봤는데, 성능이 낮은 서버에서도 메모리만 넉넉히 주면 20~30명 수준의 화상회의는 아무 문제 없이 아주 잘 됩니다. 

처음에는 jitsi를 설치했는데, 이건 외부에서 음성이 안들리는 등 문제가 좀 있어서 그냥 미로톡을 설치했는데 이건 뭐 너무 쉽게 그냥 잘 되는군요 ^^

회사에서는 mattermost라는 슬랙과 유사한 협업툴을 사용하는데, 여기에 슬래시 명령어를 통해 쉽게 방을 만들고 들어올 수 있도록 했습니다.

이런식으로 말이죠….. (이렇게 하려면 .env에 mattermost에 대한 설정을 해주고, 매터모스트 통합 -> 슬래시명렁어 만들기를 해 줘야 합니다)

접속하면 이런 화면이 나오고요, 조인룸 버튼을 누르면 바로 방을 만들고 들어갈 수 있습니다.

화면 공유도 되고, 화이트보드 기능도 있고, 기본 기능은 매우 충실합니다.

* https를 사용해야 웹브라우저에서 카메라와 마이크를 사용할 수 있습니다. 뭐 우회하는 방법이 있을테지만 기본적으로 그렇습니다;;;; (그러니 꼭 https로….)

oidc 설정을 하면, 메인 페이지 접속을 위한 sso 사용이 가능합니다. 해당 설정은 .env 파일에서 아래 부분을 설정해 주면 됩니다.

OIDC_ENABLED=true
OIDC_ISSUER=https://your-oidc-provider.com
OIDC_CLIENT_ID=your_client_id
OIDC_CLIENT_SECRET=your_client_secret
OIDC_CALLBACK_URL=https://your-mirotalk-domain/auth/oidc/callback
OIDC_SCOPE=”openid profile email”

요렇게 env파일에 추가해 주시면 됩니다. 

 설치 방법은

# clone this repo
$ git clone https://github.com/miroslavpejic85/mirotalk.git
# go to mirotalk dir
$ cd mirotalk
# copy .env.template to .env (edit it according to your needs)
$ cp .env.template .env
# Copy app/src/config.template.js in app/src/config.js (edit it according to your needs)
$ cp app/src/config.template.js app/src/config.js
# Copy docker-compose.template.yml in docker-compose.yml (edit it according to your needs)
$ cp docker-compose.template.yml docker-compose.yml
# Get official image from Docker Hub
$ docker pull mirotalk/p2p:latest
# create and start containers
$ docker-compose up # -d

이 방법으로 설치하면 아주 쉽게 웹접속이 가능합니다.

 라이브 데모 : 

Click the link to make a call.MiroTalk calling provides real-time HD quality and latency simply not available with traditional technology.from MIROTALK

검색해봐도 잘 안나오길래 일단 써봅니다.. ^^

오픈소스를 이용한 챗봇 제작하기

typebot이라는 오픈소스를 이용해 챗봇을 만들기가 매우 쉽습니다.

사내에서 챗봇에 대한 니즈가 있어서 오픈소스를 찾아서 이거 저거 써봤는데 typebot이 가장 좋더군요.

우선 chatgpt가 알려주는 typebot의 설명입니다.

Typebot은 대화형 봇을 구축하고 운영하기 위한 플랫폼으로, 코드 작성 없이도 다양한 대화형 봇을 설계하고 배포할 수 있는 환경을 제공합니다. 주로 사용자와의 상호작용을 간소화하거나 고객 지원, 정보 제공, 자동화된 프로세스를 처리하기 위해 사용됩니다.

아래는 Typebot의 주요 특징과 기능, 사용 사례를 정리한 내용입니다.


1. Typebot의 주요 특징

1.1. 코드 없이 쉽게 설계 가능

  • 드래그 앤 드롭 인터페이스를 통해 복잡한 대화 흐름을 설계할 수 있습니다.
  • 초보자도 이해하기 쉬운 직관적인 UI 제공.

1.2. 멀티 플랫폼 지원

  • Slack, WhatsApp, 웹사이트, Facebook Messenger 등 다양한 플랫폼과의 통합이 가능.
  • 웹 임베드(embed) 기능을 통해 웹사이트에 쉽게 추가 가능.

1.3. 강력한 커스터마이징

  • 봇의 대화 스타일, 답변 논리, 조건 등을 세부적으로 설정 가능.
  • 사용자 입력에 따라 동적으로 반응하는 대화 흐름 설계 가능.

1.4. API와의 통합

  • 외부 API와의 연동을 통해 데이터를 가져오거나 동적으로 데이터를 처리 가능.
  • 예: 데이터베이스 조회, AI API 연동 등.

1.5. 분석 및 통계

  • 사용자와의 대화 데이터를 분석하여 성능 개선 가능.
  • 사용량, 클릭률, 대화 성공률 등을 시각화하여 제공.

2. 주요 기능

2.1. 대화 흐름 설계

  • 질문-응답 시퀀스를 블록으로 정의.
  • 조건 분기와 반복 로직 지원.

2.2. 사용자 입력 처리

  • 버튼 선택, 텍스트 입력, 날짜 선택 등의 다양한 입력 방식을 지원.
  • 사용자의 입력을 변수로 저장하여 다른 블록에서 재사용 가능.

2.3. 멀티미디어 지원

  • 이미지, 동영상, 링크, 파일 등을 전송 가능.

2.4. 외부 서비스 연동

  • Zapier, Integromat 같은 자동화 플랫폼과 통합.
  • Google Sheets, CRM, 이메일 서비스 등과 연동.

2.5. 다국어 지원

  • 여러 언어로 대화를 설정 가능.
  • 다국어를 사용하는 글로벌 사용자층에 적합.

3. 사용 사례

3.1. 고객 지원

  • 자주 묻는 질문(FAQ) 자동화.
  • 간단한 문제 해결 봇 구축.

3.2. 예약 시스템

  • 사용자가 날짜와 시간을 선택하면 예약을 처리.
  • 예약 확인 이메일 또는 알림 발송.

3.3. 리드 생성

  • 웹사이트 방문자와의 대화를 통해 잠재 고객 데이터를 수집.
  • 설문조사나 의견 수집.

3.4. 교육

  • 대화형 학습 모듈 제공.
  • 퀴즈 및 테스트 자동화.

4. 장점

  1. 사용 편의성: 프로그래밍 지식 없이도 빠르게 설정 가능.
  2. 유연성: 다양한 플랫폼과 통합 가능.
  3. 확장성: 외부 API와 연동하여 기능을 무한히 확장할 수 있음.
  4. 비용 효율성: 비교적 저렴한 비용으로 기업용 봇 구축 가능.

이제 설치에 대해 알아 봅시다.

  1. 도커 설치(도커가 제일 만만하고 편하죠~)
    sudo apt update && sudo apt install -y apt-transport-https ca-certificates curl software-properties-common && curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg –dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg && echo “deb [arch=$(dpkg –print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable” | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null && sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin && sudo usermod -aG docker $USER && newgrp docker

    2. typebot 디렉토리 생성
    sudo mkdir typebot

3. docker-compose.yml 생성
version: ‘3.3’

volumes:
db-data:

services:
typebot-db:
image: postgres:16
restart: always
volumes:
– db-data:/var/lib/postgresql/data
environment:
– POSTGRES_DB=typebot
– POSTGRES_PASSWORD=typebot
healthcheck:
test: [“CMD-SHELL”, “pg_isready -U postgres”]
interval: 5s
timeout: 5s
retries: 5
typebot-builder:
image: baptistearno/typebot-builder:latest
restart: always
depends_on:
typebot-db:
condition: service_healthy
ports:
– ‘8080:3000’
extra_hosts:
– ‘host.docker.internal:host-gateway’
env_file: .env

typebot-viewer:
image: baptistearno/typebot-viewer:latest
depends_on:
typebot-db:
condition: service_healthy
restart: always
ports:
– ‘8081:3000’
env_file: .env

4. .env 파일 생성
Make sure to change this to your own random string of 32 characters (https://docs.typebot.io/self-hosting/deploy/docker#2-add-the-required-configuration)

ENCRYPTION_SECRET=do+UspMmB/rewbX2K/rskFmtgGSSZ8Ta

DATABASE_URL=postgresql://postgres:typebot@typebot-db:5432/typebot

NODE_OPTIONS=–no-node-snapshot

NEXTAUTH_URL=(서버 ip 혹은 도메인 기입)(관리자 페이지)
NEXT_PUBLIC_VIEWER_URL=(서버 ip 혹은 도메인 기입)(챗봇 뷰어)

ADMIN_EMAIL=(관리자 이메일)

5. docker compose up -d 명령어로 실행


* 주의사항: smtp를 꼭 설정해줘야 합니다. 그래야 관리자 페이지로 들어가거나 할때 매직링크(이메일로 코드 날라오면 해당 코드로 접속) 사용이 가능합니다.

로그인을 하면 나오는 첫 화면.. 저기서 + 버튼을 눌러서 챗봇을 만들 수 있습니다.

챗봇 크레에이터 버튼을 누르면 나오는 화면, 첫번째는 스크래치를 이용해서 블럭 쌓기 처럼 챗봇을 만들 수 있는 메뉴.

두번째는 예제 파일을 이용해서 만드는 경우. 우리는 두번째 예제 파일을 살펴볼껍니다.

템플릿 메뉴를 누르면 나오는 화면입니다. 좌측은 여러가지 예제가 있고, 예제를 선택하면 우측에는 예제가 실행되는 화면이 나옵니다. 이것을 선택해 보도록 하죠.

자 그러면 이렇게 스크래치 화면이 나오고 우측 하단에 머머리 아저씨의 동영상 설명이 나옵니다. 좌측에는 여러가지 메뉴 박스가 있고 해당 기능을 이용해서 계속해서 챗봇을 구축해 나가면 됩니다.

몇번만 해 보면 감이 오실꺼에요, 매우 쉽습니다. 물론 고급기능을 사용하기에는 부족할 수 있지만, 일반적인 챗봇은 대부분 구현이 가능할 정도로 쉽고 정교하게 구축이 가능합니다.