리뷰 - 커뮤니티에 Discord 스타일 비디오 및 음성 룸과 통화를 추가하세요 🎙

중요: 2026년 9월 1일부터 이 플러그인은 Discourse 코어에 번들링되어 "Voice"로 이름이 변경되었습니다. 이제 관리자 페이지에서 활성화하기만 하면 됩니다.

여러분 안녕하세요! 사이드바에 직접 음성 및 비디오 채팅 룸을 추가하는 새로운 플러그인 Resenha를 공유합니다. 외부 앱이 필요 없으며, 순수하게 P2P WebRTC만 사용하면 됩니다.

직접 체험해 보기

:point_right: https://discourse-on-a-pi5.falco.dev/

작동 방식

사이드바에서 룸을 클릭하여 참가하고, 다시 클릭하여 나갑니다. 기본적으로 모든 미디어는 WebRTC를 통해 P2P로 전송되며, Discourse 서버는 시그널링만 처리하고 미디어는 처리하지 않습니다. 더 큰 규모의 통화가 필요한 사이트는 LiveKit 미디어 서버(라이브킷 클라우드 또는 셀프호스팅)를 통해 룸을 라우팅할 수 있습니다. 설치 시 커뮤니티가 즉시 대화를 시작할 수 있도록 기본 “Watercooler” 룸이 생성됩니다.

주요 기능

  • 사이드바 중심 UX — Discord 스타일처럼 사이드바에 룸과 실시간 참가자 아바타를 표시하며, 말하고 있는 사용자를 나타내는 애니메이션 인디케이터를 제공합니다
  • 비디오 및 화면 공유 — 전체 룸 페이지, 타일/프레젠테이션 레이아웃, 전체 화면 지원을 갖춘 선택적 카메라 비디오 및 화면/탭 공유
  • 영속적 통화 위젯 — 포럼을 둘러보는 동안 따라다니는 도킹형, 크기 조절 가능한 미니 통화 위젯(비디오 포함)
  • 음성 및 비디오 설정 — 기기 선택기, 실시간 마이크 테스트, 입력 감도 게이트, WebAssembly 노이즈 서프레션(DTLN), MediaPipe 배경 흐림 — 모두 브라우저에서 로컬로 처리됩니다
  • 룸 채팅 — 각 룸은 실제 Discourse 채팅 채널과 스레드를 기반으로 한 텍스트 채팅을 제공합니다
  • 스테이지 룸 — AMA 및 커뮤니티 콜을 위해 발언 요청 대기열이 있는 발표자/청중용 룸
  • 룸 권한 — 공개, 그룹 제한, 비공개 룸을 지원하며, 사이드바에 잠금 배지와 룸 해시태그를 제공하여 게시물에서 룸을 링크할 수 있습니다
  • 참가자 제어 — 사용자별 볼륨, 음소거, 귀 막기, 추방 기능을 가진 컨텍스트 메뉴; AFK 자동 음소거/연결 해제 및 자동 사용자 상태 제공
  • 룸 관리 — 그룹 기반 사용자 룸 생성 제한, 스태프 CRUD UI, 프로그래매틱 제어를 위한 완전한 REST API
  • 기본 인프라 제로 — SFU/MCU 없이 DTLS-SRTP 암호화를 사용하는 순수 브라우저 WebRTC
  • 선택적 LiveKit 통합 — 개별 룸을 옵트인하거나 대규모 통화를 위해 모든 것을 LiveKit Cloud 또는 자체 LiveKit 서버를 통해 라우팅할 수 있으며, 관리자 헬스 패널과 웹훅 기반 조정 기능을 제공합니다

상태

수 주 동안 내부 회의용으로 사용해 왔으며, 소규모 그룹에서는 매우 잘 작동합니다. 더 큰 그룹은 LiveKit와 함께 배포하는 것이 좋지만, 최대 10명까지의 일반적인 크기는 기본 메시 구성에서 매우 잘 작동합니다.

설치

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/xfalcox/resenha.git

관리자 > 설정 > 플러그인 > resenha 활성화에서 활성화하세요.

피드백 환영

이것은 새로운 플러그인입니다 — 버그, 아이디어, 질문 모두 이 주제에서 환영합니다. PR도 환영합니다!


참고: 이것은 official 플러그인이 아닙니다.

57개의 좋아요

Review, awesome I love it thank you my fellow countryman

12개의 좋아요

I just installed it and up and running in about half an hour. Seems to work well! Would love to see a few feature changes/additions:

Feature Status
Rename a room :cross_mark: Not implemented
Delete a room :cross_mark: Not implemented
Change the default room name :cross_mark: Hard-coded
Tie rooms to Discourse categories :cross_mark: Not supported
Set per-room permissions :cross_mark: Not supported
Create auto-expiring rooms :cross_mark: Not supported
Room descriptions / topics :cross_mark: Not supported
10개의 좋아요

This is amazing. Is there any plan for the team to make it official once it’s out of alpha?

7개의 좋아요

No plans currently, as this is mostly an exploration of the possibilities of the technology and how it can integrate with Discourse.

Still, like everything else, it depends on what our customers want.

9개의 좋아요

This is quite awesome Falco ! I can see quite a few applications for this being what you have listed. Feature plugins like this definitely helps make Discourse Meta the goto platform!

4개의 좋아요

Where is the option to create a new room?

There is no UI for that as this is an experimental project on the technology rather than a ready solution for productions sites.

2개의 좋아요

Shouldn’t,t the experimental be present for now?

Cool plugin

3개의 좋아요

I’ve been having a play with this for a few days - and it is brilliant!!!

It solves the problem of easy ‘upgrading’ a forum/chat discussion into a verbal conversation beautifully. I’ve had years of struggling between the need to switch to other platforms, or having resource-heavy (attempts at) integrated video conferencing.

If you decide to take it further, I’d love it to be designed to integrate with chat. It would be simply sublime to be able to launch a private Voice room for the members of a chat directly from the chat (with a tidy up afterwards to keep things clean). And the chat would remain as the perfect place to drop in additional comments, files, links, etc.

Icing on the cake would of course be:

  1. An option for video (likely not possible technically with such a lightweight tech)

  2. AI transcription, clever enough to integrate related topics and chat. This would be absolutely amazing as a meeting scribe.

11개의 좋아요

Thanks for the feedback! That was exactly my goal with this!

Definitely, that would be a logical next step, with ephemeral rooms to back it up.

It’s very doable, both without a SFU/MCU for people with good enough upload, or with optional support for it.

7개의 좋아요

This were perfect I not will update for a long period but feb I’ll update for last time when ESR is launched for include this plugin

I am so excited for that and I hope to comes.

2개의 좋아요

Want to use a more water-cooler like icon?

image

Pop this in a TC:

// Put this in the JS tab or in /javascripts/discourse/api-initializers/...
import { apiInitializer } from "discourse/lib/api";

export default apiInitializer(api => {
  api.replaceIcon("microphone-lines", "bottle-water");
});
/* Flip the bottle-water icon upside down in Resenha sidebar - put in Common*/
.sidebar-section.sidebar-section-wrapper [class*="d-icon-microphone-lines"] {
  transform: rotate(180deg);
  /* Optionally, tweak vertical alignment if needed */
  display: inline-block;
}
3개의 좋아요

There is now UI for managing rooms.

10개의 좋아요

Thanks Falco for this plugin :heart:

This is great work :+1:

1개의 좋아요

I’m testing in production I’ll be back with feedbacks! Let’s Review :brazil:

1개의 좋아요

Maybe a ring could be better in this case? when I among a room and click on my own profile or another profile DOM refresh returning to homepage.

There is now a room details screen using the kebab menu pattern from Discourse Chat

2개의 좋아요

It doesn’t overlap on the default theme, maybe adjust yours theme to handle the less pace for padding?

image

This is now fixed.

3개의 좋아요

In light of recent news, I added a new feature to the plugin: an AI-powered noise filter.

Admins can make it available via a site setting (default: off), and then users can opt into it by clicking on their own user in a voice chat room.

6개의 좋아요