Install Isso server free with GCP

Isso is an open source comment system similar to Disqus and other paid comment systems, but without using heavy third party script that contain tracking and analystic functions. It use SQLite3 database to store comments since comments take very litttle space.

isso

If you are using CMS or blog engine that doesn’t support comments and you care about your website’s loading time and also don’t want your user to tracked by third party comment system. You should try Isso.

  1. Get a Linux server. GCP free tier is more than enough.

You will need a Linux server for Isso. It can be Detbian, Ubuntu, or Fedora etc. If you don’t have one, you can use Google Cloud Platform (GCP) and create an server with their free tier option. Comments system use very little traffic so you will not likely go over the free tier quota. Start a Linux server first from here

  1. Point a sub domain to your GCP’s external IP from step 1.

Using a domain is optional. But it is required if you want to use https your Isso link.

You can create an sub domain like isso.your_domain.com and set the IP to GCP instance’s external IP

  1. Install docker and docker-compose

Isso can be installed using docker. Easier to maintain and migrate if needed in the future.

If you are using Debian from step 1. You can install docker and docker-compose via follow commands.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# remove old docker installation
sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get update
# add required packages
sudo apt-get install apt-transport-https ca-certificates curl gnupg
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# add docker source list
echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

# install docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.28.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
# add current user to docker group
sudo usermod -aG docker $USER
newgrp docker

To verify docker and docker-compose installed correctly. Run following command and you should see the version installed.

1
2
docker -v
docker-compose -v
  1. Create docker-compose.yml for Isso

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
mkdir ~/Isso && cd ~/Isso
nano docker-compose.yml

# docker-compose.yml for Isso
# copy and paste below and ctl + x save

isso:
image: wonderfall/isso
ports:
- "8080:8080"
restart: unless-stopped
environment:
- GID=1000
- UID=1000
volumes:
- ./config:/config
- ./db:/db

  1. Create config file for Isso

Replace below conf with your own setup

[general] host: your website or blog domain
[hash] salt: put some random string (letters + number)
[guard] require-email: if you don’t require email for new comment, set it to false
[guard] require-author: if you don’t require name for new comment, set it to false
[smtp] username: for comment email notification, you can your gmail for this
[smtp] password: for the email password. If you are using gmail and have 2FA enabled, generate an app password and use that one instead of your gmail password
[smtp] to: where should the email be sent to when new comment posted.
[smtp] from: show where the email is coming from
[admin] enabled: this will enable the admin panel for Isso. Address will be your Isso domain:8080/admin
[admin] password: your password for the admin panel.

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
41
42
43
44
mkdir ~/Isso/config && cd ~/Isso/config
nano isso.conf

# config/isso.conf
# copy and paste below and ctl + x save

[general]
dbpath = /db/comments.db
host = https://www.qualityology.com
max-age = 1m
notify = smtp
reply-notifications = true
gravatar = true
[moderation]
enabled = true
purge-after = 30d
[guard]
enabled = true
ratelimit = 2
require-email = true
require-author = true
[server]
listen = http://0.0.0.0:8080
reload = off
profile = off
[markup]
options = strikethrough, superscript, autolink
allowed-elements =
allowed-attributes =
[hash]
salt = randomString123
algorithm = pbkdf2
[smtp]
username = no-reply@your_domain.com
password = change_to_your_password
host = smtp.gmail.com
port = 587
security = starttls
to = admin@your_domain.com
from = 'Isso comments system'<no-reply@your_domain.com>
timeout = 10
[admin]
enabled = true
password = yourPassword
  1. Start the Isso container

1
docker-compose up -d
  1. Setup Nginx

1
2
sudo apt-get update -y
sudo apt-get install nginx -y
  1. Install certbot for free SSL.

This is for your comment domain, not your website or blog domain. So you can call your Isso server with https.

1
sudo apt-get install certbot python3-certbot-nginx
  1. Generate SSL certificate for your Isso server

You will need to enter the sub domain from step 2 for this process.

1
sudo certbot certonly --nginx

Follow the steps and you will get the certificate fullchain.pem and privkey.pem path.

  1. Create a Nginx config for the Isso domain.

You will need to replace server_name with your sub domain below.

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
nano /etc/nginx/conf.d/isso.conf

server {
listen 80;
listen [::]:80;
server_name isso.your_domain.com;
return 301 https://comments.qualityology.com$request_uri;
access_log /dev/null;
error_log /dev/null;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name isso.your_domain.com;
access_log /var/log/nginx/isso-access.log;
error_log /var/log/nginx/isso-error.log;
ssl_certificate /etc/letsencrypt/live/isso.your_domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/isso.your_domain.com/privkey.pem;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://localhost:8080;
}
}
  1. Restart Ngnix

1
2
sudo service nginx restart
sudo service nginx restart
  1. You are all set.

You now should be able to use your Isso server. Calling your server from your website/blog with something similar to below script.

1
2
3
4
5
6
7
8
9
10
11
<script 
data-isso="//your_post_url"
src="//isso.your_domain.com/js/embed.min.js"
data-isso-require-author="true"
data-isso-require-email="true"
data-isso-avatar="false"
data-isso-gravatar="true"
data-isso-vote="true"
data-isso-reveal-on-click="true"
>
</script>
Let Docker and UFW Firewall work together Install Docker and Docker Compose On Raspberry Pi

Comments