Pico CMS Setup: Server Configuration, Plugins, and Twig Cache

A typical scenario: a client wants a "simple site without a database" but runs into WordPress slowdowns (LCP > 4 s) or heavy frameworks. The solution is [Pico CMS](https://en.wikipedia.org/wiki/Pico_CMS), a flat-file CMS in PHP with TTFB ~0.3 s. No database needed—content is stored in Markdown files

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

A typical scenario: a client wants a "simple site without a database" but runs into WordPress slowdowns (LCP > 4 s) or heavy frameworks. The solution is Pico CMS, a flat-file CMS in PHP with TTFB ~0.3 s. No database needed—content is stored in Markdown files. But deploying it correctly isn't just copying files: mistakes in .htaccess or nginx config kill performance. We'll show you how to install Pico CMS, set up the server (Nginx or Apache), add plugins, and speed it up with Twig cache. You'll get a site that loads faster than 95% of competitors on the same hosting, while saving up to 70% on hosting compared to WordPress. Contact us and we'll help configure Pico for your project.

How to Install Pico CMS via Composer?

Use Composer—it guarantees the latest version and simple updates. Alternatively, you can download the archive, but we recommend Composer. The code is available in the GitHub repository.

Criteria Composer Archive
Installation composer create-project picocms/pico-composer /var/www/mysite Download and unzip
Update composer update Manual file replacement
Version control Supported More difficult
Dependencies Automatically pulled Requires manual download
composer create-project picocms/pico-composer /var/www/mysite cd /var/www/mysite 

Five steps to a working site:

  1. Install Pico via Composer.
  2. Set permissions on config, content, cache folders (755 for folders, 644 for files).
  3. Create a web server config (Nginx or Apache).
  4. Open the site—you should see a placeholder.
  5. Add your first content in content/index.md.

Why Pico CMS Beats WordPress?

Pico CMS outperforms WordPress: on one project we replaced WordPress with Pico—TTFB dropped from 3.2 s to 0.2 s, and LCP went from 4 s to 0.5 s. The absence of a database reduces server load and simplifies backups—content is just files. Also, Pico doesn't require constant updates like heavy CMSs. Hosting savings can reach 70%, and page load speed improves Core Web Vitals (LCP, CLS) into the green zone. For example, after deploying Pico on shared hosting, TTFB rarely exceeds 0.3 s even at 10,000 visits per day.

What's Needed for Pico CMS Server Setup?

Nginx

Standard config with redirection to index.php and protection of service directories:

server { listen 80; server_name mysite.com; root /var/www/mysite; index index.php; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ ^/(config|content|lib|vendor|\.git) { deny all; return 404; } location ~ \.php$ { fastcgi_pass unix:/run/php/php8.1-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } 

Apache

Pico ships with a ready .htaccess. Just enable mod_rewrite:

RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^ index.php [QSA,L] <FilesMatch "\.(md|yml|yaml|twig)$"> Order allow,deny Deny from all </FilesMatch> 

Configuring config.yml and Plugins

The config/config.yml file defines site title, theme, date format, page order, and enabled plugins. Example working config:

site_title: My Site base_url: ~ # auto-detect theme: my-theme twig_config: autoescape: false cache: false # enable in production: 'cache/twig' debug: false date_format: 'd.m.Y' timezone: 'Europe/Minsk' locale: ru_RU.UTF-8 rewrite_url: true pages_order: by: alpha asc: true 

Plugins go in plugins/. Manual install: copy the plugin folder or use Composer. Pico automatically detects all plugins with a {PluginName}.php file. Essential plugins:

Plugin Purpose
PicoSitemap Generates sitemap.xml
PicoFeed RSS feeds
PicoSyntaxHighlight Code highlighting

Content Structure and Page Management

Content lives in content/. Files have .md extension. Sorting is by file name; to force order, use a numeric prefix: 01.about.md, 02.services.md. Files starting with _ are hidden from navigation (e.g., _navigation.md). Example structure:

content/ index.md 404.md _navigation.md about.md services/ index.md web-dev.md mobile.md blog/ index.md %year%/ my-post.md # /blog/2024/my-post 

How to Enable Twig Cache in Production?

In config.yml, change cache: false to cache: 'cache/twig'. The directory must exist and be writable. When content or templates change, clear the cache: rm -rf /var/www/mysite/cache/twig/*. This typically cuts page generation time by 50%.

Configuration Checklist

  • PHP 8.0+ with mbstring and dom extensions.
  • Permissions on cache and config folders: 755.
  • RewriteEngine enabled (for Apache).
  • Access to service folders denied.
  • Twig cache active.
Debugging Example If the site doesn't open, check the error log: `tail -f /var/log/nginx/error.log`. If you get a 500 error, enable debug in config.yml to see Twig errors.

What's Included in the Pico CMS Setup Service

We don't just install Pico—we configure it for your project. The service includes:

  • Deployment on the server (Composer or archive).
  • Nginx/Apache configuration with optimization (compression, caching).
  • Installation and configuration of basic plugins (sitemap, feed).
  • Enabling Twig cache for faster page loads.
  • Creating a content structure with sample pages.
  • Documentation for management.
  • Stability guarantee: over 5 years of experience with Pico, 10+ implementations.

Comparison with WordPress: Pico's TTFB is 8 times lower, and server load is minimal. Save up to 70% on hosting.

Order Pico CMS setup — get a ready-to-use site in 1 day. Contact us for a consultation.