2ebcb6e1b85a8997c48de2711b013c83fa0440fc
NixMsg
自建的消息中转服务。设备、程序、App 作为「端」连到同一台服务器,端之间互发消息或群发。单个 Go 程序,内置 MQTT,SQLite 存储,自带管理后台,提供 Go、JS/TS、Python、Java/Android SDK。
功能概览
- 端登录、会话令牌、在线目录、单聊与群发
- 离线保留、延迟、定时、撤回、回执
- 管理后台(网页 + API)、自助注册、Prometheus
/metrics - 单文件二进制或 Docker 部署
构建
需要:Go、Node.js LTS、pnpm、Task。
task check # 构建前端、编译、lint、单元测试
task build # 产出 bin/nixmsg(Windows 为 bin/nixmsg.exe)
交叉编译三个发布平台(CGO_ENABLED=0,产物在 bin/,勿提交):
task q:release-bins
# 等价于:
# CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -tags embeddist -o bin/nixmsg-linux-amd64 ./cmd/nixmsg
# CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -tags embeddist -o bin/nixmsg-linux-arm64 ./cmd/nixmsg
# CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -tags embeddist -o bin/nixmsg-windows-amd64.exe ./cmd/nixmsg
Docker 当前架构镜像(不推送):
task q:docker-build
# 镜像名 git.asio.asia/nixevol/nixmsg:0.1.0
推送当前架构镜像(阶段 3 正式执行;推送前先 docker login git.asio.asia):
task q:docker-push
多架构 linux/amd64 + linux/arm64(需 Docker buildx / QEMU):
task q:docker-buildx
配置文件
默认读取当前目录的 config.yaml;也可用环境变量 NIXMSG_CONFIG 指定路径。
- 完整示例:deploy/config.example.yaml
- 容器内示例:deploy/config.docker.yaml(
data_dir: /data) - 字段说明见 docs/OPS.md
初始化与启动
-
复制并编辑配置:
copy deploy\config.example.yaml config.yaml # Windows # cp deploy/config.example.yaml config.yaml # Linux/macOS -
生成管理员密码(只打印一次,请自行保存):
# Windows PowerShell $env:NIXMSG_CONFIG="config.yaml"; .\bin\nixmsg.exe admin init # Linux / macOS NIXMSG_CONFIG=config.yaml ./bin/nixmsg admin init -
启动服务:
$env:NIXMSG_CONFIG="config.yaml"; .\bin\nixmsg.exe serve # NIXMSG_CONFIG=config.yaml ./bin/nixmsg serve -
浏览器打开
http://127.0.0.1:7443/(或你配置的listen/admin_listen)登录管理后台。健康检查:GET /healthz。
Docker Compose 示例见 deploy/docker-compose.yml。首次需保证数据目录对 uid 65532 可写,再:
docker compose -f deploy/docker-compose.yml run --rm nixmsg admin init
docker compose -f deploy/docker-compose.yml up -d
SDK
| SDK | 说明 |
|---|---|
| sdk/go | Go 模块 git.asio.asia/nixevol/NixMsg/sdk/go |
| sdk/js | npm @nixevol/nixmsg |
| sdk/python | PyPI nixmsg |
| sdk/java | Maven asia.asio.nixmsg:nixmsg-sdk |
包正式发布在阶段 3;开发期可按各 README 本地引用。
文档
许可证
专有软件,见 LICENSE。源代码和发布物公开可读,不代表授予使用许可。
Languages
Go
67.7%
TypeScript
10.1%
Java
9.4%
Python
7.8%
Vue
4.2%
Other
0.6%