Getting Started
Install SynaptikCMS in 3 easy steps, less than one minute to set up your new site. No database, no complex configuration.
Installation
SynaptikCMS requires no database setup, no complex configuration, and no command-line expertise. Simply upload the files to your web server, and you're ready to go.
- Download the latest version and extract the ZIP archive
- Upload the files to your server
- Visit
yourdomain.com/install.phpand complete the setup wizard (site name, site description, site language, admin password, admin folder name) - Go ahead and start creating your content!
Always run the installer before using SynaptikCMS.
install.php does more than configure your site, it sets up critical security protections:
- Writes
.htaccessrules to block direct access to/data/,/bckps/, and/private/ - Blocks PHP execution inside
/files/(your media folder) - Generates your admin credentials file
Skipping the installer leaves your data folders unprotected and your admin panel inaccessible.
After installation, delete install.php from your server.
Server requirements
Web server
| Requirement | Minimum | Notes |
|---|---|---|
| Web server | Apache 2.2+ | Nginx works but requires manual config — see below |
| PHP | 7.4 | Arrow functions (fn() =>) used in the data layer |
| Database | — | None required. Flat-file JSON architecture |
Required PHP extensions
| Extension | Used for |
|---|---|
json | All read/write operations on .json data files |
mbstring | Search engine, contact form validation, UTF-8 string ops |
hash | HMAC tokens (contact form CSRF, theme preview signing) |
session | Admin authentication |
pcre | Slug sanitization, HTML purification, content parsing |
filter | Email validation in the contact form |
fileinfo | MIME type detection on file uploads |
Required for image features
| Extension | Used for |
|---|---|
gd | Image resizing, thumbnails, JPEG/PNG/GIF optimisation |
| GD + JPEG support | .jpg / .jpeg uploads |
| GD + PNG support | .png uploads |
| GD + GIF support | .gif uploads |
GD is bundled with most PHP packages. Verify JPEG and PNG support are compiled in via phpinfo() → GD section.
Optional extensions
| Extension | Used for |
|---|---|
| GD + WebP support | WebP conversion via imagewebp(). Gracefully disabled if absent |
zip / ZipArchive | Theme upload via ZIP archive. The theme manager warns if missing |
Browser (admin panel)
| Browser | Minimum version |
|---|---|
| Chrome / Edge | 80+ |
| Firefox | 75+ |
| Safari | 13.1+ |
Internet Explorer is not supported.
Filesystem permissions
The following paths must be writable by the user under which your web server runs (typically www-data on Debian/Ubuntu, apache on CentOS, or your FTP account user on shared hosting):
| Path | Required for |
|---|---|
/ (root) | Writing settings.json, install.lock during setup |
/data/ | All content read/write |
/data/articles/ | Article JSON files |
/data/pages/ | Page JSON files |
/data/projects/ | Project JSON files |
/files/ | Media uploads |
/bckps/ | Database backup exports, CSS edits backups |
/private/ | Contact rate-limiting, CSRF secret |
/admin/ | Credential file write, draft autosave |
/admin/drafts/ | Autosave draft files |
/theme/ | Theme upload (ZIP import) |
Recommended:
- Directories:
755 - PHP files:
604(recommended on shared hosting) or644 - Static assets (CSS, JS, images):
644 - Data directories (
/data/,/private/,/bckps/):750
Apache configuration
Required modules
| Module | Why |
|---|---|
mod_rewrite | All front-end URLs (/article/my-slug/) route through index.php |
mod_authz_core | .htaccess access control on /data/ and /bckps/ |
Required directive
AllowOverride All
Must be set on the document root in your VirtualHost or httpd.conf. Without it, .htaccess files are silently ignored and URL rewriting stops working.
Root .htaccess rewrite block
RewriteEngine On
# If installed in a subdirectory, uncomment and set this:
# RewriteBase /your-subdir/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA,L]
Nginx (not officially supported)
The CMS works on Nginx but .htaccess has no effect. Replicate the rules manually:
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ ^/(data|bckps)/ {
deny all;
}
location ~ (settings\.json|data\.json|admin-credentials\.php)$ {
deny all;
}
Pre-flight checklist
[ ] Apache 2.2+ with mod_rewrite enabled
[ ] AllowOverride All set on the document root
[ ] PHP 7.4 or higher
[ ] PHP extensions: json, mbstring, hash, session, pcre, filter, fileinfo
[ ] PHP GD with JPEG and PNG support
[ ] ZipArchive (recommended — required for theme upload)
[ ] Root .htaccess in place and not overridden
[ ] Write permissions on: /, /data/, /files/, /bckps/, /admin/, /theme/
