2.5 KiB
2.5 KiB
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 会话和接入令牌轮换
目录
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 指定。
cd frontend
npm ci
cd ..
./scripts/build-postgresql-fnos-package.sh
默认输出:
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。
验证
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 共享服务接入指南,其中包含 manifest 依赖、注册 API、凭据落盘、连接示例、pgvector、迁移和故障恢复规范。