feat: add native fnOS PostgreSQL shared service
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
# PostgreSQL FPK for fnOS
|
||||
|
||||
`nxsir.postgresql` 是面向 fnOS 原生应用的共享 PostgreSQL 15 服务,不依赖 Docker。多个应用共用一个数据库进程,但通过回环注册 API 获得相互隔离的数据库、SCRAM 角色和随机密码。
|
||||
|
||||
主要功能:
|
||||
|
||||
- PostgreSQL 15,仅监听 `127.0.0.1:15432`
|
||||
- 独立管理界面,默认端口 `15433`
|
||||
- 回环限定的应用注册与凭据签发
|
||||
- pgvector 扩展申请
|
||||
- 客户端、数据库、角色与会话管理
|
||||
- 默认只读的 SQL 工作台(30 秒、1000 行上限)
|
||||
- 手动 custom-format 备份、SHA-256 与恢复
|
||||
- 独立管理密码、HttpOnly 会话和接入令牌轮换
|
||||
|
||||
## 目录
|
||||
|
||||
```text
|
||||
fnos-postgresql/ fnOS 包清单、向导和生命周期脚本
|
||||
src/PostgresService.WebApi/ 管理与注册 API
|
||||
frontend/postgres-admin/ Vue 管理界面
|
||||
scripts/ 构建、包校验和运行级冒烟测试
|
||||
tests/PostgresService.Tests/ 安全凭据单元测试
|
||||
docs/ 第三方 fnOS 应用接入文档
|
||||
```
|
||||
|
||||
## 构建
|
||||
|
||||
环境要求:Linux x86_64、.NET 8 SDK、Node.js/npm、`apt-get`、`dpkg-deb`、curl,以及 fnOS 官方 `fnpack`。可把 `fnpack` 放到 `.tools/fnpack`,或通过 `FNPACK` 指定。
|
||||
|
||||
```bash
|
||||
cd frontend
|
||||
npm ci
|
||||
cd ..
|
||||
./scripts/build-postgresql-fnos-package.sh
|
||||
```
|
||||
|
||||
默认输出:
|
||||
|
||||
```text
|
||||
artifacts/fnos/nxsir-postgresql-15.1.0-x86_64.fpk
|
||||
artifacts/fnos/nxsir-postgresql-15.1.0-x86_64.fpk.sha256
|
||||
```
|
||||
|
||||
构建脚本会下载 Debian Bookworm PostgreSQL 15 运行时,并对官方 pgvector `0.8.6-1.pgdg12+1` 包执行固定 SHA-256 校验。`app.tgz` 还会检查校验和、路径穿越、绝对/越界链接和 512 MB 解包上限。
|
||||
|
||||
如有离线 NuGet 源,可设置 `POSTGRES_SERVICE_NUGET_FEED=/path/to/feed`;否则使用 nuget.org。
|
||||
|
||||
## 验证
|
||||
|
||||
```bash
|
||||
dotnet test tests/PostgresService.Tests/PostgresService.Tests.csproj
|
||||
./scripts/verify-fnos-package.sh artifacts/fnos/nxsir-postgresql-15.1.0-x86_64.fpk
|
||||
./scripts/smoke-postgresql-fnos-package.sh artifacts/fnos/nxsir-postgresql-15.1.0-x86_64.fpk
|
||||
```
|
||||
|
||||
冒烟测试会临时启动实际包内 PostgreSQL 和管理 API,验证两个隔离客户端、SCRAM、pgvector、跨库拒绝、只读 SQL、写语句拒绝、备份和重启持久性,退出时停止进程并删除临时数据。
|
||||
|
||||
## 应用接入
|
||||
|
||||
其他 fnOS 应用请直接阅读 [fnOS PostgreSQL 共享服务接入指南](docs/fnos-postgresql-client-integration.md),其中包含 manifest 依赖、注册 API、凭据落盘、连接示例、pgvector、迁移和故障恢复规范。
|
||||
Reference in New Issue
Block a user