Ctrl K
ComunidadGuías…
GITHUB · ANALIZADO

vocal

Vocal es un servidor auto-alojado de chat y voz estilo Discord/Mumble que combina canales de texto con hilos y adjuntos, roles con capacidades, y canales de voz/video impulsados por LiveKit como SFU auto-alojado. Arquitectura monorepo con backend en Fastify/Node.js y frontend React/Vite.

Ficha actualizada 29 sept 2026, 12:06 · upstream 29 sept 2026, 11:47 · release v0.3.1

Ver códigoProblemas y ayudaRepositorio ↗
00

Qué es vocal

Descripción editorial construida a partir del repositorio, su documentación y sus señales de mantenimiento.

Vocal es una plataforma de comunicación unificada que integra chat de texto con hilos reactivos, adjuntos multimedia, roles con capacidades granulares y canales de voz/video en tiempo real. El backend se implementa con Fastify y PostgreSQL para persistencia, mientras que el frontend utiliza React con Vite como bundler.

La arquitectura está organizada en un monorepo modular: server/ contiene la API y WebSocket backend; web/ aloja el cliente SPA; desktop/ proporciona una aplicación nativa mediante Electron; y deploy/ incluye Dockerfiles y configuración nginx para producción. El sistema aplica migraciones SQL automáticamente al inicio sin comandos separados.

Para despliegue, Vocal requiere Node.js 22+, pnpm como gestor de paquetes, PostgreSQL 16+ y LiveKit con credenciales API no dev. La instalación local usa docker compose para servicios externos (PostgreSQL y LiveKit), mientras que la producción se orquesta mediante un reverse proxy TLS-terminating que expone solo los puertos públicos necesarios.

CASOS DE USO
  • Servidor de chat y voz auto-alojado para comunidades pequeñas o medianas que buscan alternativa a Discord
  • Plataforma de comunicación interna para equipos remotos con canales de texto persistentes y voz en tiempo real
  • Base técnica para construir aplicaciones de comunicación propietarias sobre LiveKit SFU
  • Entorno de desarrollo para prototipar interfaces de chat/voz con backend Node.js y frontend React
PUNTOS DESTACADOS
  • Arquitectura modular monorepo con separación clara entre server/, web/, desktop/ y deploy/
  • Integración nativa con LiveKit SFU para canales de voz/video en tiempo real
  • Sistema de migraciones SQL automático al inicio del servidor sin comandos manuales
  • Aplicación desktop nativa (Electron) que conecta a cualquier instancia auto-alojada
  • Suite de pruebas end-to-end con Playwright que valida flujos completos de voz y chat
  • Configuración de seguridad anti-CSRF mediante allowlist de origins para el WebSocket
PRECAUCIONES
  • No incluye configuración de TURN server; requiere implementación externa para usuarios detrás de NAT restrictivo
  • Terminación TLS no incluida en el repositorio; debe configurarse en el reverse proxy externo
  • La rotación de MESSAGE_MASTER_KEY invalida permanentemente mensajes ya almacenados
  • Requiere Node.js 22+ y pnpm, aumentando la barrera de entrada para entornos legacy
01

Perfil de infraestructura

Estimación inicial derivada del repositorio y de los servicios detectados.

CPU2 vCPUrecomendación inicial
MEMORIA2 GBRAM estimada
DISCO20 GBalmacenamiento base
COMPLEJIDADmediumnivel de operación
02

Despliegue detectado

Qué señales reales de instalación hemos encontrado.

Despliegue manual

Despliegue en producción con reverse proxy TLS-terminating: postgres:16-alpine (volumen persistente), livekit/livekit-server:latest con LIVEKIT_CONFIG no dev, server construido desde deploy/server.Dockerfile expuesto en 3000, web construido desde deploy/web.Dockerfile expuesto en 80. Firewall abierto solo en puertos HTTP(S) del proxy y 7881/7882 para LiveKit. Generar secrets con openssl antes de desplegar.

—Dockerfile
—Compose
—One-click
03

Stack y dependencias

Componentes inferidos a partir de manifests, configuración y documentación.

FRAMEWORKS
Next.jsReactNode.js
SERVICIOS
PostgreSQLNATS
BASES DE DATOS
PostgreSQL
PUERTOS
300051738054337880
05

Puede sustituir a

Relaciones detectadas por el análisis del repositorio y su categoría.

06

Experiencia real de la comunidad

Ayuda a contrastar la estimación automática con instalaciones reales.

Todavía no hay datos comunitarios para este proyecto.