KLYRN
KLYRN Web
All documentation
  1. Home
  2. Docs
  3. Sites

Sites

A site is a domain, a type and an account. KLYRN creates and owns everything underneath it: the Unix user, the pool, the vhost, the database and the certificate.

The five types

static
Files served directly by nginx. No PHP process.
php
A PHP-FPM pool running as the site's own Unix user, confined by open_basedir.
wordpress
A PHP site plus the database, wp-config.php with fresh salts, the admin user, permalinks, HTTPS and a real cron entry replacing WP-Cron. See WordPress.
node
A Node.js application behind nginx on a private port, in a sandboxed systemd unit with a memory ceiling. See Node.js.
proxy
nginx and TLS in front of something already listening on a local port.

The Sites list

The Sites page opens with four tiles: sites, sites that need you, sites waiting for DNS, and size on disk. Below them every site shows its status and its size, with a bar.

Each site's folder is measured in the background, so the size is current without slowing the page. Sort by largest first to find what fills the disk.

Administrators and resellers can select several sites and back them up, change their PHP version or delete them together.

Creating a site

klyrn site create example.com
klyrn site create example.com --type static
klyrn site create example.com --type wordpress --admin-email you@example.com
klyrn site create app.example.com --type node --runtime 22 --git https://github.com/you/app
klyrn site create api.example.com --type proxy --port 9000

Flags that apply to any type:

--type
php (the default), static, wordpress, node or proxy.
--php
A PHP version other than the server default.
--account
The hosting account. Derived from the domain if you do not say.
--no-ssl
Do not request a certificate now.
--no-www
Do not also serve www.<domain> as an alias.
--wait
Wait for the job and stream its log. On by default.

WordPress adds --title, --admin-user and --admin-email, which is required. Node adds --runtime, --git, --branch, --start and --build. Proxy needs --port.

The account is a real Unix user. Its home is 0710, owned by the account and grouped to www-data, so nginx can traverse it and no other account can list it. Two sites in two accounts cannot read each other's files.

Changing a site

One command sets the PHP version, the document root and the www handling.

klyrn site set example.com --php 8.3
klyrn site set example.com --docroot public/web
klyrn site set example.com --www none
klyrn site set example.com --memory-limit 512M --upload-max 64M --max-execution 120
klyrn site set example.com --reset-php     # back to the server defaults

Per-site PHP values are validated against bounds. Memory goes up to 4096 MB, uploads to 2048 MB and execution time to 3600 seconds. Input vars run between 100 and 100000. An upload limit larger than the post limit is refused with the reason. The panel shows the server default beside every field.

A document root is refused if it resolves outside the site tree, does not exist, is a symlink or is a file. Changing the PHP version removes the old pool before creating the new one, because both versions write the same socket path. For a moment there is no backend. If the new pool fails to start, KLYRN puts the old one back.

Suspension

Suspending swaps the vhost for a fixed page. Files, databases, backups, cron rows and certificates are never read, moved or deleted.

klyrn site suspend example.com --reason "invoice 4417 unpaid"
klyrn site unsuspend example.com

The suspended page answers 403 Forbidden. Every name the site answers for is suspended with it, aliases and redirects included. The TLS configuration is kept when the site has a valid certificate, so a visitor sees the page and no certificate error.

A suspension may only be lifted by someone at least as senior as whoever imposed it. The message says who imposed it and who may lift it. Reasons are capped at 300 characters.

Deleting a site

klyrn site delete example.com                  # keep the files
klyrn site delete example.com --remove-files   # remove the site directory too

Deleting removes the vhost, the pool, the cron entries and the database rows KLYRN created for the site. Backups are not deleted with it. To remove a whole account and everything under it, see Deleting an account.

Logs and secrets

klyrn site show example.com                    # details, certificate, recent jobs
klyrn site logs example.com --kind access --lines 200
klyrn site logs example.com --kind error
klyrn site logs example.com --kind php
klyrn site secrets example.com                 # WordPress admin and database credentials

Logs live at /home/<account>/logs/<domain>.{access,error}.log. Stored credentials are encrypted at rest. Revealing them is written to the audit log with who asked and from where.

Installing an app

The App installer puts Joomla, Drupal, Nextcloud, Laravel, Matomo, phpBB, MediaWiki or Grav on a site. Each is installed as the site's own account, and the panel tracks its updates. WordPress has its own type, described on WordPress.

Discord WhatsApp