一个功能强大、用户友好的短信管理系统,基于 Node.js 和 Express 开发,支持查看、管理所有接收和发送的短信,提供实时刷新、智能分页和 URL 识别等高级功能。
git clone https://cnb.cool/null/gammu-ui
cd gammu
npm install
复制示例配置文件:
# 复制示例配置文件
cp .env.example .env
编辑 .env 文件填写实际配置:
# Database Configuration DB_HOST=localhost # 数据库主机地址 DB_USER=root # 数据库用户名 DB_PASSWORD=your_password_here # 数据库密码 DB_NAME=your_database_name_here # 数据库名称 # Server Configuration PORT=3000 # 服务器端口 NODE_ENV=development # 运行环境(development/production) # Authentication LOGIN_USERNAME=admin # 登录用户名 LOGIN_PASSWORD=password # 登录密码
CREATE DATABASE your_database_name_here;
node index.js
打开浏览器访问 http://localhost:3000
使用配置文件中设置的用户名和密码登录系统:
.env 文件是系统的核心配置文件,包含以下配置项:
DB_HOST:数据库主机地址(默认:localhost)
DB_HOST=10.1.0.5DB_USER:数据库用户名(默认:root)
DB_USER=smsDB_PASSWORD:数据库密码
DB_PASSWORD=Fi87beR5KoV8DB_NAME:数据库名称
DB_NAME=smsPORT:服务器端口(默认:3000)
PORT=3000NODE_ENV:运行环境(默认:development)
NODE_ENV=productionLOGIN_USERNAME:登录用户名(默认:admin)
LOGIN_USERNAME=adminLOGIN_PASSWORD:登录密码(默认:password)
LOGIN_PASSWORD=your_secure_password开发环境:
NODE_ENV=development生产环境:
NODE_ENV=production安全注意事项:
.env 文件中使用弱密码.env 文件被添加到 .gitignore 中http://localhost:3000gammu/ ├── .cnb.yml # cnb.cool 编译配置 ├── .env # 环境变量配置文件 ├── .env.example # 环境变量配置示例 ├── .gitignore # Git 忽略文件配置 ├── db.js # 数据库连接配置 ├── Dockerfile # Docker 镜像构建文件 ├── docker-compose.yaml # Docker Compose 配置 ├── common.css # 通用样式 ├── common.js # 通用脚本 ├── index.html # 登录页面 ├── index.js # 主服务器文件 ├── inbox.html # 收件箱页面 ├── package.json # 项目依赖配置 ├── package-lock.json # 依赖版本锁定文件 ├── README.md # 项目文档 ├── sent.html # 已发送页面 └── sms.html # 所有短信页面
index.js:主服务器文件,包含所有 API 路由、服务器配置和业务逻辑
/api/login(登录)、/api/sms/all(获取所有短信)db.js:数据库连接配置文件
index.html:登录页面
sms.html:合并短信页面
package.json:项目依赖配置文件
.env:环境变量配置文件
.env.example:环境变量配置示例
.env 文件.gitignore:Git 忽略文件配置
README.md:项目文档
POST /api/login{
"username": "admin",
"password": "password"
}
{
"success": true,
"token": "random-token-string",
"expiresIn": 3600
}
{
"error": "Invalid username or password"
}
GET /api/sms/allpage:页码,默认值为 1pageSize:每页条数,默认值为 10keyword:搜索关键词,用于搜索短信内容和联系人startDate:开始日期,格式为 YYYY-MM-DDendDate:结束日期,格式为 YYYY-MM-DDtype:消息类型,可选值为 inbox(接收)、sent(发送)或空(所有)status:消息状态,仅对发送消息有效contact:联系人号码,用于搜索特定联系人的短信Authorization:Bearer (登录后获取的令牌){
"data": [
{
"ID": 1,
"Contact": "13800138000",
"Content": "Hello World",
"DateTime": "2026-02-05 12:00:00",
"Type": "inbox",
"Status": null
}
],
"pagination": {
"page": 1,
"pageSize": 10,
"total": 100,
"totalPages": 10
}
}
克隆项目并安装依赖
git clone <repository-url>
cd gammu
npm install
配置环境变量
cp .env.example .env
# 编辑 .env 文件,设置开发环境配置
启动开发服务器
node index.js
访问开发服务器
打开浏览器访问 http://localhost:3000
服务器准备
项目部署
# 克隆项目
git clone <repository-url>
cd gammu
# 安装依赖
npm install --production
# 配置环境变量
cp .env.example .env
# 编辑 .env 文件,设置生产环境配置
启动服务
npm install -g pm2
pm2 start index.js --name "sms-system"
pm2 save
pm2 startup
node index.js
配置防火墙
# Ubuntu/Debian
ufw allow 3000
# CentOS/RHEL
firewall-cmd --permanent --add-port=3000/tcp
firewall-cmd --reload
访问系统
打开浏览器访问 http://your-server-ip:3000
安装 Docker 参考 Docker 官方文档安装 Docker
构建 Docker 镜像
# 克隆项目
git clone <repository-url>
cd gammu
# 构建镜像(单平台)
docker build -t sms-system .
# 构建多平台镜像(需要 buildx 支持)
docker buildx build --platform linux/amd64,linux/arm64 -t sms-system .
配置环境变量
复制 .env.example 文件为 .env 并填写配置:
cp .env.example .env
# 编辑 .env 文件,设置生产环境配置
运行 Docker 容器
# 使用 docker-compose(推荐)
docker-compose up -d
# 或者直接运行容器
docker run -d --name sms-system \
-p 3000:3000 \
--env-file .env \
sms-system
# 或者直接传递环境变量
docker run -d --name sms-system \
-p 3000:3000 \
-e DB_HOST=your-db-host \
-e DB_USER=your-db-user \
-e DB_PASSWORD=your-db-password \
-e DB_NAME=your-db-name \
-e LOGIN_USERNAME=admin \
-e LOGIN_PASSWORD=your-secure-password \
sms-system
访问系统
打开浏览器访问 http://your-server-ip:3000
本项目已配置 cnb.cool 多平台镜像自动构建,支持以下功能:
自动构建触发
main 分支时自动构建linux/amd64 和 linux/arm64 多平台镜像手动构建触发 在 cnb.cool 平台手动触发构建:
全部平台 - 构建 AMD64 和 ARM64 两个平台仅 AMD64 - 仅构建 x64 平台仅 ARM64 - 仅构建 ARM64 平台cnb.cool 配置文件说明
.cnb.yml 配置文件包含以下主要配置:
linux/amd64 和 linux/arm64${CNB_DOCKER_REGISTRY} - cnb.cool Docker 制品库地址${CNB_REPO_SLUG_LOWERCASE} - 仓库路径(小写)${CNB_BRANCH} - 当前分支名${CNB_COMMIT_SHORT} - 提交 SHA(前8位)${CNB_TOKEN} - cnb.cool 访问令牌(用于 manifest 推送)${platform} - 手动触发时选择的平台参数(all/amd64/arm64).cnb/web_trigger.yml 配置文件说明:
构建流程
docker manifest create)镜像标签规则
latest - 多平台镜像(包含 amd64 + arm64)latest-amd64 - AMD64 单平台镜像latest-arm64 - ARM64 单平台镜像<分支名> - 多平台镜像标签<分支名>-amd64 - AMD64 分支标签<分支名>-arm64 - ARM64 分支标签<commit-sha> - 多平台提交标签<commit-sha>-amd64 - AMD64 提交标签<commit-sha>-arm64 - ARM64 提交标签查看构建状态
# 拉取多平台镜像(Docker 会自动选择当前平台)
docker pull docker.cnb.cool/${CNB_REPO_SLUG_LOWERCASE}:latest
# 拉取指定平台镜像
docker pull docker.cnb.cool/${CNB_REPO_SLUG_LOWERCASE}:latest-amd64
docker pull docker.cnb.cool/${CNB_REPO_SLUG_LOWERCASE}:latest-arm64