install.sh recognises the system by itself
-
Debian, Ubuntu
apt -
Fedora, RHEL, Rocky
dnf -
Arch Linux
pacman -
Alpine
apk -
openSUSE
zypper -
FreeBSD
pkg
It installs any missing system packages itself. On hosting without root access it simply skips this step.
Under the hood
Proven technology, nothing exotic
D-LIS Light stands on tools that thousands of developers know. If you ever want to build something on top, you will not be left with code nobody understands.
- Python 3.14 and Django 6
- A mature framework that runs large sites all over the world.
- SQLite, MySQL, PostgreSQL
- A small site starts on a single database file; a bigger one moves to a database server.
- Tailwind CSS
- A light look without heavy themes. You set the colours and typefaces in the panel.
- Over 1000 tests
- Every version passes the full set of automated tests before it reaches the update channel.
- Updates with a description
- The panel checks whether a new version is out and shows what changed in it.
- Linux and FreeBSD
- The install.sh script prepares the server and puts the site up with a single command.
Minimum versions
This much is enough to start
The installer checks Python and SQLite itself before it writes anything. It shows the minimum for a database server as you choose one, so that a version that is too old does not surface at the first connection.
- Python
-
3.12+
With the venv and pip modules. The CMS works in its own environment
.venv. - SQLite
-
3.37+
What counts is the system library, not the package from pip. The database works in WAL mode.
- MySQL / MariaDB
-
8.4+ / 10.11+
The mysqlclient driver, and where it is missing – PyMySQL, which installs on any hosting.
- PostgreSQL
-
15+
The psycopg 3 or psycopg2 driver. On FreeBSD the system packages are the easiest route.
Server
What it needs server
An ordinary server or hosting with Python support is enough. No cloud services, no paid licences and no outside accounts.
-
Python3.12 or newer
With the venv and pip modules – this is what the whole CMS runs on.
-
Web servernginx or another
It takes traffic over HTTPS and serves static files and photos itself.
-
Application servergunicorn, uWSGI, Passenger
It runs the CMS in the background; on your own server systemd keeps an eye on it.
-
HTTPS certificateLet’s Encrypt, free of charge
One certbot command and the certificate renews itself.
-
Databasedatabase server optional
With SQLite the whole database is one file. A database server is only needed for MySQL or PostgreSQL.
Only five Python libraries. Django, Pillow, cryptography, segno and python-dotenv – that is all the CMS pulls from requirements.txt. Fewer dependencies mean fewer things that can break on an update.
Database
Three engines to choose from, one panel
You choose in the installation wizard. The content, the look and the panel work exactly the same wherever the data lives.
SQLite
The whole database in one file
It needs no database server and no sign-in. It is enough for sites on a single server written by a handful of editors.
- Minimum
- SQLite 3.37
- Driver
- built into Python
- Backups
- from the panel, in one click
MySQL / MariaDB
The most common database on hosting
You will find the sign-in details in your hosting panel, next to the database you created earlier. The wizard installs the driver by itself.
- Minimum
- MySQL 8.4, MariaDB 10.11
- Driver
- mysqlclient or PyMySQL
- Backups
- mysqldump from the console
PostgreSQL
For bigger sites
When the site grows or stands on your own server. On Linux the driver installs in a few seconds.
- Minimum
- PostgreSQL 15
- Driver
- psycopg 3 or psycopg2
- Backups
- pg_dump from the console
With MySQL and PostgreSQL, create the database before installing
The wizard creates the tables in it, but not the database itself – and that is deliberate. An account that can create databases has rights to everything on the server, and a password like that should not lie in a file read at every start of the site. Create the database and a separate user in your hosting panel, and enter their details in the wizard.
Installation
Two routes, the same result
You have your own server – use the console. You have hosting with a control panel – open the wizard in the browser. Both routes check and save exactly the same things.
From the console: ./install.sh
Your own server with root access
- It recognises the system and installs the missing packages.
- It creates the environment
.venvand installs the libraries. - It asks about the database, the domain and the owner account.
- With
--sprawdzit only shows the plan and changes nothing.
In the browser: /install/
Hosting that supports Python applications
- It checks the Python version, SQLite and file permissions.
- It suggests the commands right for your system.
- It installs the driver for the chosen database on request.
- It leads you step by step, without a single command in the console.
Right after installation the site has
- tables in the chosen database
- an owner account for the panel
- a
.envfile with the server settings - an installation key that encrypts the passwords in the database
Installation happens once. Running it again will not overwrite the owner account or the domains of a running site.
Security
Protection switched on from day one
In production mode the safeguards switch themselves on. There is nothing to add to the server configuration and no plugins to look for.
- Forced HTTPS
- A redirect from http, the HSTS header and cookies sent over an encrypted channel only.
- Script policy (CSP)
- A foreign script injected into the content or an SVG file will not run in the browser.
- Encrypted service passwords
- The mail password in the database is encrypted with the installation key. A copy of the database alone will not give it away.
- Two-factor sign-in
- The panel can be entered with a code from an app on your phone, not with a password alone.
- Security headers as standard
-
Strict-Transport-SecurityContent-Security-PolicyX-Frame-Options: DENYnosniffReferrer-PolicyPermissions-Policy
Not sure whether your server is enough?
Write and tell us what hosting or server you have. We will say which installation route to take and which database to choose.