[ ← Back Home ]

Last modified on March 17, 2024


Ports required: 80, 443

Table of Contents

Isso is a free and open source commenting server for people that want simple, self-hosted comments sections for their blogs.


This guide assumes you already have a static webserver up and running with nginx website roughly in this shape:

├── index.html
├── favicon.ico
├── posts
│   ├── article-1.html
│   ├── article-2.html
│   └── article-3.html
└── styles.css

Namely, each page you want to add comments to has its own url, as that’s what isso uses to distinguish each comments section.

You also will need a new subdomain pointed to this server; this guide assumes


Isso is not included in Debian 12’s repositories, so we’re gonna need to set up a python virtual environment to install it with pip.

Install dependencies first:

apt-get install python3-setuptools python3-virtualenv python3-dev

Then let’s download the latest release and set up our virtualenv:

cd /opt
curl -fLO$VERSION.tar.gz
tar xvf $VERSION.tar.gz
mv isso-$VERSION isso

Now, for the sake of security as well as and not breaking our root’s python packages, we’ll deploy our comments server with a new isso user:

useradd -m -d /var/lib/isso -s /usr/bin/bash isso
chown -R isso:isso /opt/isso
su isso
cd /opt/isso
virtualenv .
source ./bin/activate
pip install isso


Next, as root, copy the default config file to /etc and start configuring for our site.

cp /opt/isso/isso/isso.cfg /etc/isso.cfg

And make the following changes to that default file in etc:

dbpath = /var/lib/isso/comments.db
hosts =
public_endpoint =

This is the minimum configuration changes needed to get a working server, but you can learn about multisite hosting or RSS feeds or other optional features from the isso docs.


Now we need to run our commenting server.


First, let’s set up our reverse proxy to it.

Make a new config file at /etc/nginx/sites-available/

server {
    location / {
        include proxy_params;
    listen 80;
    listen [::]:80;

Then activate that config file:

ln -s /etc/nginx/sites-available/ /etc/nginx/sites-enabled/
systemctl reload nginx

Then we need to get our certs:

certbot --nginx -d --register-unsafely-without-email
systemctl reload nginx



Now let’s set up the frontend site. If we have a structure like this:

├── index.html
├── favicon.ico
├── posts
│   ├── article-1.html
│   ├── article-2.html
│   └── article-3.html
└── styles.css

Go to each article’s future comments section location, and add these scripts:

    <!-- header+post above -->

    <script data-isso="//"

    <section id="isso-thread">
         <noscript>Javascript needs to be activated to view comments.</noscript>

    <!-- footer below -->

Isso Server

Now we should be able to test out and see comments sections in our sites:

su isso

While isso is running on the command line, check your site on your browser and test out your new comments section.

Deployed isso comments section with anon commenting &ldquo;testing out isso comments!&rdquo;

Let’s kill the process and delete our test comments now:

rm /var/lib/isso/comments.db
exit # back to root

We will make a daemon to automate isso for us. Add this to /etc/systemd/system/isso.service:

Description=Isso Commenting Server



Activate said daemon:

systemctl daemon-reload
systemctl enable --now isso

Now enjoy your fully deployed commenting system!