Weblog 是一个 Spring Boot + Astro/Svelte 的前后端分离个人博客系统。当前代码包含前台博客、后台管理、JWT 登录、MinIO 上传、Lucene 搜索、评论审核、知识库、聊天室和 AI 工作台。
weblog-springboot: 后端多模块工程,入口模块是weblog-web。weblog-fuwari: Astro + Svelte 前端。deploy-config: 服务器 Podman 部署脚本与容器配置。
仓库不再保存真实密钥。后端启动必须通过环境变量指定运行环境和敏感配置。
必填或强烈建议配置:
SPRING_PROFILES_ACTIVE=dev
JWT_SECRET=<base64-encoded-hs512-secret>
SPRING_DATASOURCE_URL=jdbc:p6spy:mysql://127.0.0.1:3307/weblog?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&zeroDateTimeBehavior=convertToNull
SPRING_DATASOURCE_USERNAME=root
SPRING_DATASOURCE_PASSWORD=123456
MINIO_ENDPOINT=http://127.0.0.1:9000
MINIO_PUBLIC_ENDPOINT=http://127.0.0.1:9000
MINIO_ACCESS_KEY=quanxiaoha
MINIO_SECRET_KEY=quanxiaoha
MINIO_BUCKET_NAME=weblog
WEBLOG_CORS_ALLOWED_ORIGIN_PATTERNS=http://localhost:4321,http://127.0.0.1:4321可选配置:
MAIL_HOST=smtp.qq.com
MAIL_USERNAME=
MAIL_PASSWORD=
QQ_API_KEY=
AI_BASE_URL=https://maas-coding-api.cn-huabei-1.xf-yun.com/anthropic/v1
AI_API_KEY=
AI_MODEL_NAME=xopkimik26
AI_UNSPLASH_ACCESS_KEY=生成本地 JWT 密钥示例:
openssl rand -base64 64Windows PowerShell 可用:
[Convert]::ToBase64String((1..64 | ForEach-Object { Get-Random -Minimum 0 -Maximum 256 }))- 启动 MySQL 和 MinIO,确认数据库
weblog已初始化。 - 设置后端环境变量,至少包含
SPRING_PROFILES_ACTIVE=dev和JWT_SECRET。 - 启动后端:
cd weblog-springboot
mvn -pl weblog-web -am package -DskipTests
java -jar weblog-web/target/weblog-web-0.0.1-SNAPSHOT.jar- 启动前端:
cd weblog-fuwari
pnpm install
pnpm dev访问地址:
- 前台首页:
http://localhost:4321/ - 后台管理:
http://localhost:4321/admin/ - 后端接口:
http://localhost:8081/
复制 deploy-config/.env.example 为服务器上的 deploy-config/.env 并填写真实值。run-on-server.sh 会在首次部署时自动生成 JWT_SECRET 并写回 .env,也可以提前手动配置。
生产环境必须修改:
MYSQL_ROOT_PASSWORDMINIO_ROOT_PASSWORDJWT_SECRETWEBLOG_CORS_ALLOWED_ORIGIN_PATTERNS- 管理员初始密码
演示账号:
- 用户名:
admin - 默认密码:
123456
生产环境上线后必须立即修改默认密码。
cd weblog-fuwari
pnpm vitest run src/lib/weblog-api.test.ts --pool=threads --maxWorkers=1
pnpm astro check
pnpm buildcd weblog-springboot
mvn -pl weblog-web -am -DskipTests package