fluxerapp/fluxer
GitHub: fluxerapp/fluxer
一款自托管的开源即时通讯与音视频平台,为朋友、群组和社区提供类 Discord 的功能体验。
Stars: 6661 | Forks: 357
**实时消息传递** – 输入提示、回应和嵌套回复。
**语音与视频** – 在社区和 DM 中进行通话,支持屏幕共享,由 LiveKit 提供支持。
**富媒体** – 链接预览、图片和视频附件,以及通过 KLIPY 进行 GIF 搜索。
**社区与频道** – 组织到类别中的文本和语音频道,具备细粒度的权限控制。
**自定义表情** – 为您的社区上传自定义表情包和贴纸。
**可自托管** – 运行您自己的实例,完全掌控数据,无供应商锁定。
## 自托管
待定
### 部署助手
- [`livekitctl`](./fluxer_devops/livekitctl/README.md) – 引导 LiveKit SFU 以进行语音和视频通信
## 开发
### 技术栈
- [TypeScript](https://www.typescriptlang.org/) 和 [Node.js](https://nodejs.org/) 用于后端服务
- [Hono](https://hono.dev/) 作为所有 HTTP 服务的 Web 框架
- [Erlang/OTP](https://www.erlang.org/) 用于实时 WebSocket 网关(消息路由和在线状态)
- [React](https://react.dev/) 和 [Electron](https://www.electronjs.org/) 用于桌面和 Web 客户端
- [Rust](https://www.rust-lang.org/) 编译为 WebAssembly,用于性能关键的客户端代码
- [SQLite](https://www.sqlite.org/) 默认用于存储,分布式部署可选 [Cassandra](https://cassandra.apache.org/)
- [Meilisearch](https://www.meilisearch.com/) 用于全文搜索和索引
- [Valkey](https://valkey.io/)(兼容 Redis)用于缓存、速率限制和临时协调
- [LiveKit](https://livekit.io/) 用于语音和视频基础设施
### Devenv 开发环境
Fluxer 仅支持通过 **devenv** 进行开发。它提供了一个可复现的 Nix 环境和一个用于开发栈的单一声明式进程管理器。
1. 按照 [devenv 入门指南](https://devenv.sh/getting-started/) 安装 Nix 和 devenv。
2. 进入环境:
```
devenv shell
```
如果您使用 direnv,仓库中包含一个 `.envrc` 可自动加载 devenv – 只需运行一次 `direnv allow`。
### 快速开始
使用以下命令启动所有服务和开发服务器:
```
devenv up
```
在浏览器中打开您的开发服务器 URL(例如 `http://localhost:48763/`)访问实例。
开发过程中发送的邮件(验证码、通知等)由本地 Mailpit 实例捕获。您可以在开发服务器 URL + `/mailpit/`(例如 `http://localhost:48763/mailpit/`)访问收件箱。
### 远程 VM 上的语音功能
如果您在 Cloudflare Tunnels(或类似的仅 HTTP 隧道)后的远程 VM 上进行开发,语音和视频将无法开箱即用。Cloudflare Tunnels 仅代理 HTTP/WebSocket 流量,因此 WebRTC 媒体传输需要一条通往服务器的直接路径。请在 VM 的防火墙上开放以下端口:
| 端口 | 协议 | 用途 |
| ----------- | -------- | ---------------- |
| 3478 | UDP | TURN/STUN |
| 7881 | TCP | ICE-TCP 回退 |
| 50000-50100 | UDP | RTP/RTCP 媒体 |
引导脚本会根据您的 `config.json` 中的 `domain.base_domain` 自动配置 LiveKit。当设置为非 localhost 域名时,它会启用外部 IP 发现,以便客户端可以直接连接进行媒体传输,而信令则继续通过隧道进行。
### Devcontainer(实验性)
这里提供了在 **VS Code Dev Container** / GitHub Codespace 中进行开发(无需 Nix)的实验性支持。`.devcontainer/` 目录提供了一个包含所有必需工具和支持服务的 Docker Compose 设置。
```
# 在 dev container 内,启动所有进程:
process-compose -f .devcontainer/process-compose.yml up
```
在 `http://localhost:48763` 打开应用,并在 `http://localhost:48763/mailpit/` 查看开发邮件收件箱。`.vscode/launch.json` 中提供了预定义的 VS Code 调试目标。
### 文档
要开发带有实时预览的文档站点:
```
pnpm dev:docs
```
## 贡献
Fluxer 是根据 **AGPLv3** 许可的**免费开源软件**。欢迎贡献。
请参阅 [`CONTRIBUTING.md`](./CONTRIBUTING.md) 了解开发流程和如何提出更改建议,以及 [`CODE_OF_CONDUCT.md`](./CODE_OF_CONDUCT.md) 了解社区准则。
## 安全
请在 [fluxer.app/security](https://fluxer.app/security) 报告漏洞。请勿使用公开 issue 进行安全报告。
许可证
Copyright (c) 2026 Fluxer Contributors 根据 [GNU Affero General Public License v3](./LICENSE) 许可: ``` Copyright (c) 2026 Fluxer Contributors This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/ ``` 有关商业许可和 CLA 的详细信息,请参阅 [`LICENSING.md`](./LICENSING.md)。
标签:AGPLv3, AI工具, Discord替代, Erlang/OTP, GNU通用公共许可证, Hono, LiveKit, MITM代理, Node.js, TeamSpeak替代, TypeScript, VoIP平台, WebRTC, 即时通讯, 可视化界面, 安全插件, 实时消息, 屏幕共享, 社区论坛, 私密聊天, 端到端加密, 群组聊天, 自动化攻击, 自托管, 音视频通话