Вы решили прикрутить комментарии к своему сайту.
Разумные требования к такому решению:
- Должно разворачиваться быстро;
- Данные хостятся у себя;
- Есть авторизация через популярные соц.сети и/или мессенджеры;
- Кастомизируемо;
- Бесплатно. За комменты на сайте деньги платить? ?
Какие есть варианты?
- Готовые SAAS решения, типа Disqus. Отметаем сразу: комменты хранятся чёрт-знает где, данные посетителей ваших сайтов обрабатывает чёрт-знает кто и чёрт-знает как. Как минимум данные используют, что бы потом рекламировать вашим посетителям всякое, на основе их интересов. Зло ?
- Разработка своего решения. Если много времени и есть желание разбираться, что-то новое для себя изучить: почему нет. В остальных случаях идём дальше. Не быстро, требует навыков ??
- Модуль/дополнение/плагин для вашей CMS. Наверняка он есть, может быть даже неплохой. Нужно смотреть в каждом отдельном случае. Для движка этого сайта (Hugo) такого “модуля” нет. Ещё я знаю, что, например в Evolution CMS, MODx CMS так же есть некоторые сложности с такими модулями: нужно допиливать авторизацию через социальные сети, из “коробки” этого нет. Не быстро, требует допила ?
- Комменты на основе Matrix protocol. А такие есть, например Кактус.Чат. Веб 3.0, Децентрализация, Секьюрность, все дела. Но, будем честны. Время веб 3.0 ещё не пришло. Хочется авторизацию через всем понятные соц.сети
- Open source & selfhosted решения. То что нам нужно. А вы думали я про что-то другое тут буду рассказывать? ???
Сегодня расскажу о решении для этого сайта на базе Remark42.
Установка Remark42
Нам потребуется любая VDS. Подойдет самый дешевый тариф, я рекомендую sprintbox. Моя реферальная ссылка). Поднимем там докер контейнер, который будет использоваться как сервер для системы комментариев на сайте.
Вот такой docker-compose.yml получился у меня
version: '2'
services:
remark42:
image: umputun/remark42:latest
restart: always
container_name: "remark42"
environment:
- REMARK_URL= # Remark42 server's URL
- SITE= # site ID
- SECRET= # secret key
- ADMIN_SHARED_ID= # можно назначить админа
- AUTH_ANON=false # отключаем ананимусов
- AUTH_YANDEX_CID= # авторизация через яндекс
- AUTH_YANDEX_CSEC= # авторизация через яндекс
- AUTH_TELEGRAM=true # авторизация через телеграм
- TELEGRAM_TOKEN= # авторизация через телеграм
- AUTH_GOOGLE_CID= # авторизация через гугл
- AUTH_GOOGLE_CSEC= # авторизация через гугл
- EMOJI=true # включаем поддержку эмоджи
volumes:
- /DATA/remark42:/srv/var
ports:
- "95:8080"
Нужно будет создать приложения, для авторизации пользователей через соц.сети (Все эти CID и CSEC). Делается это быстро, хорошая инстркуция есть на офф сайте remark42.com
Потребуется реверс прокси, для того что бы прикрутить свой домен. Для этих целей я использую (и советую использовать) Nginx Proxy Manager. Он же умеет выпускать ssl-сертификаты и крутится так же, как и Remark42 в докер-контейнере. Очень удобно ?
В директории /DATA на сервере у меня лежат все пользовательские данные контейнеров, крутящих на нем. Эту папку я бекаплю с помощью syncthing при каждом изменении в ней.
95 внешний порт пробрасываем на 8080 контейнера, тут все понятно. Должно быть ?
Отлично. Теперь идем на сайт.
Открываем шаблон, где хотите разместить комменты. Для сайта на Hugo это /themes/layouts/posts/single.html, либо /layouts/posts/single.html
<script>
var remark_config = {
host: 'YOUR-SERVER-ADRESS',
site_id: 'SITE-ID',
locale: 'ru',
show_email_subscription: false,
simple_view: true,
}
! function(e, n) { for (var o = 0; o < e.length; o++) { var r = n.createElement("script"),
c = ".js",
d = n.head || n.body; "noModule" in r ? (r.type = "module", c = ".mjs") : r.async = !0, r.defer = !0, r.src = remark_config.host + "/web/" + e[o] + c, d.appendChild(r) } }(remark_config.components || ["embed"], document);
</script>
<div id="remark42"></div>
Всё. Работает.
Вот и они ?
Напишите шоли что-нибудь ???