Dropplets flat file CMS

Submitted by peter on Fri, 03/13/2020 - 20:54

Dropplets is a minimal flat file CMS, Content Management System, based on one file of code. The download is just 34 KB. This is about as small as you can get for a CMS and is really aimed at blogging, not a full function Web site.

Dropplets project goals

These are the goals of the Dropplets developers.

  • Application made up of only one file

  • 30 second install and setup

  • Simple post publishing form

  • Quick password-only access

  • Database-less platform

  • Works even when the user has disabled JavaScript

  • Under 2500 lines of code

One file is nice until you decide to use Object Oriented Programming, a case where you really need one file per class. The 30 install does not include proper security planning, setting, and review. A 2500 line code limit is a bit artificial and, presumably, refers only to code, not lines of documentation.

Managing a Dropplets Website

The following management instructions are straight out of the Dropplets README file. I may test each option.

  • Change settings at http://(your url)/setup

  • Add a new post at http://(your url)/post

  • Upload a new post at http://(your url)/postUpload

  • View the current Dropplets version at http://(your url)/version

  • Update to the latest version of Dropplets at http://(your url)/update


Create a regular test Web site. In my case I just have Nginx on my notebook running as my local user in my home directory. All the web sites are in the web/ subdirectory of my home directory.

I copy my basic Web site template as web/dropplets/. There is a subdirectory for logs, one for the Web HTML, and an Nginx config file for a generic site. All I have to do is edit the config file to change the generic domain name to dropplets.local. A quick edit of /etc/hosts adds the domain to the machine and a quick edit of web/nginx.conf adds the local configuration file to Nginx. Restart Nginx. Done.

Download the Dropplets code file. Switch off all network access.

Expand the downloaded file into web/dropplets/public_html. Fix a few code stupidities then start the site.


Ignore the supplied Nginx config as it is missing what you need. Use something the the following.

    try_files $uri $uri/ /index.php?filename=$uri;
    location ~ \.php$ {
        try_files $uri /index.php =404;
        include /etc/nginx/fastcgi_params;
        fastcgi_pass unix:/run/php/php7.4-fpm.peter.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
        fastcgi_read_timeout 300;


On first entry, http://dropplets.local redirects to http://dropplets.local/setup. The setup page requests Javascript from two domains, dropplets.local and gstatic.com. I am willing to allow Javascript from dropplets.local but not from a foreign domain.

In fact I switch off the network connection before any installation of software. There are just too many creeps out there sending the contents of our computers and details of all our activity off to foreign servers.

Setup displays the page heading: Let's create your blog

You supply a name for the blog, a name for you, a password, and a copyright message.

You select the default style sheet or choose to create one. I start with the default.

The testing is interrupted occasionally by a fault in the Web browser. You would think that after 25 years of developing Web browsers, a web browser could handle a basic request for a local Web site.

Blog only

Dropplets is strictly for posting simple items in a blog. There is no administration or options to use content from other sources. I will delete my test and not use Dropplets for anything.


I want more than a blog. Dropplets does not provide enough functionality for my use.