Use immutable account IDs for authorization and credential ownership. Keep usernames as mutable login/display attributes, and retain deleted accounts under generated names while allowing their original names to be registered with fresh IDs. Apply the same separation to teams and SCIM resources. Bind OIDC subjects and group grants to explicit account/team IDs. Keep SCIM names as a projection of the authoritative account store, and preserve account IDs across password changes and htpasswd credential imports. Store account IDs in package ownership, tombstones, staged uploads, publication idempotency, and persistent principals. Keep registry package and version keys as natural namespace identities. Replace the experimental native auth format and SQL schema directly, without migrations or compatibility aliases. Update configuration, management APIs, bootstrap output, documentation, and registry fixtures. Preserve joined token-owner lookups and use bulk account projections.
1.9 KiB
id, title
| id | title |
|---|---|
| installation | Installation |
pnpr is distributed on npm as @pnpm/pnpr.
The npm wrapper requires Node.js 18 or newer. Install it globally:
pnpm add -g @pnpm/pnpr@next
Until the first stable release, every pnpr version is a prerelease published
under the next dist-tag, so install @pnpm/pnpr@next.
The wrapper package resolves to the native binary published under
@pnpm/pnpr.<platform>-<arch> (e.g. @pnpm/pnpr.linux-x64). Prebuilt binaries
are available for:
linux-x64,linux-arm64linux-x64-musl,linux-arm64-musldarwin-x64,darwin-arm64win32-x64,win32-arm64
Only the binary matching your platform is downloaded.
Container image
pnpr is also published as the ghcr.io/pnpm/pnpr container image:
docker run -p 127.0.0.1:7677:7677 -v pnpr-storage:/pnpr/storage ghcr.io/pnpm/pnpr:<version>
-
The entrypoint is
pnpr. Arguments after the image name replace the default command,serve --listen 0.0.0.0:7677 --storage /pnpr/storage --cache /pnpr/cache. -
/pnpr/storageand/pnpr/cacheare volumes. Only/pnpr/storageholds data that must survive. -
The default command passes
--storage /pnpr/storage, so the bundled config keepsusers.jsonandtokens.dbin that volume. Pass the same flag when you replace the command, for example to create an account:docker run --rm -it -v pnpr-storage:/pnpr/storage ghcr.io/pnpm/pnpr:<version> add-user alice --storage /pnpr/storage -
The server runs as the non-root
pnpruser. -
The example publishes the port on loopback only. pnpr serves plain HTTP, so put a TLS-terminating proxy in front before clients on other machines log in.
Verify the installation
pnpr --version
Next steps
Continue to the Quick start to run the server and point a client at it.