fiora 中文使用教程
2026-08-15发表于
Chat一、速览
入门
Fiora 是一个基于 Node.js、React 与 Socket.IO 开发的开源聊天应用,后端、Web 前端、Android 与 iOS 客户端都在同一个仓库里维护。它是一个「即开即用」的私有聊天室方案:注册账号、进入群组或创建群组、加好友私聊,整个流程和主流聊天软件的体验一致。
它解决的痛点很具体:如果你需要一套能部署在自己服务器上的聊天服务,又不想从零开发后端实时通信逻辑,Fiora 可以直接拿来用。数据落在自己的 MongoDB 里,消息走 WebSocket 实时推送,前端界面默认支持主题定制与多消息类型,这些都不需要你额外开发。
它的技术栈对前端开发者门槛很低。Node.js 对上手过 Express 的人不陌生,Socket.IO 将实时通信封装得足够友好,React 前端也能直接改样式或功能。
二、快速部署
入门
Fiora 官方推荐基于 Docker 部署,整个服务分成两部分:fiora-server(Socket.IO 服务端)与 fiora-client(React Web 端)。两者加上一个 MongoDB 实例,就是一套完整的聊天服务。
Docker 部署最小组合如下:
git clone https://github.com/yinxin630/fiora.git
cd fiora
# 构建服务端与客户端镜像
docker build -t fiora-server ./packages/server
docker build -t fiora-web ./packages/client
构建完成后,建议直接用一个 docker-compose 编排起 MongoDB、服务端和 Web 端。新建 docker-compose.yml:
version: "3"
services:
mongo:
image: mongo:6
container_name: fiora-mongo
volumes:
- ./data/mongo:/data/db
restart: always
server:
image: fiora-server
container_name: fiora-server
environment:
- PORT=9200
- MONGODB=mongodb://mongo:27017/fiora
ports:
- "9200:9200"
depends_on:
- mongo
restart: always
web:
image: fiora-web
container_name: fiora-web
environment:
- SERVER_URL=http://localhost:9200
ports:
- "8080:80"
depends_on:
- server
restart: always
docker compose up -d
浏览器访问 http://服务器IP:8080,看到登录页即部署成功。
注意:
SERVER_URL是给浏览器用的地址。如果你是云服务器并对公网开放,这里要填http://你的服务器公网IP:9200,否则浏览器会尝试连接用户本机的 9200 端口。
不打算用 Docker 时也可以直接源码跑。要求 Node.js 14.16 及以上版本与 MongoDB 实例:
git clone https://github.com/yinxin630/fiora.git
cd fiora
yarn install
yarn build
yarn start
服务端默认监听 9200 端口,Web 端默认在 8080 端口提供页面。
三、配置详解
进阶 · 推荐细读
部署起来只是第一步,Fiora 的配置项直接决定它在生产环境能不能稳定跑。核心配置主要是服务端的环境变量与 MongoDB 数据源。
| 项目 | 环境变量 | 默认值 | 说明 |
|---|---|---|---|
| 服务端监听端口 | PORT |
9200 |
Socket.IO 长连接服务端口 |
| MongoDB 连接串 | MONGODB |
mongodb://127.0.0.1:27017/fiora |
容器内编排时填 MongoDB 容器名 |
| Web 端服务端地址 | SERVER_URL |
无(必填) | 浏览器访问的服务端地址,含端口 |
| 客户端静态端口 | 无 | 80 |
客户端镜像内置 Nginx 提供静态文件 |
Fiora 自身的业务数据(用户、群组、聊天记录)全部存在 MongoDB 里,因此容器的持久化重点在数据库。Docker 部署时,MongoDB 容器的数据目录为 /data/db,上面 compose 文件里已经映射到了宿主机的 ./data/mongo。
生产环境有一个常见问题:客户端端口直接暴露 8080,服务端暴露 9200,两个端口都裸奔在公网上,既不好看也不好管。建议用 Nginx 做反向代理,让浏览器统一走 443 端口,WebSocket 反向代理时还需要单独处理升级请求。
server {
listen 443 ssl;
server_name chat.example.com;
ssl_certificate /etc/nginx/ssl/example.crt;
ssl_certificate_key /etc/nginx/ssl/example.key;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
location /socket.io/ {
proxy_pass http://127.0.0.1:9200;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
}
配置好后,给客户端设置 SERVER_URL=https://chat.example.com,不要再把 9200 端口直接映射到公网。
四、功能导览
入门
部署完成后,注册一个账号即可进入主界面。Fiora 的核心交互围绕左侧频道列表与中央消息区展开,新用户上手基本不需要学习成本。
聊天本身支持文本、Emoji 表情、图片、代码块、文件与指令消息。输入框里写 Markdown 格式的代码块,发送后会自动渲染为带高亮的代码卡片,这对技术团队内部沟通是很实用的能力。
群组与私聊是两套独立体系:任何人都可以创建新群组,群组消息会广播给所有成员;私聊则要求双方先加为好友。好友关系是单向的,发起申请后对方确认即建立连接。
个性化是 Fiora 的另一个亮点。设置里可以更换主题色与聊天背景,相当于给自己搭了一个有品牌感的私人聊天室,而不是套用现成的 IM 皮肤。
管理员能力集中在服务端控制台与指令上。群组创建者可以将成员设为管理员,管理员拥有禁言、踢人等基础管理操作,适合社区或团队自建服务时做成员约束。
五、常见问题与运维进阶
<span
项目信息
| 项目 | 值 |
|---|---|
| 仓库 | yinxin630/fiora |
| 语言 | TypeScript |
| Star | 7,168 |
| Fork | 1,401 |
| 主页 | https://fiora.suisuijiang.com |
参考链接
121
72
1
1345
文章目录
评论