Installing in an LXC container
The one-liner
Section titled “The one-liner”Run this on the Proxmox node itself, as root:
curl -fsSL https://web.proxploy.dev/install.sh | bashWith no flags, install.sh checks for pct and /etc/pve; finding both,
it takes the PVE-host path documented on this page rather than installing
directly. No --shape flag is needed or accepted on this path: passing
--shape is what tells the script to skip CT creation and install directly
instead, which is the systemd path, not this one.
What the PVE-host half does
Section titled “What the PVE-host half does”- Resolves CT settings it wasn’t given explicitly (below).
- Creates the container with
pct create: the currentdebian-12-standardtemplate, 2 cores, 2 GiB RAM, unprivileged, nesting enabled, DHCP on the chosen bridge. - Starts the CT and polls
pct exec <ctid> -- trueuntil it succeeds, so nothing tries to push into or exec inside a container whose init hasn’t come up yet. - Pushes the installer into the CT with
pct push. - Runs the in-container half with
pct exec, passing--shape lxcplus the resolved channel, version, and public key, and settingPROXPLOY_SELF_CTIDin its environment so Proxploy can recognize its own container at boot: the container Proxploy is running in is a protected destructive-action target, not just another CT in the list. - Prints the CT’s IP so you can browse straight to
https://<ip>/and create the first account.
Steps 2 onward are the same code path a plain Debian host takes for the in-container half; see What installing does to a node for what that half does.
Overrides
Section titled “Overrides”All of these have defaults; pass them only to override:
| Flag | Default | Meaning |
|---|---|---|
| --ctid | First free id ≥ 150 | The container id to create. |
| --storage | First storage with rootdir content | Where the CT’s root filesystem lives. |
| --bridge | vmbr0 | The network bridge the CT’s NIC attaches to. |
| --hostname | none (LAN install) | A public DNS name Caddy should request a Let’s Encrypt certificate for. Omit it for a LAN-only install; Caddy still serves TLS, via its own self-signed CA, on https://<ip>/. |
--channel and --version also apply here and are forwarded into the CT;
see Installing Proxploy for their defaults.
Two more flags exist for testing and staged rollouts rather than everyday
use: --pve-only stops after the CT is created and staged, without running
the in-container installer, and --dry-run stops right after pct create,
before the CT is even started.