One command installs PXM on Ubuntu 22.04, 24.04 or 26.04. Run setup when it finishes to choose your runtimes, services and startup settings. Both ARM64 and x86_64 are supported.
Install PXM
Paste this into your terminal. PXM selects the correct build for your computer.
curl -fsSL https://pxm.sh/install.sh | bash
Follow the one-time shell or account instruction printed by the installer, then run:
pxm setup
Choose your PHP and Node.js versions, optional Bun and databases, and boot startup. Setup starts only when you run it.
What setup does
Choose a production server or a development computer, then select PHP, Node.js and any databases you need. Setup downloads verified packages, shows progress and explains the next step. PHP, Node.js, sites and HTTPS are free. New database services require PXM Pro; setup offers private license activation when needed.
Run pxm setup again whenever you want to add something. It preserves your installed runtime defaults and existing services. Existing databases keep their ports, passwords and data. Changing a live database engine or restarting an existing manager stays an explicit maintenance action.
The installer does not run setup automatically. It verifies the signed release and archive before installation, then prints the setup command. It needs standard Ubuntu tools: Python 3, OpenSSL and trusted HTTPS CA certificates. No compiler, Go, Docker, Homebrew or pip is required. If a system prerequisite is missing, the installer explains what it needs and asks before installing it.
Accounts and existing installations
Install as the ordinary account that will own your applications and databases. On a root-only server, the installer lets you select an existing account or create a dedicated pxm account, then prints the exact account and setup steps. For boot startup, run its printed administrator commands before switching accounts. They enable linger and wait for the account's service manager to start. PXM services run without root privileges, and the dedicated account receives no sudo privileges.
If your shell has not loaded the new PATH yet, follow the one-line instruction printed by the installer. Add that line to your shell profile if your account does not already include ~/.local/bin.
Running the installer again checks the installed executable against a verified PXM release. The current version stays in place; a newer release installs atomically. Configuration and running services stay intact. An unrelated executable or older Omarchy command is reported for you to resolve instead of being overwritten.
Unattended installation
For a fleet, explicitly choose the service account and setup options. Run this installer command as root only when selecting another existing account:
curl -fsSL https://pxm.sh/install.sh | bash -s -- --yes --user deploy
Then run setup as that account:
loginctl enable-linger deploy systemctl start "user@$(id -u deploy).service" sudo -iu deploy sh -c 'export PATH="$HOME/.local/bin:$PATH"; exec pxm setup --yes --mode production --php stable --node lts --service none --startup on'
For a normal user installing into their own account, omit --user. Add Pro activation with --license-file /absolute/private/license-key when selecting new paid services. Keep that file owned by the chosen account with mode 0600. Keys are never passed as command arguments or printed in setup output.
Unattended setup requires an explicit mode. Omitted selections are skipped. --php stable chooses the highest published stable PHP line, while --node lts selects the reviewed Node.js 24 LTS line. Existing defaults are preserved. Preview PHP remains an explicit runtime installation after setup.
Manual downloads
Prefer to install the archive yourself? Choose the matching architecture below.
PXM 0.7.0 is available for both architectures. Each archive contains the CLI, its release receipt and license notices.
ARM64
Archive SHA-256:
cccf5aa728794c1a1dd0ede020d920d1279cf2ec2a464a9281732fa6189a1b20
x86_64 (AMD64)
Download PXM 0.7.0 for x86_64 (AMD64)
Archive SHA-256:
5d74fe6a5e35bfb50e9df29a4a418481f890ef0214dbeb60f3e217d632055046
Signed stable release feed · Release verification
Run uname -m: aarch64 uses ARM64 and x86_64 uses AMD64. Download the matching archive, compare sha256sum with its listed checksum, and extract it into a private directory. For a new installation, run the following from the extracted release directory:
install -d -m 755 "$HOME/.local/bin" test ! -e "$HOME/.local/bin/pxm" && test ! -L "$HOME/.local/bin/pxm" && install -m 755 ./pxm "$HOME/.local/bin/pxm" export PATH="$HOME/.local/bin:$PATH" pxm setup
Keep the release archive for its receipt and third-party license notices. The executable and its directory must belong to your account, with no group or other write permission. PXM uses ~/.local/share/pxm-server and does not adopt another manager's data automatically.
Your first website
PHP, Node.js, sites and HTTPS are free features.
pxm php install 8.5 pxm php use 8.5 pxm node install 24 pxm node use 24 pxm web enable --email you@example.com pxm site add app.example.com /home/deploy/app/public --type php --php 8.5
Point the domain to the server and allow inbound ports 80 and 443. PXM does not change DNS or firewall rules. Enabling routing requests administrator access for its systemd unit; the router and application workers run as your unprivileged account. Read website operations before deploying a live application.
Add a database
New managed services and engine updates require PXM Pro. Existing services remain startable, backed up and recoverable offline.
pxm license activate pxm startup enable pxm service add mysql --name database pxm service start database pxm service env database
The last command explicitly displays credentials. Keep its output private. Default ports are MySQL 3306, PostgreSQL 5432 and Redis 6379. Database operations covers maintenance and recovery. To move a database you already run, follow the import guide.
Updates you control
pxm self-update --check pxm self-update # Schedule database maintenance before restarting its manager. pxm daemon restart pxm catalog php pxm php install 8.5 pxm node available pxm node install 24 pxm site update app.example.com --php 8.5 pxm site update node.example.com --node 24 pxm web update-check pxm web update pxm service update-check database pxm service update database
The CLI updater verifies the signed feed, archive checksum and architecture. Installing it leaves running services alone. During a maintenance window, daemon restart cleanly stops owned databases and starts those with autostart enabled. It also refreshes PXM's startup configuration so background features such as automatic site discovery work correctly after an upgrade. Others remain stopped. The separate router and website units are not restarted by this command.
Runtime installation and global selection do not silently replace a production site's pinned worker. Update the site when ready. Router updates use a graceful restart. Database engine updates stay within a compatible line; major migrations require an explicit import.
Only accepted packages appear in the catalogs. The publisher checks reviewed compatible lines and builds paired architectures on the build Mac when it is running and its dependencies are available. It does not publish unreviewed new major lines or guarantee immediate availability after an upstream release.