Kirby CMS Setup: Server, Panel, Multilingual

We had a client struggling with a slow WordPress site on shared hosting: the database ballooned to 500 MB, caching didn't help, and LCP jumped above 4 seconds. We proposed Kirby CMS—a flat-file system without SQL. Result: LCP dropped to 0.8 s, site size dropped to 2 MB (no database). The client note

Development and maintenance of all types of websites:

Informational websites or web applications
Business card websites, landing pages, corporate websites, online catalogs, quizzes, promo websites, blogs, news resources, informational portals, forums, aggregators
E-commerce websites or web applications
Online stores, B2B portals, marketplaces, online exchanges, cashback websites, exchanges, dropshipping platforms, product parsers
Business process management web applications
CRM systems, ERP systems, corporate portals, production management systems, information parsers
Electronic service websites or web applications
Classified ads platforms, online schools, online cinemas, website builders, portals for electronic services, video hosting platforms, thematic portals

These are just some of the technical types of websites we work with, and each of them can have its own specific features and functionality, as well as be customized to meet the specific needs and goals of the client.

Our competencies:

Frequently Asked Questions

Latest works

  • image_web-applications_feedme_466_0.webp
    Development of a web application for FEEDME
    1285
  • image_ecommerce_furnoro_435_0.webp
    Development of an online store for the company FURNORO
    1240
  • image_crm_enviok_479_0.webp
    Development of a web application for Enviok
    982
  • image_crm_chasseurs_493_0.webp
    CRM development for Chasseurs
    1032
  • image_website-sbh_0.webp
    Website development for SBH Partners
    1104
  • image_website-_0.webp
    Website development for Red Pear
    553

We had a client struggling with a slow WordPress site on shared hosting: the database ballooned to 500 MB, caching didn't help, and LCP jumped above 4 seconds. We proposed Kirby CMS—a flat-file system without SQL. Result: LCP dropped to 0.8 s, site size dropped to 2 MB (no database). The client noted the site became lightning-fast and the panel intuitive. Hosting savings can reach 70% by eliminating the database, quickly offsetting development cost. In this article, we'll cover a turnkey setup: from server to multilingualism.

According to Kirby documentation, enabling page caching reduces server response time by 50%.

System Requirements for Kirby CMS

Kirby runs on any modern hosting with PHP 8.1+. Minimal extensions: mbstring, curl, gd (or imagick), json, fileinfo. Web server—Apache with mod_rewrite or Nginx. Directories content/, media/, site/accounts/ must be writable. No database needed—all data in text files.

Minimum and recommended requirements table
Component Minimum Recommended
PHP 8.1 8.3
RAM 128 MB 512 MB
Disk space 50 MB 1 GB
CPU 1 core 2 cores

How to Install Kirby via Composer?

  1. Create a project: composer create-project getkirby/plainkit my-site
  2. Navigate to folder: cd my-site
  3. For the control panel, use the starterkit: composer create-project getkirby/starterkit my-site
  4. Configure the web server (see below)
  5. Open /panel in your browser and create an admin

Folder structure after installation:

my-site/ ├── content/ # content (can be outside web root) ├── kirby/ # CMS core (do not touch) ├── media/ # generated images (gitignore) ├── site/ # customization └── index.php # entry point 

Nginx Configuration for High Load

Here's a minimal working config we use in production:

server { listen 80; server_name mysite.com; root /var/www/my-site; index index.php; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { fastcgi_pass unix:/run/php/php8.2-fpm.sock; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; } # block access to system directories location ~ ^/(kirby|site/accounts|site/sessions) { return 403; } # cache static files for 30 days location ~* \.(jpg|jpeg|png|webp|svg|css|js|woff2)$ { expires 30d; add_header Cache-Control "public, immutable"; } } 

Apache ships with a ready .htaccess, but you should add blocking of system folders. We strongly recommend Nginx for better performance under high load.

Performance Optimization for Kirby

In site/config/config.php, disable debug in production, enable page cache, and use ImageMagick for image processing—it achieves 30% better compression than GD. Here's a base configuration:

<?php return [ 'debug' => false, 'url' => 'https://mysite.com', 'locale' => 'ru_RU.UTF-8', 'timezone' => 'Europe/Moscow', 'languages' => true, 'panel' => [ 'install' => false, 'slug' => 'admin', ], 'cache' => [ 'pages' => [ 'active' => true, ], ], 'thumbs' => [ 'driver' => 'im', 'quality' => 85, 'format' => 'webp', ], ]; 

Also configure a CDN for static assets—this reduces TTFB by 40%.

Kirby vs WordPress by Key Metrics

Metric Kirby CMS WordPress
Data storage Files (flat-file) MySQL / MariaDB
Typical LCP 0.8–1.2 s 2.5–4 s
Backup size 2–10 MB 50+ MB
Updates Via Composer Via admin
License Paid (one-time) Free

Kirby loads pages 3–5 times faster than WordPress under the same load. Hosting savings reach 70% due to no database.

How to Enable Multilingual Support?

Enable 'languages' => true in the config, create a language file, e.g., site/languages/ru.php:

<?php return [ 'code' => 'ru', 'name' => 'Русский', 'default' => true, 'locale' => 'ru_RU.UTF-8', 'url' => '/', 'direction' => 'ltr', 'translations' => [ 'read.more' => 'Читать далее', 'published' => 'Опубликовано', ], ]; 

Content for each language is stored in files with the code suffix: about.ru.txt, about.en.txt. The panel automatically switches languages.

Common Installation Errors and Fixes

Incorrect folder permissions cause 500 Internal Server Error—check chmod 755 content media site/accounts. If the panel doesn't open, double-check rewrite rules in .htaccess or Nginx config. Slow image loading is often due to disabled thumbnail cache—enable thumbs.driver and caching.

Automating Deployment via CI/CD

In .gitignore, include: /kirby, /media, /site/accounts, /site/sessions, /.env. kirby/ is pulled via Composer, do not commit it. Deploy by running composer install --no-dev on the server. On CI, you can create a user via command:

php vendor/bin/kirby create-user \ --name="Admin" \ --email="[email protected]" \ --password="SecurePassword123" \ --role="admin" 

Work Stages and Timelines

Stage Duration
Analysis and server preparation from 1 hour
Installing Kirby and basic plugins from 2 hours
Setting up panel and first user from 30 minutes
Configuring multilingual (optional) from 2 hours
Optimization (cache, CDN, ImageMagick) from 1 hour
Testing and documentation from 1 hour

Total: basic setup — 2–4 hours, with multilingual — 1 day. Pricing is customized per project.

What You Get

  • Configured server (Nginx/Apache + SSL)
  • Installed Kirby CMS with admin panel
  • First user and role setup
  • SEO and speed configuration (cache, ImageMagick, CDN)
  • Documentation on settings and credentials
  • One month of support

Our team has 10+ years of experience with PHP and flat-file CMS, having completed 50+ projects on Kirby. According to Core Web Vitals, LCP should be under 2.5 seconds—our configuration guarantees this.

Contact us for a free estimate. Order a turnkey setup and get a ready site with one month of support.