Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

TinyTinyRSSの導入方法

More than 1 year has passed since last update.

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', '');

パーミッションの変更

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

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を変更入力して画面遷移するとエラーメッセージが表示されましたが、PWは変更されていました。

フィードの自動更新

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

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

ちなみに、以下のスクリプトを叩くと1分間隔でフィードを更新し続けます。

${TinyTinyRSSのパス}/update_daemon2.php

また、cronかsystemd/Timersでupdate.phpを叩くように設定しても自動で更新されます。実際の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自体はローリングリリース形式であるため、

git pull

でアップデート可能です。
DBの更新を伴うアップデートの場合はスクリプトのアップデート後、TinyTinyRSSの管理者アカウントでログインすると自動で更新されるそうです。

最後に

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

nemumu
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away