저는 이제까지 게시물 구독을 위해 Newsflow라는 OSX용 프로그램을 사용했었습니다. 하지만 언제부턴가 원인은 모르겠지만 동작이 이상해지더군요. 그래서 결국 TT-RSS로 이사를 결정했습니다.

TT-RSS를 선택한 이유는 일단 무료입니다. Newsflow는 유료였지만 무료 이벤트일때 구했었죠. 지갑 사정이 여의치 않으므로 돈을 쓰긴 애매했습니다. 그리고 집에서 놀고있는 서버를 써먹을 수 있다는 점도 한 몫 했습니다.

다운로드

이유는 모르겠지만 TT-RSS 공식 사이트는 한국에서 접속이 안됩니다. 다행히도 제가 TT-RSS를 깔고 싶어하자, 저기 접속이 가능하신분께서 GitHub에 미러를 만들어 주셨습니다.

Git이므로 그냥 손쉽게 clone하면 됩니다.

$ git clone https://github.com/dittos/ttrss-mirror.git

Nginx 세팅

보통 게시물을 찾아보면 Apache2를 사용하는데, 저는 Python 개발을 자주 하고, Apache의 특정 기능이 필요한 것이 아니라 그냥 PHP를 구동만 하면 되는 것이므로 Nginx를 설치해보기로 했습니다.

$ sudo apt-get install nginx

Nginx가 어디를 index로 잡고 있는지 확인해봅니다.

$ cat /etc/nginx/sites-available/default | grep root

제 경우엔 /var/www/html/로 되어 있었습니다. 이 위치는 중요하니 메모해둡시다. 앞으로 이 글에선 /var/www/html/이라고 가정하고 작성합니다. 값이 다르신 분들은 변경해서 작업해주세요.

PHP 세팅

TT-RSS는 PHP로 되어 있습니다. 설치를 위해서는 PHP가 가능한 환경이 필요합니다.

$ sudo apt-get install php5 php5-fpm

그 다음 php.ini에서 Engine = On으로 설정해줍니다.

$ sudo vi /etc/php5/fpm/php.ini

변경사항의 적용을 위해 서비스를 재시작합니다.

$ sudo systemctl restart php5-fpm

제대로 되었는지 테스트용 파일을 하나 만들어서 실험해봅시다. 다음 내용을 /var/www/html/test.php란 파일명으로 저장해주세요.

<?php
phpinfo();

그리고 접속이 가능한지 확인해봅시다.

$ curl localhost/test.php

PostgreSQL 세팅

TT-RSS는 MySQL과 PostgreSQL 중 한가지 DBMS를 선택하여 사용할 수 있습니다. 어차피 홈서버에 설치하는 것이니 PostgreSQL을 설치하기로 했습니다.

$ sudo apt-get install postgresql postgresql-contrib
$ sudo systemctl start postgresql

그 다음엔 User를 생성해야하는데 그러려면 postgres 유저의 권한이 필요합니다.

$ sudo su
# su - postgres

postgres 유저로 접근한 김에 postgres 유저의 비밀번호도 설정해주도록 하겠습니다. 이를 위해 psql을 실행합니다. \password를 이용해서 비밀번호를 생성해줍니다.

$ psql
> \password postgres
 ( 비밀번호 생성)
> \q
 (quit)

postgres 유저의 인증을 비밀번호로 할 수 있도록 변경해줍시다. 보안상 좋은 세팅은 아니므로 준비가 완료된 후에는 되돌리는게 좋습니다.

$ sudo vi /etc/postgresql/9.4/main/pg_hba.conf

여기서 METHOD에 해당하는 값(맨 뒷 값)들을 모두 md5로 바꿔줍니다. 이렇게 하고 나면 관리 작업을 비밀번호로 할 수 있습니다.

사용자 생성은 createuser명령어로 합니다.

$ createuser --interactive -P item4

사용자 이름과 매칭되는 Database도 만들어줍시다.

$ createdb item4

이제 볼 일이 끝났으니 logout합시다.

$ logout
# exit

의존성 설치

제 경우엔 PostgreSQL을 사용했으므로 php5-pgsql이 필요합니다. 또, TT-RSS가 php5-curl을 요구합니다.

$ sudo apt-get install php5-pgsql
$ sudo apt-get install php5-curl

파일 옮기기

아까 위에서 기억했던 /var/www/html/ 아래로 php 파일들을 옮겨다 놓습니다.

$ sudo mv ~/tt-rss/. /var/www/html/tt-rss

소유권과 권한도 바꿔줍니다.

$ cd /var/www/html/tt-rss
$ sudo chown -R www-data:www-data .
$ sudo chmod -R 777 cache/images
$ sudo chmod -R 777 cache/upload
$ sudo chmod -R 777 cache/export
$ sudo chmod -R 777 cache/js
$ sudo chmod -R 777 feed-icons
$ sudo chmod -R 777 lock

설치하기

http://localhost/tt-rss/ 로 접속하면 설치 화면이 나옵니다. 요구하는 정보를 모두 입력하시면 설치됩니다.

Daemon 세팅

TT-RSS는 백그라운드에서 실행될 데몬이 필요합니다. 저는 매번 실행하기 귀찮다고 판단, systemd에 추가해버렸습니다.

다음 내용을 /etc/systemd/system/tt-rss.service 란 이름으로 저장합니다.

[Unit]
Description=Tiny Tiny RSS Daemon
After=postgresql.service

[Service]
Type=oneshot
ExecStart=/usr/bin/php /var/www/html/tt-rss/update_daemon2.php
User=www-data

[Install]
WantedBy=multi-user.target

그 뒤에 이 명령어를 실행합니다.

$ sudo systemctl enable tt-rss
$ sudo systemctl start tt-rss

잘 되었는지 확인하기 위해 다음 명령어를 실행합니다.

$ sudo systemctl status tt-rss

로그인

기본 관리자 계정 정보는 admin / password 입니다.

이제 feed를 추가하고 확인해보시면 됩니다. 필요에 따라 계정을 추가하셔도 됩니다.

결과물

TT-RSS

예상 가능한 문제

1. 접속이 아예 안 됨

nginx가 켜져 있지 않으면 그럴 수 있다고 생각합니다. 다음 명령어를 실행해보세요.

$ sudo systemctl restart nginx

2. 설치중 DB에 접속할 수 없다고 함

postgresql 데몬이 켜져 있지 않으면 그럴 수 있다고 생각합니다. 다음 명령어를 실행해보세요.

$ sudo systemctl restart postgresql

3. 새 글을 자동으로 읽어오지 않음

TT-RSS 데몬이 잘못 설정되어있을 것입니다.

후기

상당히 유용한 툴임에는 틀림 없으나 입맛에 맛게 뜯어고치고 싶어진다면 꽤 곤란할 것 같습니다. 설치 방법은 꽤 간단히 글로 나왔지만, 사실 Linux 자체에 익숙치 못한 부분들로 인해 설치 도중에 상당히 많은 사고가 있었습니다. 그런 부분까지 모두 다루고 싶었지만 지금와서 되돌아보니 글로 정리하기엔 너무 잡다하더군요. 저의 경우는 Firefox 확장과 Android 어플을 이용해서 글을 구독하고 있습니다. 단독으로 써도 괜찮지만 다른 프로그램들과 같이 쓸 때 더 좋은 것 같습니다.