summaryrefslogtreecommitdiffstats
path: root/src/journal/2-comments.rst
blob: 7dffe53ecdf3a431367786c43975a03aa27fe0a6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
.. frontmatter
   title: comments
   date: 2014-10-15
   author: Johannes Löthberg
   author_link: /~kyrias/about.html

Finally set it up so that each journal entry gets a separate page generated for itself too in addition to being on the `journal index`_. Each entry gets a file in the ``/~kyrias/journal/`` subdirectory named after the entry source file but with the extension changed to ``.html`` instead of ``.rst``.

My first thought for which commenting system to use was disqus, but I don't really like using it at all in practice so I quickly decided against it. I do quite like discourse_ though and thought about setting it up, but that would require me setting up PostgreSQL and Redis, neither of which I feel like setting up nor that I would have any other use for, and both would use up quite a bit of resources for basically nothing, so discourse was out.

After looking around for a bit and finding a few disqus clones I finally found isso_, which is named after either a German abbreviation or after the 360th_ Pokémon’s name in German. While it’s probably the first alternative, the second sounds more fun so I’ll just go with that.

Isso is a rather simple commenting server written in python, uses Markdown for stylinx (hopefully I can get it to do reStructuredText too maybe), and using SQLite for storage which is a plus since it means I don't have to set up some big bulky SQL server. All you need to do to try it out is on the `quickstart page`_, but it roughly comes down to first installing isso (it’s installable through ``pip``), then writing a really short config file that tells isso where to store the SQLite database for comments and which hosts isso will be used on for CORS_. After that you just start isso up pointing it at the config file and it’s up and running. The client-side of isso is just ``script`` and ``section`` tag away, and then you’re done setting it up.

Isso has support for simple moderation where new comments end up in a queue and has to be manually activated by going through a URL that can be emailed to you if you want, and things like rate limiting new comments. All of it is documented on the `server configuration`_ and `client configuration`_ pages, and there's also some info on the isso API and things like a comment counter. I could continue rambling about what it supports, but that would be rather pointless since it’s written so nicely on their website.

Where I had some issues was getting it run properly under uWSGI_ and using NGINX_ as a reverse proxy, but it turned out after an hour of testing that I had installed uWSGI but not the python plugin. D’oh. Once I had that installed and added ``plugins = python`` to the uWSGI config file and adjusted my NGINX config file slightly since I run isso under a sub URI instead of on a separate domain it worked perfectly though.

Here’s the config files I’m currently using:

.. raw:: html

    <script src="https://gist.github.com/kyrias/f7ec681e1c8c2effdb7e.js"></script>

As far as I know the ``uwsgi_param HTTP_X_SCRIPT_NAME /isso;`` line is only needed if you’re running isso under a sub URI and I think it isn’t needed if you aren’t, but don’t quite me on that.

I have yet to set up the moderation part of isso though, and that’s probably what I’m going to play with next.

geros ilas.

.. _journal index: https://theos.kyriasis.com/~kyrias/journal.html
.. _discourse: http://www.discourse.org/
.. _isso: https://posativ.org/isso/
.. _360th: http://bulbapedia.bulbagarden.net/wiki/Wynaut_(Pok%C3%A9mon)
.. _quickstart page: https://posativ.org/isso/docs/quickstart/
.. _CORS: https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS
.. _server configuration: https://posativ.org/isso/docs/configuration/server/
.. _client configuration: https://posativ.org/isso/docs/configuration/client/
.. _uWSGI: http://projects.unbit.it/uwsgi
.. _NGINX: http://nginx.org/