インストール: Nextcloud News | NextcloudのRSSリーダー
概要
NextcloudのプラグインアプリにNews (Nextcloud News app) がある。これはRSSリーダーとなっている。NextcloudにNewsアプリをインストールすることで,NextcloudにRSSリーダー機能を追加できる。
OSSのRSSリーダーはいくつか存在しており,過去に「Tiny Tiny RSSのインストール方法」を紹介した。そのときは,Nextcloud Newsの存在を知らなかった。ここ1-2か月でNextcloud Newsの存在を知り興味をもった。
カレンダーや連絡先の管理のためにどうせNextcloudを使うのだから,その他の機能もNextcloudで統一できるならば,サブドメインの管理なども不要になり効率が良くなる。
そこで今回はNextcloud Newsのインストール方法と初期設定について整理した。
Nextcloud 15.0.6のNews 13.1.6で確認した。
インストール
まず,Nextcloudにログインする。その後,右上の [設定] ボタン>[Apps]を選択する。
[Multimedia] に [News] があるので,隣の [Download and enable] を選ぶ。
ダウンロードが完了すると,左上の [Apps Selection Menu] に [News] が追加される。
[Apps Selection Menu]>[News] を選ぶことで,News画面を表示できる。
インストール自体はこれで完了となる。
フィードの更新設定
ただ,デフォルトだと以下の警告が画面上部に表示されている。
Ajax or webcron mode detected! Your feeds will not be updated!
How to set up the operating system cron
Install and set up a faster parallel updater that uses the News app’s update API
警告にある通り,フィードの更新の設定が必要となる。表示されている「How to set up the operating system cron」や,NewsのFAQに掲載されている「Feeds are not updated」を参考にcronの設定を行う。FAQのほうが情報が詳しかったのでこちらを参考に設定する。
1. まずdata/news/config/config.ini
でuseCronUpdates = true
の指定があることを確認する。デフォルト値は以下のようになっており,特に修正する必要はなかった。
autoPurgeMinimumInterval = 60
autoPurgeCount = 200
maxRedirects = 10
maxSize = 104857600
exploreUrl =
feedFetcherTimeout = 60
useCronUpdates = true
2. 続いて管理画面からバックグランドジョブにCronを指定する。AJAXやWebcronだとフィードは更新されないらしい。
[Settings]>[Administration]>[Basic settings]>[Backgroud jobs]>[◎Cron] を選ぶ。
この設定により,Newsの画面の警告が消える。
3. 最後にcronでの定期実行コマンドを登録する。crontab -e
を実行するか,レンタルサーバーの設定で以下のコマンドを登録する。
php -f /var/www/nextcloud/cron.php
cron.php
はNextcloudのインストールディレクトリーの直下にあるので,自分のインストール構成に合わせてパスを変更する。
これでフィードの自動更新設定は完了となる。
フィードのインポート
最後に他のRSSリーダーで購読しているフィードをインポートする。事前に他のRSSリーダーでOPML形式でフィードをエクスポートしておく。
[News]>[Settings]>[Subscriptions (OPML)]>[Import] を選ぶ。
フィードの取り込みが始まる。リンク切れしているフィードなどはインポートに失敗してエラーが出るので注意する。
フィードのインポートが完了すると上記の画面が表示される。
結論
Nextcloud Newsのインストール方法を整理した。
軽く使ってみた限り,最低限の機能だけがあるように感じた。具体的には,以下の機能があるように感じた。
- フィードのカテゴリー分類
- スター
- フィードの更新無視
- インポート・エクスポート
代わりに,Tiny Tiny RSSにはある以下の機能はなかった。
- 公開フィード
- 既読履歴
個人的には,フィードの更新無視の機能が必要に思っている。リストとしてはもっておきたいが,更新頻度が短いのでフィードは読みたくない場合があったりする。
ただし,URLに日本語を含むとフィードを購読できないようだ。例えば,「https://article.hareruyamtg.com/article/tag/%e9%96%a2%e8%a5%bf%e5%b8%9d%e7%8e%8b%e6%88%a6/」のURLはTiny TIny RSSだと購読できるのだが,Nextcloud Newsだとエラーが出てうまくいかない。
具体的には以下のエラーが表示される。
FeedIo\Reader\NoAccurateParserException: No parser can handle this stream in /virtual/senooken/public_html/storage.senooken.jp/apps/news/vendor/debril/feed-io/src/FeedIo/Reader.php:174 Stack trace: #0 /virtual/senooken/public_html/storage.senooken.jp/apps/news/vendor/debril/feed-io/src/FeedIo/Reader.php(153): FeedIo\Reader->getAccurateParser(Object(FeedIo\Reader\Document)) #1 /virtual/senooken/public_html/storage.senooken.jp/apps/news/vendor/debril/feed-io/src/FeedIo/Reader.php(138): FeedIo\Reader->parseDocument(Object(FeedIo\Reader\Document), Object(FeedIo\Feed)) #2 /virtual/senooken/public_html/storage.senooken.jp/apps/news/vendor/debril/feed-io/src/FeedIo/Reader.php(117): FeedIo\Reader->handleResponse(Object(FeedIo\Adapter\Guzzle\Response), Object(FeedIo\Feed)) #3 /virtual/senooken/public_html/storage.senooken.jp/apps/news/vendor/debril/feed-io/src/FeedIo/FeedIo.php(286): FeedIo\Reader->read('https://article...', Object(FeedIo\Feed), Object(DateTime)) #4 /virtual/senooken/public_html/storage.senooken.jp/apps/news/lib/Fetcher/FeedFetcher.php(77): FeedIo\FeedIo->read('https://article...') #5 /virtual/senooken/public_html/storage.senooken.jp/apps/news/lib/Fetcher/Fetcher.php(68): OCA\News\Fetcher\FeedFetcher->fetch('https://article...', true, NULL, NULL, NULL) #6 /virtual/senooken/public_html/storage.senooken.jp/apps/news/lib/Service/FeedService.php(116): OCA\News\Fetcher\Fetcher->fetch('https://article...', true, NULL, NULL, NULL) #7 /virtual/senooken/public_html/storage.senooken.jp/apps/news/lib/Controller/FeedController.php(157): OCA\News\Service\FeedService->create('https://article...', 5, 'senooken', NULL, NULL, NULL) #8 /virtual/senooken/public_html/storage.senooken.jp/lib/private/AppFramework/Http/Dispatcher.php(166): OCA\News\Controller\FeedController->create('https://article...', 5, NULL, NULL, NULL) #9 /virtual/senooken/public_html/storage.senooken.jp/lib/private/AppFramework/Http/Dispatcher.php(99): OC\AppFramework\Http\Dispatcher->executeController(Object(OCA\News\Controller\FeedController), 'create') #10 /virtual/senooken/public_html/storage.senooken.jp/lib/private/AppFramework/App.php(118): OC\AppFramework\Http\Dispatcher->dispatch(Object(OCA\News\Controller\FeedController), 'create') #11 /virtual/senooken/public_html/storage.senooken.jp/lib/private/AppFramework/Routing/RouteActionHandler.php(47): OC\AppFramework\App::main('OCA\\News\\Contro...', 'create', Object(OC\AppFramework\DependencyInjection\DIContainer), Array) #12 [internal function]: OC\AppFramework\Routing\RouteActionHandler->__invoke(Array) #13 /virtual/senooken/public_html/storage.senooken.jp/lib/private/Route/Router.php(297): call_user_func(Object(OC\AppFramework\Routing\RouteActionHandler), Array) #14 /virtual/senooken/public_html/storage.senooken.jp/lib/base.php(987): OC\Route\Router->match('/apps/news/feed...') #15 /virtual/senooken/public_html/storage.senooken.jp/index.php(42): OC::handleRequest() #16 {main}
見た感じは悪くなかったので,Tiny Tiny RSSからNextcloud Newsに乗り換えようかと思ったのだが,このバグがあるのでしばらく様子を見ることにする。