Synology DS220+ DockerでTT-RSSをインストールする

今回は、Synology DS220+のDockerでTT-RSSをインストールして使えるようにしようという話です。

以前はDockerを使わずにTT-RSSをインストールし使っていました。

しかしある時から使えなくなっていたので、公式が推しているDockerというもので入れてみようと思い立ち、いろいろ悪戦苦闘の末、GoogleのAI検索に助けてもらって何とかなりました。

ベースの知識

まずはベースとなる知識についての概要。間違ってたらスマセン。

TT-RSSとは

RSSリーダー。自前のサーバにインストールして使う。スマホにTT-RSSのクライアントアプリを入れて読んだり、ブラウザでも使える。

さらにRSSとは、お気に入りのサイトを登録しておくとそのサイトが更新されたときに自動的に更新内容を集めてくれる仕組み。

RSSリーダーって20年くらい前にはみんなこぞって使ってた印象ですが、今はどうなんでしょう……あんまり使ってる人いないのかもね。

Dockerとは

最後までよく分かりませんでしたが……いろんなアプリケーションを「コンテナ」という単位にブロック化して、それを仮想マシンみたいな上で実行させる仕組み?

今回のTT-RSSも、TT-RSS本体、データベース、自動更新、というコンテナをDocker上で走らせる。「どのマシンでもDocker上で動作させるから実行環境が揃えられる」という担保が嬉しいってことなんでしょうか……?

TT-RSS公式もDockerで動作させるのを推奨しているとか。

手順

今回は、Synology DS220+にDockerを入れて、そこでTT-RSSを動作させるのが目的。

Container Managerをインストール

まずはDS220+にContainer Managerをインストール。Dockerという名前じゃないが、Container ManagerがDS220+上で動くDocker。

icon container manager

サブネットの設定は、既に被ってたりしなければデフォルトのままにする。

container manager ブリッジネットワークを構成

起動するとこんな感じ。

container manager 起動画面

ついでに、TT-RSSを入れるフォルダも作っておく。場所はたぶんどこでもいい。

/docker/tinyrss/app
/docker/tinyrss/db

これでContainer Managerのインストールは完了。

yamlファイルを作成

docker-compose.yaml というファイルを作って、/docker/tinyrss/ に置く。

以下、docker-compose.yamlの中身。dockerフォルダを置いた場所とかURLとかポート番号とかは適宜修正。あと「image: ***」のところは何かどこかにあるファイルを参照しているらしく、今後もしかすると変わってるかも。

# Docker Compose file for Tiny Tiny RSS with PostgreSQL
# additional install information and environemnt settings https://tt-rss.org/wiki/InstallationNotes/
services:
  db:
    image: postgres:16-alpine
    container_name: ttrss_db
    restart: unless-stopped
    environment:
       POSTGRES_USER: ${TTRSS_DB_USER}
       POSTGRES_PASSWORD: ${TTRSS_DB_PASSWORD}
       POSTGRES_DB: ${TTRSS_DB_DATABASE}
    volumes:
      - (dockerフォルダ置いた場所)/docker/tinyrss/db:/var/lib/postgresql/data:rw

  app:
    image: supahgreg/tt-rss:latest
    container_name: ttrss_app
    restart: unless-stopped
    environment:
       OWNER_UID: 1000
       OWNER_GID: 1000
       ADMIN_USER_PASS: ${TTRSS_APP_ADMIN_USER_PASSWORD}
       ADMIN_USER_ACCESS_LEVEL: 10           
       TTRSS_DB_USER: ${TTRSS_APP_DB_USER}
       TTRSS_DB_PASS: ${TTRSS_APP_DB_PASSWORD}
       TTRSS_DB_NAME: ${TTRSS_APP_DB_DATABASE}
       TTRSS_SELF_URL_PATH: (自分のサーバのURL):(適当なポート1)/
       HTTP_PORT: (適当なポート1)
       TTRSS_DB_TYPE: pgsql
       TTRSS_DB_HOST: db
       TTRSS_DB_PORT: (適当なポート2)      
    volumes:
      - (dockerフォルダ置いた場所)/docker/tinyrss/app:/var/www/html:rw
    depends_on:
      - db

  updater:
    image: supahgreg/tt-rss:latest
    container_name: ttrss_updater
    restart: on-failure:5
    environment:
       OWNER_UID: 1000
       OWNER_GID: 1000
       ADMIN_USER_PASS: ${TTRSS_UP_ADMIN_USER_PASSWORD}
       ADMIN_USER_ACCESS_LEVEL: 10           
       TTRSS_DB_USER: ${TTRSS_UP_DB_USER}
       TTRSS_DB_PASS: ${TTRSS_UP_DB_PASSWORD}
       TTRSS_DB_NAME: ${TTRSS_UP_DB_NAME}
       TTRSS_SELF_URL_PATH: (自分のサーバのURL):(適当なポート1)/
       HTTP_PORT: (適当なポート1)
       TTRSS_DB_TYPE: pgsql
       TTRSS_DB_HOST: db
       TTRSS_DB_PORT: (適当なポート2)
    volumes:
      - (dockerフォルダ置いた場所)/docker/tinyrss/app:/var/www/html:rw
    depends_on:
      - app
    command: /opt/tt-rss/updater.sh

  web-nginx:
    image: supahgreg/tt-rss-web-nginx:latest
    container_name: ttrss_web
    restart: on-failure:5
    ports:
      - 8280:80
    volumes:
      - (dockerフォルダ置いた場所)/docker/tinyrss/app:/var/www/html:ro
    depends_on:
      - app

volumes:
  db:
  app:   

そして、同じ場所に".env"というファイルを作って、下記内容を書いておく。.envファイルに書いてある内容をyamlファイルから参照する。

TTRSS_DB_USER=(ユーザー名)
TTRSS_DB_PASSWORD=(パスワード)
TTRSS_DB_DATABASE=postgres
TTRSS_APP_ADMIN_USER_PASSWORD=(パスワード)
TTRSS_APP_DB_USER=(ユーザー名)
TTRSS_APP_DB_PASSWORD=(パスワード)
TTRSS_APP_DB_DATABASE=postgres
TTRSS_UP_ADMIN_USER_PASSWORD=(パスワード)
TTRSS_UP_DB_USER=(ユーザー名)
TTRSS_UP_DB_PASSWORD=(パスワード)
TTRSS_UP_DB_NAME=postgres

これでファイルの準備はOK。

Container Managerのプロジェクトを作成

Container Managerを開き、プロジェクトを作成。

パスを指定すればyamlファイルを見つけてくれる。

container manager プロジェクト作成

Webポータル設定。よさげな設定だけどうまくいかなかったのでチェックつけずに進む。

container manager Webポータル設定

問題なければこれでプロジェクト作成は完了。

リバースプロキシ設定

ここはもしかするともっといいやり方があるかもしれないが、うまくいった方法を書いておく。

上記のyamlファイル内に記載した「適当なポート1」がTT-RSS用のポートになるが、それをブラウザで直接叩いてもTT-RSSまで届かない。「ブラウザで叩くポート番号」 → 「Docker上のTT-RSSで待ち受けているポート番号」に繋ぐ必要がある。

ということで、コントロールパネルを開き、ログインポータル → 詳細設定。

リバースプロキシ設定 コントロールパネル

下記のように設定。「yamlで設定したポート」に、「適当なポート1」を入れる。

リバースプロキシ設定 リバースプロキシ規則

これでちゃんとTT-RSSに届くはず。

確認

以上の手順で構築はできたはず。あとはブラウザで見てみて、TT-RSSのログイン画面が出れば成功。

まとめ

Synology DS220+のDockerでTT-RSSをインストールして使えるようにした話でした。

そんなに難しいことをしているわけではないと思いますが、結構苦労した……。DSMの良さげな設定を使おうとするとなんかうまくいかなかった。

広告