KLXM Studio – Home
Get in touch

Installation

Ready in ten steps.

From the installation package to the green check. Examples for Plesk – on any other server with PHPWidely used programming language for websites. KLXM Studio is written in PHP and therefore runs on almost any common web hosting.php.net (opens in a new tab) 8.4 and HTTPSThe encrypted variant of HTTP: pages and form data are transmitted protected by TLS. Recognisable by “https://” in the address.en.wikipedia.org (opens in a new tab) it works the same way.

Requirements

What the server needs.

php bin/console health checks this automatically later.

  • PHP 8.4.1 or newer (FPM)

    Extensions pdo_sqlite, sodium, gd, mbstring, dom, fileinfo, intl, phar, zlib; optional curl, exif, pdo_mysql. proc_open allowed (backup now, AI jobs).

  • SQLite 3.35 or newer

    PHP uses the operating system’s SQLiteDatabase in a single file, without a separate database server. Ideal for small and medium-sized websites: easy to back up and to move.sqlite.org (opens in a new tab) library: Debian 12/13 and Ubuntu 22.04/24.04 are fine, RHEL/Alma/Rocky 8 and 9 are too old. Alternatively MySQLWidely used database servers for websites. MariaDB is a largely compatible, free continuation of MySQL.mariadb.org (opens in a new tab) per website.

  • Apache or nginx with HTTPS

    A front controller (all addresses to index.php); HTTPS is required for login, passkeySign-in without a password: a key pair is stored on your device and unlocked with a fingerprint, face recognition or PIN. Passkeys are largely immune to phishing.fidoalliance.org (opens in a new tab) and calendar subscriptions.

  • No Node on the server

    The installation package contains vendor/ and all built files. Composer 2, Node 22 and pnpm 10 only for development.

Step by step

How to install.

Commands run in the installation folder (via SSH, Plesk: “Websites & Domains → SSH terminal”).

  1. Get the code

    Either the installation package klxm-studio-<version>.zip from GitHub Releases (with vendor/ and checksum) – or clone the source and install the PHP dependencies.

    GitHub
    git clone https://github.com/KLXM-Opensource/studio.git
    cd studio
    composer install --no-dev
  2. Upload

    Copy the folder contents to httpdocs/ – without tools/node_modules, config/config.local.php, config/sites/ and the contents of storage/, public/media, public/sites, public/pools.

  3. Document root on public

    The domain points to httpdocs/public – code, database and keys stay outside the web root. PHP 8.4 or newer as FPM, display_errors off.

  4. Clean URLs

    Apache: these lines under “Additional Apache directives” (HTTP and HTTPS). nginx only: “location / { try_files $uri $uri/ /index.php$is_args$args; }” – the full nginx template is in the developer handbook.

    Apache & nginx settings
    FallbackResource /index.php
    # pass the Authorization header for API and MCP
    SetEnvIf Authorization "(.+)" HTTP_AUTHORIZATION=$1
  5. HTTPS and write permissions

    Enable the certificate with a 301 redirect. PHP may write to config/ (on first start), storage/, public/media, public/sites, public/pools, public/assets/ext and public/assets/fonts/installed.

  6. First request and first account

    The first request creates the database and config/config.local.php (with a random app_key and setup token); until the setup is done visitors see “A new website is coming soon”. Then open the setup – or create the account directly.

    /admin/setup
    php bin/console setup:token        # token and setup address
    php bin/console user:create name@example.org admin
  7. Choose kit and starter content

    After the first sign-in the welcome screen appears: choose a kitIn KLXM Studio, the package of design and building blocks for a website: layout, colours, fonts and the matching blocks. A kit can be adapted or switched – the content stays. and decide whether starter content (sample pages, example texts) is installed – or without: empty home page, legal notice and privacy policy as templates. You can also set it in advance:

    /admin/willkommen
    <?php // config/sites/default.php
    return ['hosts' => ['www.example.org'], 'theme' => 'basis', 'seed' => 'empty'];   // seed: full | empty | ask
  8. Set up

    Encryption (key pair for requests – the secret key is shown only once), e-mail sending with a test mail, canonical address; then the kit’s central details. The overview shows a checklist.

  9. Scheduled tasks

    Everything runs without cronScheduling service of the server that starts tasks regularly on its own – for example updating the search index, creating backups or fetching feeds.en.wikipedia.org (opens in a new tab), but some things only on the side. Recommended:

    Plesk → Scheduled tasks
    */15 * * * *  cd /path && php bin/console search:index --all
    30 3 * * *    cd /path && php bin/console search:index --all --full
    15 4 * * *    cd /path && php bin/console inbox:purge --all
    */5 * * * *   cd /path && php bin/console ai:jobs --all
    0 2 * * *     cd /path && php bin/console site:backup --all --keep=14
  10. Check

    All green? Then the installation is done. /health returns the same state without secrets for your monitoring.

    health
    php bin/console health

In detail with the nginx template, a custom admin address and special cases: developer handbook → Installation.

Contact

Talk to KLXM Crossmedia.

Installation, migration or hosting for your project – we are happy to help. We reply personally.

KLXM Crossmedia GmbH
Am Schürmannshütt 40g
47441 Moers
Germany