Fluxer — открытая альтернатива Discord, которой не страшен вендор-лок
Представьте, что вы годами выстраивали сообщество в Discord: настраивали роли, подключали ботов, собирали базу знаний в каналах. А потом правила платформы меняются или ваш аккаунт улетает в бан без объяснения причин. Неприятно, но такова реальность централизованных сервисов. Именно эту проблему пытается решить Fluxer — амбициозный опенсорс-проект, который целится в ту же нишу, что и Discord, но дает полный контроль над данными.
Интересно, что проект уже на старте набрал более 6750 звезд на GitHub и обслуживает около 125 тысяч пользователей в продакшене. При этом за разработкой стоят всего два человека. В README висит огромное предупреждение: автор просит подождать с глубоким погружением в код, пока идет масштабный рефакторинг. Но даже в текущем состоянии стек и возможности Fluxer выглядят как минимум любопытно.
Что умеет Fluxer прямо сейчас
Если вы пользовались Discord, то интерфейс и логика Fluxer покажутся вам родными. Разработчики не стали изобретать велосипед и сосредоточились на реализации привычного функционала.
Главная фишка — это self-hosting. Вы можете развернуть свою инстанцию и получить все функции бесплатно, без всяких Nitro-подписок.
Вот что доступно «из коробки»:
- Текстовые каналы с тредами, реакциями и индикацией печати.
- Голосовые и видеозвонки, включая демонстрацию экрана.
- Сообщества с иерархией каналов и гибкой системой прав доступа.
- Кастомные эмодзи и стикеры для каждого сервера.
- Интеграция с KLIPY для поиска гифок и превью ссылок.
Технологический зоопарк под капотом
Разработчики Fluxer выбрали довольно эклектичный, но мощный стек. Вместо того чтобы писать всё на одном языке, они используют разные инструменты для конкретных задач.
Бэкенд построен на Node.js и TypeScript с использованием фреймворка Hono. Это современный выбор, когда нужна скорость и типизация. Но самое интересное начинается в слое реального времени. Для WebSocket-шлюза, который отвечает за маршрутизацию сообщений и статусы пользователей, выбрали Erlang/OTP. Это классика для высоконагруженных чатов (тот же WhatsApp начинался с Erlang), потому что он идеально справляется с миллионами параллельных соединений.
За медиа-составляющую (VoIP) отвечает LiveKit — сейчас это фактически стандарт для WebRTC в опенсорсе. Если захотите поднять Fluxer на своем сервере, в репозитории есть утилита livekitctl, которая помогает быстро развернуть SFU для голоса и видео.
Клиентская часть написана на React и упакована в Electron для десктопа. Для критичных к производительности задач используется Rust, скомпилированный в WebAssembly. База данных по умолчанию — SQLite, что удобно для небольших серверов, но есть поддержка Cassandra для тех, кто планирует масштабироваться на тысячи пользователей.
Как это пощупать разработчику
Автор проекта честно пишет, что сейчас процесс селф-хостинга может быть не самым легким, и работает над его упрощением. Тем не менее, для разработки предлагается использовать devenv. Это инструмент на базе Nix, который создает изолированное и воспроизводимое окружение.
Если у вас установлен Nix и direnv, достаточно зайти в папку проекта, и окружение поднимется само. Основная команда для запуска всех сервисов:
devenv up
После этого приложение будет доступно по адресу http://localhost:48763/. Удобно, что разработчики предусмотрели локальный Mailpit: все письма (подтверждения почты, уведомления), которые отправляет система, не улетают в пустоту, а перехватываются и отображаются в локальном веб-интерфейсе.
Для тех, кто не хочет возиться с Nix, есть экспериментальная поддержка Dev Containers для VS Code. Там всё крутится в Docker Compose, правда, не будет работать Bluesky OAuth из-за отсутствия HTTPS в локальной среде.
Стоит ли на это тратить время
Fluxer сейчас находится в той стадии, когда проект «летит», и разработчики едва успевают латать дыры. Это не готовый продукт для замены корпоративного Slack завтра утром, но отличный полигон для изучения современных технологий.
Кому проект будет полезен:
- Тем, кто ищет базу для создания собственного мессенджера или платформы для сообщества.
- Разработчикам, желающим посмотреть на связку Node.js, Erlang и Rust в реальном крупном проекте.
- Энтузиастам приватности, которым важно хранить переписку на своих серверах.
Сейчас в репозитории идет активный рефакторинг в ветке refactor. Автор обещает открыть прием Pull Request-ов, как только стабилизирует кодовую базу. Если идея свободного Discord вам близка, самое время добавить проект в закладки или попробовать развернуть его в тестовом контуре.
Кстати, в планах у команды — нативные мобильные приложения и федерация (возможность серверам общаться между собой), что может превратить Fluxer в полноценного игрока на рынке децентрализованных коммуникаций.
