这是一款类似于朋友圈+公众号文章体系的一个程序,目前开发程度基本已经接近尾声,但是这个程序是否为开源,我还是进行了深思熟虑,这毕竟是一个Ai项目,而且网站有很多bug以及安全问题,所以我决定程序实现开源+更新
开源
话又说回来了,这个程序既然选择了开源,那么就请大家不要瞎搞,建造那种违反法律的网站,你可以进行二次开发,修改,以及优化,但是你得说明这是在kanle的Ai项目上面进行修改以及二开的,虽然是个Ai产品,但是也花了很多Token以及时间的,也是经过了无数个日夜的打磨,所以开源很不易,且用且珍惜吧,还请大家能够在Github上面给我点一个爱心,感谢了各位了!!!
使用
拉取镜像直接部署
# 1. 下载 docker-compose.yml 和环境变量模板
curl -sL https://gitee.com/ziln_cn/kanle-next/raw/main/docker-compose.yml -o docker-compose.yml
curl -sL https://gitee.com/ziln_cn/kanle-next/raw/main/.env.example -o .env
# 2. 编辑 .env,至少修改 DB_PASSWORD、JWT_SECRET、ADMIN_PASSWORD
vi .env
# 3. 一键启动(自动拉取镜像)
docker compose up -d
# 4. 访问
# 前端: http://localhost:3000
# 后端 API: http://localhost:4000/api/health
从源码构建
# 1. 克隆项目
git clone https://gitee.com/ziln_cn/kanle-next.git
cd kanle
# 2. 复制环境变量模板并修改
cp .env.example .env
# 编辑 .env,至少修改 DB_PASSWORD、JWT_SECRET、ADMIN_PASSWORD
# 3. 修改 docker-compose.yml:注释掉 image 行,取消 build 的注释
# 4. 一键构建并启动
docker compose up -d --build
# 5. 访问
# 前端: http://localhost:3000
# 后端 API: http://localhost:4000/api/health
默认管理员账号:
- 邮箱:
admin@example.com(在.env中修改ADMIN_EMAIL) - 密码:
change-me(在.env中修改ADMIN_PASSWORD)
访问 http://localhost:3000/admin/login 进入后台管理。
关于域名:预构建镜像中 NEXT_PUBLIC_API_URL=http://localhost:4000/api,适合本地体验。生产环境使用自定义域名时,需从源码构建前端镜像以注入正确地址:
# 修改 .env 中的 NEXT_PUBLIC_API_URL 为你的域名
# 取消 docker-compose.yml 中 frontend 的 build 注释,注释掉 image 行
docker compose up -d --build frontend手动部署:
前置要求
- Node.js 22 LTS
- MySQL 8.0
- PM2(
npm install -g pm2) - Nginx
后端:
cd backend
# 安装依赖
npm ci
# 配置环境变量
cp .env.example .env
# 编辑 .env,填写数据库、JWT、管理员等信息
# 编译 TypeScript
npm run build
# 初始化数据库 + 创建管理员
npm run db:seed
# 启动(PM2)
pm2 start ecosystem.config.js
前端:
cd frontend
# 安装依赖
npm ci
# 配置环境变量
cp .env.example .env.local
# 编辑 .env.local,填写 NEXT_PUBLIC_API_URL
# 构建
npm run build
# 启动(PM2)
pm2 start ecosystem.config.js
sudo cp deploy/nginx.conf /etc/nginx/conf.d/kanle.conf
# 修改 server_name 为你的域名
sudo nginx -t && sudo nginx -s reload
# SSL 证书
sudo certbot --nginx -d yourdomain.com
环境变量参考
后端:
前端:
如果有不懂的可以进行评论和使用ai,让ai帮你,如果使用来二次开发也是支持的,希望大家能够喜欢!!!
| 变量 | 必填 | 默认值 | 说明 |
|---|---|---|---|
NODE_ENV | 是 | production | 运行环境 |
PORT | 否 | 4000 | 后端端口 |
DB_HOST | 是 | 127.0.0.1 | MySQL 地址(Docker 中为 mysql) |
DB_PORT | 否 | 3306 | MySQL 端口 |
DB_USER | 是 | - | MySQL 用户名 |
DB_PASSWORD | 是 | - | MySQL 密码 |
DB_NAME | 否 | moment_blog | 数据库名 |
JWT_SECRET | 是 | - | JWT 密钥(生产务必修改) |
JWT_EXPIRES_IN | 否 | 7d | Token 过期时间 |
ADMIN_EMAIL | 是 | - | 初始管理员邮箱(仅首次创建生效) |
ADMIN_PASSWORD | 是 | - | 初始管理员密码(仅首次创建生效) |
ADMIN_USERNAME | 否 | admin | 管理员用户名 |
CLIENT_URL | 否 | http://localhost:3000 | 前端地址(CORS + revalidate) |
REVALIDATE_SECRET | 否 | kanle-revalidate | 按需重验证密钥(须与前端一致) |
| 变量 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
NEXT_PUBLIC_API_URL | 构建时 | 是 | - | 后端 API 地址,必须以 /api 结尾 |
NEXT_PUBLIC_TWIKOO_ENV_ID | 构建时 | 否 | - | Twikoo 评论系统环境 ID |
NEXT_PUBLIC_REVALIDATE_SECRET | 构建时 | 否 | kanle-revalidate | 须与后端一致 |
REVALIDATE_SECRET | 运行时 | 否 | kanle-revalidate | 须与后端一致 |
PORT | 运行时 | 否 | 3000 | 前端端口 |
HOSTNAME | 运行时 | 否 | 0.0.0.0 | 监听地址 |
构建时变量:
NEXT_PUBLIC_*前缀的变量在next build时内联到产物中,运行时修改无效。换域名后必须重新构建前端。
如果有不懂的可以进行评论和使用ai,让ai帮你,如果使用来二次开发也是支持的,希望大家能够喜欢!!!

