Skip to content
Projekte

buqiyuan/nest-admin has 2,282 GitHub stars and 521 forks. GitHot measured +1 stars in 24 hours. Last checked 2026-11-08 21:13 UTC. Last push 2026-11-02.

So werden diese Zahlen gemessen

NestJS CRUD for RESTful API 使用 NestJS + Mysql + Typeorm + Redis + JWT + Swagger 企业中后台管理系统项目RBAC权限管理(细粒度到按钮)、实现单点登录等...

Gemessener Sternzuwachs

in 24h
+1
in 7 days
Aktualisierung verzögert
in 15 days
Aktualisierung verzögert
in 1 month
Aktualisierung verzögert

Nettoänderungen in überlappenden Zeiträumen, keine Tagessummen. Fehlende Messwerte bleiben leer. Sterne zeigen Interesse, nicht Qualität.

README.md

Original

nest-admin

OpenRepos

基于 NestJs + TypeScript + TypeORM + Redis + MySql + Vue3 + Ant Design Vue 编写的一款简单高效的前后端分离的权限管理系统。希望这个项目在全栈的路上能够帮助到你。

演示地址

当前公开演示:

前端配合上面的接口使用。演示环境账号见下方表格。

项目启动前的准备工作

.env.development 与 .env.production 已加入 .gitignore,不会再随仓库分发密钥。首次启动前复制模板并填写密钥:

cp .env.development.example .env.development
cp .env.production.example .env.production
openssl rand -base64 48   # JWT_SECRET
openssl rand -base64 48   # REFRESH_TOKEN_SECRET

JWT_SECRET 和 REFRESH_TOKEN_SECRET 必须各自设置为至少 32 位的随机字符串。缺失、为空、短于 32 位,或仍使用已知占位值时,进程会拒绝启动。已经部署过的环境在升级后必须轮换这两个密钥,并重新拉取或构建镜像;旧的登录令牌会因此失效。仓库历史里出现过的 SMTP 授权码也应在邮件服务商处作废。

接口权限使用数据库里的当前角色,不信任 JWT 中的 roles。未写入 user_access_tokens 的令牌会被拒绝。仍保存在该表中的已签发令牌,在过期、退出登录或密钥轮换之前继续有效。

环境要求

  • nodejs 20+
  • docker 20.x+ ,其中 docker compose版本需要 2.17.0+
  • mysql 8.x+
  • 使用 pnpm 包管理器安装项目依赖

演示环境账号密码:

账号 密码 权限
admin a123456 超级管理员

公开演示请设置 DEMO_MODE=true(IS_DEMO=true 同样会锁定该账号)。开启后不能修改内置管理员 admin(用户 id 为 1)的用户名或密码,也不能禁用或删除该账号,接口返回「演示环境不允许修改管理员账号或密码」。其它账号仍按原逻辑处理。变量未设置或为 false / 0 时不做这层限制。IS_DEMO=true 还会拒绝除 GET 和登录以外的写请求。

所有新建的用户初始密码都为 a123456

本地部署账号密码:

账号 密码 权限
admin a123456 超级管理员

快速体验

先按上一节复制 .env.production 并写入足够长的 JWT_SECRET / REFRESH_TOKEN_SECRET。未配置密钥时服务会启动失败。

启动成功后,通过 http://localhost:7001/api-docs/ 访问。

只构建后端镜像时,在仓库根目录执行。PROJECT_DIR 默认为 /nest-admin,不需要额外的 build-arg。要改安装路径时再加上 --build-arg PROJECT_DIR=/your-path。docker compose 构建时仍从 .env 读取 PROJECT_DIR。

docker build -t web-api .

镜像启动时会等待 DB_HOST(默认 mysql)的 ${DB_PORT:-3306},再执行迁移并交给 pm2-runtime。生产镜像不包含 devDependency cross-env,因此迁移直接调用 typeorm CLI,而不是 pnpm migration:run。JWT_SECRET 和 REFRESH_TOKEN_SECRET 需要在运行时注入,不要写进镜像。

pnpm docker:up
# or
docker compose --env-file .env --env-file .env.production up -d --no-build

停止并删除所有容器

pnpm docker:down
# or
docker compose --env-file .env --env-file .env.production down

删除镜像

pnpm docker:rmi
# or
docker rmi buqiyuan/nest-admin-server:stable

查看实时日志输出

pnpm docker:logs
# or
docker compose --env-file .env --env-file .env.production logs -f

本地开发

  • 获取项目代码
git clone https://github.com/buqiyuan/nest-admin
  • 【可选】如果你是新手,还不太会搭建mysql/redis,你可以使用 Docker 启动指定服务供本地开发时使用, 例如(需先复制并填写 .env.development):
# 启动MySql服务
docker compose --env-file .env --env-file .env.development run -d --service-ports mysql
# 启动Redis服务
docker compose --env-file .env --env-file .env.development run -d --service-ports redis
  • 安装依赖
cd nest-admin

pnpm install
pnpm dev
  • 打包
pnpm build

数据库迁移

  1. 更新数据库(或初始化数据)
pnpm migration:run
  1. 生成迁移
pnpm migration:generate
  1. 回滚到最后一次更新
pnpm migration:revert

更多细节,请移步至官方文档

[!TIP] 如果你的实体类或数据库配置有更新,请执行npm run build后再进行数据库迁移相关操作。

系统截图

欢迎 Star && PR

如果项目有帮助到你可以点个 Star 支持下。有更好的实现欢迎 PR。

致谢

LICENSE

MIT

Ähnliche Projekte entdecken