Commento - 무료 comment server

Commento.io

Commento demo

꽤 예뻐보이는 레이아웃이다. 댓글관리에 있었으면 하는 기능도 거의 다 있는 듯 하다. 서버가 없는 사람들은 최저 $5불에 사용도 가능해 보인다. Contributor는 무료로 해주는 거 같기도 하다.

그런데 오픈소스로 운영하기로 최근에 결정이 되었다. 그래서 월 $5짜리 VPS를 linode에 얻어서 직접 운영하기로 해봤다. 블로그 말고 다른 곳에도 쓸 수 있어 보였다.

References

HTTP or HTTPS

먼저 Caddy로 무료 HTTPS 운영하기를 참조해서 Caddy로 HTTPS 트래픽을 comment.madforfamily.com:8080으로 보내주면 된다. 이제 남은 일은 Commento를 comment.madforfamily.com:8080에서 운영하는 것이다.

만약에 그냥 HTTP로 운영하는 경우라면 아래에 나오는 https대신 http로 참조해야 할 것이다.

Spam filtering Akismet

Wordpress에서 쓰던 스팸방지 시스템인 Akismet이 지원된다. https://akismet.com에 회원가입하거나 로그인 후 Akismet Personal Subscription을 추가하면서 payment를 $0로 설정하면 된다. 이후 https://akismet.com/resend로 가서 API key를 얻을 수 있다.

SMTP

블로그 관리를 위한 MailGun 메일서버를 참조해서 mailgun을 설정한다. 이게 중요한 이유는, 댓글 관리자(Moderator)들이 새로운 댓글이 달렸을 경우, notification을 이메일로 받기 때문이다. Mailgun의 경우 월당 10,000건까지 무료고 설정도 쉬워서 선택했다. 지메일을 추가로 생성해서 써보려고 했는데, 잘 안되었다. 이유는 잘 모르겠다.

Moderator

댓글 관리자라고 생각하면 된다. 현 시점 기준으로, Commento는 댓글을 일목요연하게 볼 수 있는 dashboard를 지원하지 않기 때문에, 위에서 언급한 대로, 댓글 등록시 이메일을 받고 그 이메일을 통해, 댓글이 달린 게시글로 가서, 댓글들을 관리(승인/삭제/순위 조정/맨위에 고정)해야 한다.

댓글

익명 댓글 허용 여부, 댓글 자동 승인 여부가 가장 중요한 설정이라고 할 수 있다. 그리고 어떤 경우에 이메일을 받을 지도 상황에 따라 설정이 달라질 것이다.

docker-compose.yml

준비가 대략 된 듯 하다. 이제 필요한 디렉토리를 만들고 시작해보자.

cd ~
mkdir commento
cd commento

vi docker-compose.yml해서 다음의 내용을 붙여 넣는다.

version: '3'

services:
  server:
    image: registry.gitlab.com/commento/commento
    ports:
      - 8080:8080
    environment:
      COMMENTO_ORIGIN: https://comment.madforfamily.com
      COMMENTO_PORT: 8080
      COMMENTO_POSTGRES: postgres://postgres:postgres@db:5432/commento?sslmode=disable
      COMMENTO_FORBID_NEW_OWNERS: "false"
      COMMENTO_GZIP_STATIC: "true"
      COMMENTO_AKISMET_KEY: your_key_here
      COMMENTO_SMTP_HOST: smtp.mailgun.org
      COMMENTO_SMTP_PORT: 587
      COMMENTO_SMTP_USERNAME: postmaster@madforfamily.com
      COMMENTO_SMTP_PASSWORD: password_of_postmaster_in_mailgun
      COMMENTO_SMTP_FROM_ADDRESS: no-reply@madforfamily.com
    depends_on:
      - db
    networks:
      - db_network

  db:
    image: postgres
    environment:
      POSTGRES_DB: commento
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
    networks:
      - db_network
    volumes:
      - postgres_data_volume:/var/lib/postgresql/data

networks:
  db_network:

volumes:
  postgres_data_volume:

Service로 commento를 부팅시 자동 실행

systemd에 등록하면 된다. 먼저 sudo vim /etc/systemd/system/commento.service 한 후 다음을 붙여 넣는다.

[Unit]
Description=Commento service
After=docker.service
Wants=network-online.target docker.socket
Requires=docker.socket

[Service]
Restart=always
User=pointbre
Group=docker
# Shutdown container (if running) when unit is stopped
ExecStartPre=/usr/local/bin/docker-compose -f /home/pointbre/commento/docker-compose.yml down
# Start container when unit is started
ExecStart=/usr/local/bin/docker-compose -f /home/pointbre/commento/docker-compose.yml up
# Stop container when unit is stopped
ExecStop=/usr/local/bin/docker-compose -f /home/pointbre/commento/docker-compose.yml down

[Install]
WantedBy=multi-user.target

이제 systemd에 등록하고 시작해보자.

sudo systemctl daemon-reload
sudo systemctl enable commento
sudo systemctl start commento

docker ps해서 commento와 postgresql이 실행중인지 확인한 후 https://comment.madforfamily.com:8080에 접속해서 계정을 생성하자. 가입 후 인증 이메일의 링크를 클릭해야 계정 생성이 완료된다. 그리고 인증서도 확인해보자.

혼자서만 사용하려면

Commento 서버를 혼자 사용하려면 신규 사용자 추가를 막아야 한다. sudo systemctl start commento한 후 docker-compose.yml 파일안의 COMMENTO_FORBID_NEW_OWNERS: "false'COMMENTO_FORBID_NEW_OWNERS: "true"로 변경한다. 이제 sudo systemctl restart commento 실행해서 Commento에 접속 후 계정을 생성하려고 하면 forbid되었다고 나올 것이다.

사이트 생성

https://comment.madforfamily.com/에 접속해서 New Domain을 클릭해서 추가해준다. 웹사이트 URL의 경우 일단 등록되면 변경이 되질 않기 때문에, http인지 https인지도 1개만 정하는 게 좋다. https로 할 경우, http 접속시 자동으로 https로 리다이렉트시켜서 모든 접속이 https로만 가게 해야, commento내에서 1개의 사이트 아래에서 관리가 될 수 있다.

Post내에서의 comment 목록

Moderator로 등록한 상태에서는 다음과 같은 목록을 볼 수 있다. Logout/Sign In 눌러서 로그아웃/로그인할 수 있고, LOCK THREAD를 눌러서 추가 댓글을 금지할 수 있다.

각 comment마다 달린 버튼들을 보면, ①는 삭제, ②는 상단에 고정시키기, ③은 대댓글 달기, ④는 업/다운 투표, ⑤는 대댓글 줄이기이다.

Post내에서 목록

Email notification

Comment가 달리면 알림 이메일이 다음처럼 온다(설정 가능).

이미 승인된 댓글 알림

등록한 사용자의 댓글이 자동 승인되는 경우이다. 삭제하거나 댓글이 달린 글을 볼 수 있도로 링크가 달려있다..

이미 승인된 댓글 알림

승인 대기 댓글 알림

익명 댓글이거나, 승인 후에 등록되어야 하는 댓글인 경우이다. 승인하거나 삭제하거나 댓글이 달린 글을 볼 수 있는 링크가 있다.

승인 대기 댓글 알림

Hugo에 추가

Hugo theme - Academic를 참조해서 추가해준다. Html code와 Javascript, 딱 2줄만 해주면 끝이다.

Related