62 lines
2.5 KiB
Markdown
62 lines
2.5 KiB
Markdown
# 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.1-x86_64.fpk
|
|
artifacts/fnos/nxsir-postgresql-15.1.1-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.1-x86_64.fpk
|
|
./scripts/smoke-postgresql-fnos-package.sh artifacts/fnos/nxsir-postgresql-15.1.1-x86_64.fpk
|
|
```
|
|
|
|
冒烟测试会临时启动实际包内 PostgreSQL 和管理 API,验证两个隔离客户端、SCRAM、pgvector、跨库拒绝、只读 SQL、写语句拒绝、备份和重启持久性,退出时停止进程并删除临时数据。
|
|
|
|
## 应用接入
|
|
|
|
其他 fnOS 应用请直接阅读 [fnOS PostgreSQL 共享服务接入指南](docs/fnos-postgresql-client-integration.md),其中包含 manifest 依赖、注册 API、凭据落盘、连接示例、pgvector、迁移和故障恢复规范。
|