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。

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

起動するとこんな感じ。

ついでに、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ファイルを見つけてくれる。

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

問題なければこれでプロジェクト作成は完了。
リバースプロキシ設定
ここはもしかするともっといいやり方があるかもしれないが、うまくいった方法を書いておく。
上記のyamlファイル内に記載した「適当なポート1」がTT-RSS用のポートになるが、それをブラウザで直接叩いてもTT-RSSまで届かない。「ブラウザで叩くポート番号」 → 「Docker上のTT-RSSで待ち受けているポート番号」に繋ぐ必要がある。
ということで、コントロールパネルを開き、ログインポータル → 詳細設定。

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

これでちゃんとTT-RSSに届くはず。
確認
以上の手順で構築はできたはず。あとはブラウザで見てみて、TT-RSSのログイン画面が出れば成功。
まとめ
Synology DS220+のDockerでTT-RSSをインストールして使えるようにした話でした。
そんなに難しいことをしているわけではないと思いますが、結構苦労した……。DSMの良さげな設定を使おうとするとなんかうまくいかなかった。

