When I created this statically generated blog, I decided to not integrate comments. Mainly because there was no solution which suited my needs: self hosted, small, easy to use, nice look. For my personal website I used Juvia, but for my needs its too big and it seems that there is no development going on anymore. Here comes the solution: ISSO - “Ich schrei sonst” - A disqus alternative. It’s written in Python and very lightweight. Some features:
- Disqus import
- Small SQLite backend (because comments are not big data, says the website)
- Lightweight backend, most work is done on the client (JS)
- Up and Downvoting
- Threaded answers
- Possibility to edit or delete own comment during 15 minutes
- E-Mail notifications
- Comment moderation
The documentation is already very well. Just follow the installation docs.
I wanted to run an ISSO instance per domain under
/isso/, mainly to avoid troubles with
CORS or some browser security plugins. And as
I run all websites with TLS, it is the best choice to run such applications under the same URL.
But I had some troubles getting it to run with
mod_wsgi, running on a subfolder (not subdomain), as I’m really not a specialist on
running Python applications. Here are some steps to get ISSO up and running with
mod_wsgi on Apache:
Apache with mod_wsgi
mod_wsgi installed and enabled. On Ubuntu/Debian:
apt-get install libapache2-mod-wsgi && a2enmod wsgi && service apache reload
The needed Apache configuration is very simple, just add it to the VHost definition:
This tells the WSGI process to run under the configured user/group. Make sure that this user has read/write permission
/var/www/yoursite.com/isso. This is very important, because SQLite (which runs under this user) needs permission on
this folder to create and remove its lockfile. I had the strange behaviour that the SQLite DB file was not created as this
defined user (I don’t use
www-data!) but instead as the user running the Apache webserver (normally
www-data). So if
you have troubles with file access, just re-check the permissions on this folder.
If you want to run ISSO per domain, as I do, choose a unique
WSGIDaemonProcess name (like
Now create the WSGI file
/var/www/yoursite.com/isso/isso.wsgi, the following content is sufficient:
And of course, the config file
/var/www/yoursite.com/isso/isso.cfg needs to be created too:
The database is created on the first time the application is accessed.
Integration into Jekyll
It depends on the Jekyll templates used. As a starting point, here are some snippets I used to integrate it into the minimal-mistakes theme.
Jekyll site config:
Bonus: Tweet link for comments
I announce most of my posts on Twitter. So I added a new field to the front-matter
and enhanced the template
_layouts/post.html a bit:
Now I’m looking forward to many helpfull comments.