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:
- Install Pico via Composer.
- Set permissions on
config,content,cachefolders (755 for folders, 644 for files). - Create a web server config (Nginx or Apache).
- Open the site—you should see a placeholder.
- 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.







