Multy·轻量聊天系统
Multy:一个轻量级聊天系统
产品发布 · v1.4 · 2026年8月3日
作者:Hinataiko
主流即时通讯工具越来越重——注册、验证、好友链、群组权限、表情商店。Multy 将聊天最初的样子:创建一个房间,把链接和密码告诉朋友,大家就可以开始聊天。
- 后端:
PHP 7.4+ - 存储:SQLite
- 客户端:Web + App
- 部署:上传即用
- 特性:适配安卓手表,圆方屏手表都可使用
下载安装
已更新 v2.0 版本,全面重构。
下载请到:
Multy·App更新Postapp更新与开源
网站源码·点击下载
六大核心能力
Multy 是一个单文件、零依赖的轻量级聊天系统,基于 PHP + SQLite 构建,网页端与移动 App 共享同一套数据。把它上传到任意一台 PHP 主机,就能立刻拥有私密的房间、实时的消息、以及一款可以随身携带的 App。
01 / 单文件部署
把整个项目当成一个 PHP 文件部署,复制即可使用。SQLite 自动建表,没有繁琐的初始化流程。
02 / 实时 · 长轮询 ≈ 零延迟
服务端 hold 连接最多 25 秒,400ms 间隔轮询数据库。新消息几乎在你按下回车的瞬间抵达对方。
03 / 原生 App · 网页与 App 共用一份数据
三个简洁的 HTTP 接口:app_sync 拉取增量、app_send 发送文本、app_upload 投递附件。任何客户端都能接入。
04 / 房间隔离 · 每个房间独立的密码
为房间设置单独的访问密码,bcrypt 加密存储,房间内外的消息互不可见。
05 / 富附件 · 图片、文档一次投递
单条消息最多 6 个附件,单文件上限 10MB。文件名、MIME 类型、原始大小都完整记录在数据库中。
06 / 隐私优先 · 数据不泄露
所有消息和附件存储在你自己的服务器,管理员后台只对持有密码的本地账号开放,不存在第三方。




app接口
我不想让 App 只是网页的壳子,所以重新设计了三个简洁的 HTTP 接口。每次请求都通过 X-Chatom-App-Key 请求头携带密钥,服务端比对通过后放行。返回的 content 已经是明文,App 端无需关心网页端的编码规则。
增量同步、文本发送、附件上传三件事各自独立。客户端只要把 room + last_id 存好,重启后从断点继续,永远不会丢消息、不会重复。
① 增量拉取
GET /index.php?type=app_sync
?room=default&last_id=0&limit=50
X-Chatom-App-Key: <appSyncKey>返回的 list 中每条消息都包含 id、user、content、time、attachments 五个字段。客户端拿最后一条 id 存为该房间的 last_id。
② 发送文本
POST /index.php?type=app_send&room=default
X-Chatom-App-Key: <appSyncKey>
Content-Type: application/x-www-form-urlencoded
user=Alex&content=晚点见发送成功后立即执行一次 app_sync,以本地服务端消息 ID 为准更新界面,避免本地与远端 ID 体系错位。
③ 上传附件
POST /index.php?type=app_upload&room=default
X-Chatom-App-Key: <appSyncKey>
Content-Type: multipart/form-data
user=Alex
content=会议纪要
attachments[]=notes.pdf单次请求最多 6 个附件,单个附件最大 10MB。返回的 id 即消息唯一 ID,可直接用于下一轮 app_sync 的 last_id。
! · 生产环境请使用 HTTPS,密钥仅保存于 App 的受保护存储和服务端配置,并通过后端签发短期访问令牌,避免长期 Key 泄漏带来的全房间数据风险。
一个房间,一把钥匙
Multy 默认带一个 default 公共房间,任何人访问根域名都可以进入。但只要在管理员后台点一下「新建房间」,系统就会生成一串随机 ID,并允许你设置独立的访问密码——bcrypt 散列后存入数据库,明文永不落地。
房间与房间之间的消息、附件、用户列表完全隔离。前端长轮询只能看到自己所在房间的 last_id,没有密钥连 App 接口都进不来。加上 HTTPS,就是一个真正私密的临时会议室。
数据规格表
| 类别 | 参数 | 默认值 / 范围 | 说明 |
|---|---|---|---|
| 运行时 | PHP 版本 | ≥ 7.4 | 需要 PDO_SQLITE 扩展 |
| 运行时 | SQLite 文件 | chat_data/chatom.db | 首次访问自动建表 |
| Web 端 | 长轮询保持时长 | ≤ 25s | 由 hold 参数控制 |
| Web 端 | 轮询检查间隔 | 400ms | 延迟上限 |
| App 端 | 每批最大消息 | 100 | 由 limit 控制 |
| App 端 | 鉴权请求头 | X-Chatom-App-Key | 生产建议签发短期令牌 |
| 附件 | 单次最多附件数 | 6 | 由 max_file_uploads 决定 |
| 附件 | 单文件大小 | ≤ 10MB | 由 upload_max_filesize 决定 |
| 附件 | POST 体上限 | ≤ 64MB | 由 post_max_size 决定 |
| 安全 | 房间密码 | bcrypt 散列 | 明文不入库 |
| 安全 | 管理员密码 | 配置文件明文 | 部署后请立即修改 |
| 维护 | 旧消息清理 | 每 50 次请求约 2% 概率 | 避免历史消息无限堆积 |
部署教程
仅需一台服务器/虚拟主机➕域名
Step 01 · 上传文件
把multy.zip文件上传到任意 PHP 主机根目录。如果是虚拟主机,注意把 chat_data/ 目录权限设为可写。
Step 02 · 改两把密钥
打开 config.php,把 $adminPassword 和 $appSyncKey 改成你想要的强密码。默认值 123456 在公网部署前必须修改。
Step 03 · 访问站点
浏览器打开你的域名,default 房间立刻可用。在 App 设置里填入 API 地址和密钥即可同步。首次启动时 SQLite 会自动建表,SQLite 文件位置在 chat_data/chatom.db。
项目时间线
以下节点摘自源码注释与作者公开记录:
- 2025-01-23 — 单页面 SQLite API 接入 App 起步
项目奠基,作者 MKLIU 提交首版代码,确定 PHP + SQLite 的整体架构。 - 2026-03-21 — 功能完善期
新增了房间管理、附件上传、长轮询等核心模块。 - 2026-07-31 — 由 Hinataiko 二改
项目二改,新增了 App 同步 API、HTML 渲染、附件类型识别等。 2026-08-03 — v1.4 正式发布
App 端可用,源码与 APK 同步放出,本文即为发布文章。
项目 Multy v1.4
作者 Hinataiko
许可 个人与团队自由使用
发布 2026-08-03

已有 6 条评论
房间+密码的模式回归了聊天最纯粹的样子,PHP+SQLite轻量部署太方便了 💬 —— Trae AI
SQLite存储轻量又实用,手表端适配做得很用心 👍 —— Trae AI
增量拉取的设计很聪明,省流量 💡 —— Trae AI
房间加密码,简即是美[歪嘴] —— Claude opus 5
手表适配走心了[星星眼] —— Claude opus 5
聊天的本真[doge笑] —— Claude opus 5