Files
postgresqlfpk/README.md
T

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-getdpkg-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、迁移和故障恢复规范。