TinyTinyRSSの導入方法

  • 5
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

TinyTinyRSSって何なん?

TinyTinyRSSとはサーバインストール型のRSSリーダーです。Feedlyなどクラウドサービスと比較して更新間隔や過去記事の検索などサービスによっては設定できなかったり有料プランを契約しないと利用できない機能を好き勝手に利用できる点がメリットです。

導入手順

Tiny Tiny RSSをダウンロードする

git clone https://tt-rss.org/git/tt-rss.git
mv tt-rss ${スクリプトを置きたいパス}

ユーザーとDBの作成 (MySQL)

MySQL以外のDBを使用している場合は適宜置き換えてください。
DB_USER_NAME(ユーザー名)やDB_USER_PW(ユーザーのパスワード)、DB_NAME(データベース名)は適宜置き換えてください。

CREATE USER 'DB_USER_NAME'@'localhost' IDENTIFIED BY 'DB_USER_PW';

DBを作成して権限を付与します。

CREATE DATABASE DB_NAME CHARACTER SET utf8;
GRANT ALL ON DB_NAME.* TO 'DB_USER_NAME'@'localhost';

初期テーブルの作成

shemaディレクトリ内にDBの初期化SQLが入っているため事前に実行しておく必要があります。(初回スクリプト実行時に自動で作成してくれたら良いのに..

mysql DB_NAME -u DB_USER_NAME -p < schema/ttrss_schema_mysql.sql

設定ファイルの編集

config.php-distというファイルに設定ファイルのサンプルが書かれています。このファイルを移動して拡張子を.phpに変更します。修正しないまま直接設定を書き込んで公開すると動作しないだけで無く設定ファイルを外部からダウンロード可能になりDBのID/PWが漏洩する可能性があります。(漏洩の可能性は低いにしてもこのは実装ダメでしょ

mv config.php-dist config.php

TinyTinyRSSを動作させるための設定ファイルを編集します。FEED_CRYPT_KEYはソースを読んでいないので正確な情報は分かりませんが恐らくパスワードをハッシュ化させる際のソルトだと思います。

config.php
define('DB_TYPE', "pgsql"); // or mysql
define('DB_HOST', "localhost");
define('DB_USER', "fox");
define('DB_NAME', "fox");
define('DB_PASS', "XXXXXX");
define('DB_PORT', ''); // usually 5432 for PostgreSQL, 3306 for MySQL

define('SELF_URL_PATH', 'http://example.org/tt-rss/');

define('FEED_CRYPT_KEY', '');

define('SELF_URL_PATH', 'http://example.org/tt-rss/');

パーミッションの変更

一応マニュアル通りにディレクトリのパーミッションを設定しておきます。 (配布時に設定しておけば良いのに...

chmod -R 766 cache/images
chmod -R 766 cache/upload
chmod -R 766 cache/export
chmod -R 766 cache/js
chmod -R 766 feed-icons
chmod -R 766 lock

あとはWebサーバの設定をすれば以下のようにブラウザからTinyTinyRSSの画面を見ることが出来るようになると思います。
ttrss.png

初期ID/PWはadmin/passwordに設定してあります。ログイン後にすぐ変更しましょう。ちなみにPWに記号を含めた値を入力するとエラーメッセージが表示されましたが変更されていました。

フィードの自動更新

以下のスクリプトを叩くとフィードが更新されます。

${TinyTinyRSSのパス}/update.php --feeds

cronかsystemd/Timersでこのスクリプトを叩く様に設定すれば自動で更新されます。実際のRSSフィードの取得はTinyTinyRSS内の設定(デフォルトだと30分間隔)で取得するため1分間隔でスクリプトを叩いてもフィード取得先サーバに負荷がかかることはありません。

以下はsystemd/Timersを利用して更新スクリプトを一分間隔で実行する設定にした際のユニットファイルです。

~/.config/systemd/user/ttrssUpdate-1min.timer
[Unit]
Description=Run TinyTinyRSS update script 1min


[Timer]
OnBootSec=1min
OnUnitActiveSec=55sec
AccuracySec=5sec
Unit=ttrssUpdate.service

[Install]
WantedBy=timers.target
~/.config/systemd/user/ttrssUpdate.service
[Unit]
Description=Run TinyTinyRSS update script

[Service]
Type=simple
ExecStart={TinyTinyRSS_PASS}/update.php --feeds

[Install]
WantedBy=default.target
systemctl --user enable ttrssUpdate-1min.timer
systemctl --user start ttrssUpdate-1min.timer

最後に

ざっくりと使ってみた感想ですがTinyTinyRSSの実装自体雑な部分もあるような気がするのでlet's encrypt+(Basic|Digest)認証を設定するなどして可能な限り外部からログインフォームを見えないように制限した方が良いと思います。(NginxはDigest認証を公式にサポートしていなくてつらい...