A word of warning

Drukkar 2 has been deprecated. There will probably be no updates released for it unless a major bug is found. Consider using a static site generator instead. Contact the developer if you want to take over the maintainership of this project.

Tags: deprecation


Drukkar is a small blogging software program and CMS made with the following in mind:

  • minimum page overhead — the content should account for most of your web traffic
  • working without a database
  • ease of releasing files with your posts

Each blog entry (post) in Drukkar is stored as a separate XML file in a directory. The clean, compact and correct HTML 4.01 Strict that Drukkar generates is well-suited for projects accessed over slow connections like GSM networks, modems or Tor.

Example uses of the file posting feature include:

  • a game developer posting alpha versions of his or her game
  • a government organization releasing forms and other documentation to the public — this is what Drukkar was initially developed for

The fact that Drukkar uses XML files to store its blog entries and configuration is either a big strength or a weakness depending on your needs. It is easy to set up on any server with PHP 5, including in a user's public_html directory, however, Drukkar may not easily scale beyond a certain number of hits per day without external caching.

Visit our SourceForge project page for downloads and contacts, browse the code or read the manual below to get a taste of what it is like to work with Drukkar. This blog is powered by Drukkar.

The name "Drukkar" is a play on Ukrainian "друкар", meaning "printer" (the profession, not the peripheral).

Tags: hello

The manual

Getting started

The configuration file

Before you can use your blog you must edit its configuration file and set the basic settings (like where Drukkar is installed, what are your blog's title and URL, what password will be used to add and edit blog entries, etc.) correctly. The configuration file is named config.xml and can be found in Drukkar's main directory; it stores all the settings for your blog in XML format. The comments inside explain what each setting means.

The bare minimum needed to run Drukkar on the public web is to make sure the variable base_location contains a correct value and password is changed from the default.


For you to be able to use edit.php to create and edit blog entries your web server's *nix user must have write permissions for your directory (entries by default). To upload files it must have write access to files. The same applies to being able to use files.php.

If you are getting write errors when viewing your blog, editing entries or uploading files and can't give your web server's user write access to your entries, files and cache directories from the command line or through your FTP/SFTP client (that is to say, you're not allowed to chown or chmod those directories) do the following:

  1. Remove the entries, files and cache subdirectories from your Drukkar directory (e.g., drukkar-dir) on the server.
  2. Give everyone temporary write access to that directory (e.g., through chmod a+w drukkar-dir ). Note that you should give write access only to the directory itself; permissions on its files don't matter. This will allow your web server to create subdirectories that belong to its user.
  3. Recreate entries, files and cache subdirectories using makedirs.php. To do so access http://example.com/drukkar-dir/makedirs.php with your browser.
  4. Revoke write access from the Drukkar directory (e.g., chmod a-w drukkar-dir)
  5. Place appropriate .htaccess files in the subdirectories.

Managing blog entries

Let's assume you've installed Drukkar under http://example.com/drukkar-location/. To add, edit or delete entries go to http://example.com/drukkar-location/edit.php. To manage files, both attachments and the XML files that contain blog entries, go to http://example.com/drukkar-location/files.php. The default password is "password" (without the quotes). Note that when you delete an entry the files you uploaded when you created it aren't gone; you have to delete them manually.

Nuances and details


Each blog entry can have one or more tags attached to it that indicated what this entry is about (e.g., you can have tags like "business", "cooking", "TI-89", "April 2013 report"). The tags an entry has are displayed underneath its text and are links. Your users will be able to list all entries that have a certain tag by clicking on that tag. You can add tags to an entry by putting them in the "Tags" field when using edit.php, one per line.

Entries that are hidden and excluded from listing

Two tags have special meanings, _excluded and _hidden. You can use them to hide certain blog entries from the public in two distinct ways for different purposes.

An entry marked as "excluded" won't be show up on the main page of your blog but can still be found through full text search or by looking up entries with a tag it has. This feature is useful to keep some entries away from your main page (e.g., special pages like "About Us" and "Contact"). To mark an entry as excluded add the tag _excluded (with the underscore) to its tag list.

Hidden entries are more private. To mark an entry as hidden add _hidden to its tags. A hidden entry can only be viewed by someone who got a direct link to it. Hidden entries don't show up in search.

Users can't get the list of entries tagged _excluded or _hidden and they don't show up in the tags list when viewing an excluded or a hidden entry.


Drukkar doesn't have built-in support for comments.


First, to have the correct local date and time displayed under your blog posts and in your RSS feed set the value of time_zone in config.xml to your local time zone (the default is UTC/GMT). Consult this list of time zones for all possible values you can use.

To make Drukkar's messages appear in your language of choice you need a localization file. If you can't find one for your language you can create one with relative ease. Once you've got the file you'll need to change the locale setting in config.xml.

First, look into the /inc directory of your Drukkar installation and see if there is a file named loc_xx.php where xx is the two-letter code for your language. If there is one you can skip the following step.

If you can't find a localization file for your language you can create one by copying /inc/loc_en.php into a new file named loc_xx.php (where xx is the two-letter code for your language). Proceed to translate the strings in loc_xx.php into your language. Take note of the %s symbols that occur in strings. These symbols are substituted for file names in messages displayed to the user; do not remove them.

When that's done change the locale value in config.xml to your language's code and see if everything works properly.

Make sure to submit your translation to the Drukkar project to help out other users who speak your language.


By default Drukkar sends your password in plaintext. In order to access edit.php and files.php securely you need to set up SSL (HTTPS) support on your server.

Make sure to specify salt in config.xml to make it somewhat harder to crack your password if its hash gets leaked.

That's it

You are now ready to make your own blog with Drukkar.

Tags: manual


  • Fixed empty document title when no post is specified.
  • Fixed sidebar content being shifted to the right.
  • The big change this release is the introduction of theming. You can select what theme your blog is going to use with the theme setting in config.xml.
  • A new default theme called flat. The old theme is still available under the name web1.0 and has been improved to accommodate the new elements (see below).
  • A navbar and a sidebar have been added to the layout. (See the screenshots on the project page.)
  • New blog entries' file names will include their titles. Due to this generating links with titles is obsolete and the setting entry_links_with_titles has been removed from config.xml.
  • This is version 2.0.0. Drukkar will use semantic versioning for any subsequent releases.
  • Replaced the tables used for layout with div tags with minimum changes to the CSS.
  • The big one: Drukkar now implements caching for every dynamically generated page a visitor can see (plus opt-in search caching). Caches expire when the files used to generate them (data or code) are updated. This should decrease the CPU usage on your server dramatically.
  • files.php now includes a text file viewer.
  • The dynamically generated HTML code, including that of administrative pages, has been made more human-readable, with line breaks in all the right places.
  • Lots of little optimizations related to string operations.
  • The PHP code has also been reformatted to look better and fit the standard 80-column view.
  • Post dates are now time zone-aware. You'll need to set time_zone in config.xml to the correct value for your locale.
  • Code documentation rewritten for compatibility with Doxygen.
  • Fixed pagination when looking up tags or searching.
  • RSS feed added. A link to rss.php has been added to the footer.
  • Drukkar now ships with a favicon.
  • Added support for writing entries in Markdown with Michel Fortin's PHP Markdown.
  • Boolean settings and entry_date_from_file_name now work correctly.
  • A new setting in the config file: show_dates.
  • Security and early error detection improved by eliminating type-coerced comparisons and introducing explicit type conversions.
  • The default admin session time-out value is now sane (10 minutes instead of 10 seconds).
  • Various small improvements.
  • Admin sessions now expire.
  • Passwords are now hashed with salt.
  • makepass.php added for generating password hashes.
  • Some security fixes.
  • The way tags work has been changed.
  • Numerous internal changes.
  • The initial open-source release.

Tags: changelog