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
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.
- 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
- 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
- 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
Perfil de infraestructura
Estimación inicial derivada del repositorio y de los servicios detectados.
Despliegue detectado
Qué señales reales de instalación hemos encontrado.
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.
Stack y dependencias
Componentes inferidos a partir de manifests, configuración y documentación.
Puede sustituir a
Relaciones detectadas por el análisis del repositorio y su categoría.
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.