Multy:一个轻量级聊天系统

产品发布 · v1.4 · 2026年8月3日
作者:Hinataiko

主流即时通讯工具越来越重——注册、验证、好友链、群组权限、表情商店。Multy 将聊天最初的样子:创建一个房间,把链接和密码告诉朋友,大家就可以开始聊天。

  • 后端:PHP 7.4+
  • 存储:SQLite
  • 客户端:Web + App
  • 部署:上传即用
  • 特性:适配安卓手表,圆方屏手表都可使用

下载安装

已更新 v2.0 版本,全面重构。
下载请到:
Multy·App更新Postapp更新与开源2026-08-10折腾开源 / 项目
网站源码·点击下载

六大核心能力

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 中每条消息都包含 idusercontenttimeattachments 五个字段。客户端拿最后一条 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_synclast_id

! · 生产环境请使用 HTTPS,密钥仅保存于 App 的受保护存储和服务端配置,并通过后端签发短期访问令牌,避免长期 Key 泄漏带来的全房间数据风险。

一个房间,一把钥匙

Multy 默认带一个 default 公共房间,任何人访问根域名都可以进入。但只要在管理员后台点一下「新建房间」,系统就会生成一串随机 ID,并允许你设置独立的访问密码——bcrypt 散列后存入数据库,明文永不落地。

房间与房间之间的消息、附件、用户列表完全隔离。前端长轮询只能看到自己所在房间的 last_id,没有密钥连 App 接口都进不来。加上 HTTPS,就是一个真正私密的临时会议室。


数据规格表

类别参数默认值 / 范围说明
运行时PHP 版本≥ 7.4需要 PDO_SQLITE 扩展
运行时SQLite 文件chat_data/chatom.db首次访问自动建表
Web 端长轮询保持时长≤ 25shold 参数控制
Web 端轮询检查间隔400ms延迟上限
App 端每批最大消息100limit 控制
App 端鉴权请求头X-Chatom-App-Key生产建议签发短期令牌
附件单次最多附件数6max_file_uploads 决定
附件单文件大小≤ 10MBupload_max_filesize 决定
附件POST 体上限≤ 64MBpost_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