跳转到内容

部署

StackRivet 部署为单个后端 jar 加一个静态管理端包。Flyway 在启动时自动迁移数据库,所以一次部署就是:构建、配环境、运行。

Terminal window
# 后端 fat jar
cd stackrivet-server
mvn -pl stackrivet-app -am package -DskipTests # → stackrivet-app/target/stackrivet-app.jar
# 静态管理端包
cd ../stackrivet-admin-ui
pnpm install && pnpm build # → dist/

从环境加载配置,再运行 jar:

Terminal window
cd stackrivet-server
set -a && source .env && set +a # STACKRIVET_DB_*、STACKRIVET_SECURITY_JWT_SECRET、REDIS_*、存储凭据
export JAVA_HOME=$(/usr/libexec/java_home -v 21) # JDK 21
java -jar stackrivet-app/target/stackrivet-app.jar

应用在 :8080 启动 Tomcat、运行 Flyway,约 13 秒就绪。确认:

Terminal window
curl http://127.0.0.1:8080/actuator/health # {"status":"UP"}

把管理端 dist/ 作为静态文件托管(如放在 Nginx 后),并把 /api/*/actuator/* 代理到后端。

形态布局
本地开发Vite dev server + Spring Boot + Docker MySQL/PostgreSQL + MinIO
小团队生产Nginx → 静态管理端 + Spring Boot 应用 → 托管 MySQL/PostgreSQL → S3 / OSS
企业负载均衡 → 多个应用节点 → HA 数据库 + 企业对象存储 + OIDC/SAML/LDAP

由于应用以无状态为目标——上传直传对象存储、重任务走异步任务、列表分页——横向扩展就是在负载均衡后加节点。

  • 对象存储,不是本地磁盘。STACKRIVET_STORAGE_TYPE 设为 s3aliyun_oss(见配置对象存储);本地文件挺不过重启或扩容。
  • 轮换初始 admin 密码。 引导 admin 账号带一个已知的开发密码——暴露应用前改掉它。
  • 设置强 STACKRIVET_SECURITY_JWT_SECRET,所有密钥放环境里,绝不提交进代码仓库。
  • Redis 必需——它支撑 JWT 吊销和健康检查。
  • 限制 actuator/metrics 端点。 /actuator/health/actuator/prometheus 按设计无需认证可达;生产中用网络 ACL 挡住。
  • 托管、有备份的数据库。 用托管 MySQL/PostgreSQL,并有经过测试的备份恢复流程。
症状检查
port 8080 failed to startlsof -nP -iTCP:8080 -sTCP:LISTEN——杀掉残留进程
密码正确却登录 401STACKRIVET_SECURITY_JWT_SECRET 在 token 签发后被改过
Flyway checksum 不匹配数据库迁移 → 恢复

Helm chart、多实例 HA、SSO(OIDC/SAML/LDAP)属于 Enterprise——见价格页。Community 作为 Nginx 后的单实例运行良好。