As an initial approach, the Disqus commenting platform was used on this site. Disqus is nicely integrated in Hugo and so getting this service up and running a static site is not a big deal.

(Hugo is a static site generator which allows you to create web sites completely independently of any web service and off-line on your local computer).

Although after a while of usage (and very little comment activity), I felt I need to replace Disqus for various reasons. Ideally a commenting system should be open source, easy to install, self-hosted and I also would like to use sqlite as database backend.

After searching for quite a while in the web for such a candidate, I stumbled upon HashOver. (Hashover did not even claim to have support for sqlite but in the latest/newest release 2.0 there is!)

Hashover goodies:

  • free and open source PHP comment system, find more information here:
  • self-hosted system which allows completely anonymous comments to be posted, the only required information is the comment itself.

HashOver - installation in brief:

The following is more or less a cheat sheet for me to remember the steps required to get HashOver installed.

  • To install an add-on software, I usually create a sub-domain with a dedicated directory.

    This allows me to organize the directory structure on the server as I want to. No need to create any re-directions on the web server, no need to mess around with apache’s .htaccess file.

To install HashOver on a sub-domain the following step are required so far:

  • create a sub-domain on the provider’s portal e.g. like

        sub domain-name:
        directory:       /my-domain-name.domain/cmd
  • download the HashOver software from github and copy it with ftp (filezilla) onto the webserver

    the web server directory might look like:

    Note: There is HashOver version 2 available already, so I opted for this new release.
  • once done, the following files need to be edited and configured as described in the documentation

    • /my-domain-name.domain/cmd/hashover/backend/classes/secrets.php
    • /my-domain-name.domain/cmd/hashover/backend/classes/sensitivesettings.php
    Please note:
    In the sensitivesettings.php the hostname of the sub-domain needs to be entered
    otherwise HashOver will throw an error such as: “hashover external use not allowed
  • once done, HashOver’s admin panel should be already fully functional, go to the url to test:

  • but wait - latest PHP version needs to be enabled on the provider’s site which for the moment is PHP 7.X.X stable.

Hugo site configurations:

To enable commands on each individual blog page is pretty straightforward:

  • head.html:

    Found out that since the latest version 2 this is not required/valid anymore:

    <!-- hashover -->
    <link href=""
          rel="stylesheet" type="text/css">
  • single.html

    To initialize the comments system, place the following code whereever it’s suitable.

        <!-- page comments -->
        {{ if not (in (.Site.BaseURL | string) "localhost") }}
            <div id="hashover"></div>
            <!-- load asynchronous -->
            <script type="text/javascript">
                (function() {
                    var s = document.createElement('script'),
                    t = document.getElementsByTagName('script')[0];
                    s.type = 'text/javascript'; s.async = true;
                    s.src = src="";
                    t.parentNode.insertBefore(s, t); })();
        {{ else }}
            <h2 style="color:Orange;"> Comments will appear here! </h2>
        {{ end }}

At this stage the comments should be fully operational. O.k. not locally, while developing and editing the static site, but on the web-server after transfering the site onto the provider’s web-space.

Admin Panel:

The admin panel can be reached via the site’s address e.g. like:

Known Problems:

  • If cookies are disabled, is is not possible any more to login as admin. So, for the moment, cookies must be enabled.

    Settings are managed by the following JSON file: /hashover/config/settings.json

  • Comments are not shown on outdated browsers and javascript must be enabled.

  • Need to figure out, how the gravatar works - I do not have a clue for the moment …

Solved Problems:

  • Problem with notification e-mail: figure out that the sendmail configuration option works fine!

Upgrade to a newer version (modified at: 2020-05-02)

The following cheat sheet is only valid for Hashover V2 for now and as long there is no major change in the hashover source:

  • download the latest/newest source from github

  • backup the actual environment

  • in the new file repository, the following files needs to be replaced/copied over from our actual repository

    • …hashover/backend/classes/secrets.php
    • …hashover/backend/classes/sensitivesettings.php
    • …hashover/config/settings.json
    • …hashover/comments/hashover.sqlite
  • rename / remove the actual repository on the web server’s share

  • copy the repository onto the web server as usual

  • in case, something went wrong, restore backup and try again.