The open source commenting engine; an alternative to Disqus.

Start/stop

Running with Podman:

sudo podman run --rm --name isso -d -v /opt/isso/config:/config -v /opt/isso/db:/db -p 8080:8080 wonderfall/isso

Running with docker-compose:

cd /opt/isso
sudo /usr/local/bin/docker-compose up -d

Runbook for starting a new site

1. Create the directory structure:

mkdir -p /opt/isso/comments.example.com/db /opt/isso/comments.example.com/config
touch /opt/isso/comments.example.com/db/comments.db
chown -R isso:isso /opt/isso

2. Create config file (./config/isso.cfg):

dbpath = /db/comments.db
host =
    http://www.example.com/
    https://www.example.com/
    http://localhost:4001/
notify = smtp
[server]
listen = http://0.0.0.0:8080/
public-endpoint = https://comments.example.com
[moderation]
enabled = true
purge-after = 365d
[guard]
enabled = true
ratelimit = 2
direct-reply = 3
reply-to-self = true
require-author = true
require-email = false
[smtp]
username = youremail@example.com
password = fuvvvvvvvvvvvv
host = smtp.example.com
port = 587
security = starttls
to = info@example.com
from = info@example.com
timeout = 10
[admin]
enabled = true
password = Henlo-Henlo-Henlo

3. Create a new Nginx virtual host config (/etc/nginx/conf.d/comments.example.com.conf):

server {
    server_name comments.example.com;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
        proxy_pass http://127.0.0.1:8087;
    }

    listen 80; listen [::]:80;
}

4. Add an A record in your nameserver (e.g. Cloudflare) to point to your server’s IP address, e.g. comments1.2.3.4

5. Restart nginx and test the new virtual host: curl -v comments.example.com

6. Run certbot -d comments.example.com to fetch and install a new SSL certificate.

7. Make a launch script (./launch.sh):

#!/bin/sh

echo "Starting isso..."
podman run -v /opt/isso/comments.example.com/config:/config:z -v /opt/isso/comments.example.com/db:/db:z --name isso-dc -d -p 8087:8080 docker.io/monodot/isso:latest

8. Run the launch script: sudo su - isso && /opt/isso/comments.example.com/launch.sh

DB pruning/editing

-- will show (describe) the structure of the 'threads' table
.schema threads

Moving posts from an old URL to a new one:

-- get the ID
select * from threads where uri like '%<old-url>%';

-- get the thread ID
select id from comments where tid = <old-url-thread-id>; -- no quotes!
select text from comments where tid = <old-url-thread-id>;

-- update
update comments set tid=<new-tid> where tid=<old-tid>;

API

Setup:

export ISSO_BASE=http://yoursite.com/isso

Get comments (for /path/resource-name/):

curl ${ISSO_BASE}/?uri=%2Fpath%2Fresource-name%2F

Troubleshooting

Comment notification emails aren’t being sent

  • Check logs (podman logs isso) - there may be something like “2020-08-06 17:14:43,727 ERROR: unable to connect to SMTP server”