Commento: система комментирования для блога

Commento: система комментирования для блога

Долго ли, коротко ли, решил я добавить к блогу возможность комментирования. Внезапно оказалось, что Ghost, при все своем великолепии, все задачи по комментированию возлагает на сторонние решения. Ну да ладно.

Сначала я решил задачу, что называется, в лоб. Из всех систем комментирования, сколько их не есть, я шапочно знаком лишь с Disqus.  Но в свое время слыхал и про некоторые self-hosted решения вроде Isso и Schnack.

Залогинился в дашборде Disqus, добавил сайт. Отредактировал шаблон Atilla, добавив в post.hbs необходимый код загрузки.

Все заработало отлично.

Но недавно нашел статью о self-hosted системе комментирования Commento, решил попробовать. Также по теме Commento несколько раз писали на Хабре. В отличие от Disqus, данная система комментирования отличается малым количеством запросов, отсутствием рекламы и вообще, тотальной минималистичностью, что для персонального блога, пожалуй, скорее плюс, чем минус. Преимущества Commento из статьи на Хабре:

Архитектура системы несложная. Есть приложение Go, есть база данных Postgres. Чтобы не городить огород, я просто зашел в Portainer и добавил новый стек, куда скопировал код docker-composer.yml из репозитория Commento. Внес необходимые корректировки, добавил волум и по-читерски сменил версию 3 на 2, поскольку Portainer не поддерживает версию 3.

version: '2'

services:
  server:
    image: registry.gitlab.com/commento/commento
    ports:
      - 127.0.0.1:1800:8080
    environment:
      COMMENTO_ORIGIN: https://commento.rassvet-nf.ru
      COMMENTO_PORT: 8080
      COMMENTO_POSTGRES: postgres://postgres:postgres@db:5432/commento?sslmode=disable
    depends_on:
      - db
    networks:
      - db_network
  db:
    image: postgres
    environment:
      POSTGRES_DB: commento
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
    networks:
      - db_network
    volumes:
      - /var/www/rassvet/data/www/commento.rassvet-nf.ru:/var/lib/postgresql/data

networks:
  db_network:

Далее, в ISP Manager создал соответствующий домен, сгенерировал сертификат Lets Encrypt. После этого осталось добавить в конфиг хоста проксирование запросов Nginx на порт 1800:

location / {
proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header HOST $http_host;
    proxy_set_header X-NginX-Proxy true;
    proxy_pass http://127.0.0.1:1800;
    proxy_redirect off;
 }

Система загрузилась и заработала как надо.

Я зарегистрировал новый аккаунт. Система достаточно открыта, любой пользователь может зарегистрировать аккаунт и начать юзать мою инстанцию Commento, что, конечно же, недопустимо. Поэтому после регистрации аккаунта я просто отрубил роут с регистрацией в Nginx:

location /api/owner/new {
    return 401;
}

Осталось добавить в шаблон блога код для загрузки комментариев, что и было сделано:

<section class="post-comments" style="display:block">
			<script defer src="https://commento.rassvet-nf.ru/js/commento.js"></script>
            <div id="commento"></div>
		</section>

Все заработало без сучка и без задоринки. Надо сказать, Commento по сравнению с Disqus загружается просто космически быстро. Прогресс на страницах пропал от слова совсем.