Files
vpsmgr/docs/README.md
T
bluebluesodaandCommandCodeBot b073533155 feat(ipv6): store a random block index instead of deriving it from the username
A prefix-mode container's /112 block index was sha256(username)[0:4], so the
suffix of its address was a global constant for a given name: "alice" got the
same block on every host running this panel. An address therefore identified
its owner to anyone who knew the scheme and could enumerate names — the
opposite of what the random container hostname is for.

The index now lives in users.ipv6_index (schema v19) and is random:

- accounts that predate the column are seeded with the value they have been
  using, so no address moves and no container is touched;
- vps add picks a free index and retries internally, with the UNIQUE index on
  the column as the backstop, so a name can no longer be refused for a reason
  as opaque as "your address is taken" (the old checkIPv6BlockCollision). A
  block containing the bridge gateway is skipped the same way.
- deleting an account and recreating the same name yields a fresh random index,
  and so does a transfer: the value is per-host and stays out of the metadata.

Add launches a container before creating its account row, so within that window
the block can no longer be looked up by name: WireIPv6 and
ConfigureContainerIPv6 now take the block/address the caller already picked.
Blocks are also only meaningful in prefix mode, which the accessors now say.

Verified on a live prefix-mode host: a user created before the change kept her
address (panel and inside the container), a new user came up on a random block
end to end (guest address, ndppd rule, Incus route), deleting and recreating a
name produced a new random block, and a V4-only host still creates users with
no index at all.

Co-authored-by: CommandCodeBot <noreply@commandcode.ai>
2026-09-19 04:43:47 +00:00

964 B

Documentation

Technical documentation for vpsmgr. All docs are in English.

Doc What it covers
architecture.md System design: components, storage, network, security, traffic, users and user groups, image, install/uninstall lifecycle
configuration.md Full reference for /etc/vpsmgr/config.yaml
ipv6.md IPv6 pass-through design: per-account blocks, prefix support, routing, installer flow
ipv6-ndp-responder.md Why prefix mode replaced ndppd with an in-tree NDP responder, design hardening, and what to test at scale
web-ssh.md The browser terminal: how it reaches a container, how a session survives a dropped connection, and how to disable it
development.md Building, testing, releasing, conventions

See also AGENTS.md at the repo root — short version aimed at AI coding agents.