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>
15 lines
964 B
Markdown
15 lines
964 B
Markdown
# Documentation
|
|
|
|
Technical documentation for vpsmgr. All docs are in English.
|
|
|
|
| Doc | What it covers |
|
|
|---|---|
|
|
| [architecture.md](architecture.md) | System design: components, storage, network, security, traffic, users and user groups, image, install/uninstall lifecycle |
|
|
| [configuration.md](configuration.md) | Full reference for `/etc/vpsmgr/config.yaml` |
|
|
| [ipv6.md](ipv6.md) | IPv6 pass-through design: per-account blocks, prefix support, routing, installer flow |
|
|
| [ipv6-ndp-responder.md](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](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](development.md) | Building, testing, releasing, conventions |
|
|
|
|
See also [`AGENTS.md`](../AGENTS.md) at the repo root — short version aimed at AI coding agents.
|