Packaged installs
Debian packages, the lazysite CLI, and per-site provisioning.
Packaged installs
Lazysite ships as Debian packages built from one source: a common engine package plus environment glue packages, replacing per-site sudo tarball installs. The same code also runs straight from a checkout or tarball - the CLI finds its payload relative to itself, so both worlds get the same front door.
The packages
lazysite-common- the engine payload at/usr/share/lazysite, thelazysiteCLI at/usr/bin/lazysite, man pages, thelazysite@FastCGI pool unit with/etc/lazysite/pools/, and the site registry (/etc/lazysite/sites.d/, one file per site). Installing or upgrading the deb refreshes the host payload only - it never touches a site tree.lazysite-hestia- HestiaCP integration: Apache web templates for both runtime patterns (lazysite-cgiandlazysite-fcgi) plus thelazysite-hestia-domainonboarding command.lazysite-apache/lazysite-nginx- plain-host webserver glue: commented vhost examples for both runtime patterns, pluslazysite-apache-vhost/lazysite-nginx-vhost(add/remove), root-run commands that render a domain's vhost intosites-available/and print - never run - the enable/reload steps. Both ship the multi-server wiring reference covering Apache, nginx, Caddy, lighttpd and the generic front-end contract.
The glue packages depend on the exact same version of
lazysite-common, so a host upgrades them as a pair.
The lazysite CLI
Verbs: provision, upgrade [--all], sites, check, users,
dev, demo, version. The load-bearing principle: no root writes
into site trees. provision and single-site upgrade refuse to run
as root; only upgrade --all may, because it drops to each site's
owner (sudo -u) per site - ownership is correct by construction,
with no chown-after repair pass.
Provisioning a site
sudo -u siteuser lazysite provision \
--docroot /home/siteuser/web/example.com/public_html \
--cgibin /home/siteuser/web/example.com/cgi-bin \
--domain example.com
provision fresh-installs the site from the host payload as the site
user and records it in the registry (docroot, cgibin, owner,
channel), so upgrade --all and fleet tooling can enumerate sites
without guessing paths. lazysite sites lists the registry with each
site's owner, channel, policy and installed version. Per-site
update_channel and update_policy decide which releases a fleet
upgrade may apply.
lazysite demo
The zero-argument try-it path:
lazysite demo
fresh-installs a scratch site (default ~/lazysite-demo) as the
current user and serves it on the built-in dev server (default port
8080) - no web server, no configuration. Re-running reuses the site;
remove it with one rm -rf. --port N and --dir PATH override the
defaults.
Hestia onboarding
With lazysite-hestia installed, one root-run command onboards a
panel domain:
lazysite-hestia-domain add USER DOMAIN [--channel edge|beta|stable] [--fcgi]
It prepares the panel-owned domain layout as root, then drops to the
panel user for lazysite provision, registers the site, and with
--fcgi writes the pool config and enables lazysite@DOMAIN.
remove stops the pool and deletes the registry entry while leaving
the docroot in place; list shows what is onboarded. The command
prints the matching web template (lazysite-cgi or lazysite-fcgi)
to select for the domain.