Google CloudでTiny Tiny RSSを動かしてみようと思います。基本的に自分用の備忘録です。
まずはGCE上でTiny Tiny RSSを動かすところまでやってみます。
環境
今どきはTiny Tiny RSSもDockerで動かすようなので、Containers on Compute Engineを参考にGoogleが提供しているContainer-Optimized OSを使ってみます。
docker-compose.ymlを見ると、WebサーバはNginx、DBはPostgreSQLを使っているようです。
GCEのVMインスタンスを起動
以下の設定でVMインスタンスを起動します。
-
Machine typeはとりあえずCompute EngineのFree tierが使える
e2-micro
を選択。 - Boot diskのImageはOperating system
Container Optimized OS
の中からFamily: cos-stableとなっているバージョンを選択。 - Firewallsの設定のAllow HTTP trafficをチェック。
-
Using Cloud Logging with Container-Optimized OSを参考に、Custom metadataにkey=
google-logging-enabled
, value=true
を追加してロギングを有効化。
各種ソフトウェアのインストールと設定
SSHでログインして作業します。
$ sudo timedatectl set-timezone America/Los_Angeles
Running Docker Compose with Dockerを参考にContainer Optimized OSでdocker-composeを使えるようにします。
z80@cos-tt-rss ~ $ docker run docker/compose:1.29.2 version
Unable to find image 'docker/compose:1.29.2' locally
1.29.2: Pulling from docker/compose
339de151aab4: Pull complete
484a7070e879: Pull complete
6391cb0e5266: Pull complete
aaaf585806ed: Pull complete
Digest: sha256:ae66070588c539b965986dc74e9371e3e62ef71668b72a5eed70de111ed3659e
Status: Downloaded newer image for docker/compose:1.29.2
docker-compose version 1.29.2, build 5becea4
docker-py version: 5.0.0
CPython version: 3.7.10
OpenSSL version: OpenSSL 1.1.1k 25 Mar 2021
ついでにdocker-composeをaliasに登録しておきます。
z80@cos-tt-rss ~ $ echo alias docker-compose="'"'docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
-v "$PWD:$PWD" \
-w="$PWD" \
docker/compose:1.29.2'"'" >> ~/.bashrc
z80@cos-tt-rss ~ $ source ~/.bashrc
Tiny Tiny RSSのインストールと設定
Installation Guideに従って、ユーザにお勧めのstaticでインストールしてみます。
z80@cos-tt-rss ~ $ git clone https://git.tt-rss.org/fox/ttrss-docker-compose.git ttrss-docker
Cloning into 'ttrss-docker'...
remote: Enumerating objects: 1164, done.
remote: Counting objects: 100% (1164/1164), done.
remote: Compressing objects: 100% (707/707), done.
remote: Total 1164 (delta 746), reused 726 (delta 450)
Receiving objects: 100% (1164/1164), 135.10 KiB | 408.00 KiB/s, done.
Resolving deltas: 100% (746/746), done.
z80@cos-tt-rss ~ $ cd ttrss-docker/
z80@cos-tt-rss ~/ttrss-docker $ git checkout static-dockerhub
Branch 'static-dockerhub' set up to track remote branch 'static-dockerhub' from 'origin'.
Switched to a new branch 'static-dockerhub'
設定ファイルを編集します。Global configurationの設定項目も.envファイルで設定できるので、必要に応じて追加します。
z80@cos-tt-rss ~/ttrss-docker $ cp .env-dist .env
z80@cos-tt-rss ~/ttrss-docker $ vi .env
...
TTRSS_SELF_URL_PATH=http://z80.example.com/tt-rss
...
TTRSS_DAEMON_SLEEP_INTERVAL=600
...
HTTP_PORT=80
フィードをアップデートするupdaterは、デフォルトでは2分おきにDBをチェックしてフィードのアップデートを行うようになってます(毎回全部ではなく、フィードのアップデートが必要かどうかチェックして、必要な分だけ)。しかし、個人で使ってる分にはそんなに頻繁に走らせる必要はないので、TTRSS_DAEMON_SLEEP_INTERVAL
を追加して間隔を適当に調整しておきます。
docker-composeで起動します。
z80@cos-tt-rss ~/ttrss-docker $ docker-compose pull
Pulling db ...
Pulling app ...
Pulling backups ...
Pulling updater ...
Pulling web-nginx ...
...
Pulling db ... done
Pulling web-nginx ... done
Pulling app ... done
Pulling updater ... done
Pulling backups ... done
z80@cos-tt-rss ~/ttrss-docker $ docker-compose up -d
Creating network "ttrss-docker_default" with the default driver
Creating volume "ttrss-docker_db" with default driver
Creating volume "ttrss-docker_app" with default driver
Creating volume "ttrss-docker_certs" with default driver
Creating volume "ttrss-docker_backups" with default driver
Creating ttrss-docker_db_1 ...
Creating ttrss-docker_db_1 ... done
Creating ttrss-docker_backups_1 ...
Creating ttrss-docker_app_1 ...
Creating ttrss-docker_backups_1 ... done
Creating ttrss-docker_app_1 ... done
Creating ttrss-docker_updater_1 ...
Creating ttrss-docker_web-nginx_1 ...
Creating ttrss-docker_updater_1 ... done
Creating ttrss-docker_web-nginx_1 ... done
ブラウザで http://z80.example.com/tt-rss/ にアクセスして、adminユーザのパスワード(デフォルトはpassword)を変更しておきます。
Fever API pluginのインストールと設定
Tiny Tiny RSS Fever API PluginのInstallationに従ってインストールします。
まずはTiny Tiny RSSのpluginsディレクトリを確認します。
z80@cos-tt-rss ~ $ docker volume ls
DRIVER VOLUME NAME
local ttrss-docker_app
local ttrss-docker_backups
local ttrss-docker_certs
local ttrss-docker_db
z80@cos-tt-rss ~ $ docker volume inspect ttrss-docker_app
[
{
"CreatedAt": "2021-10-17T22:33:02Z",
"Driver": "local",
"Labels": {
"com.docker.compose.project": "ttrss-docker",
"com.docker.compose.version": "1.29.2",
"com.docker.compose.volume": "app"
},
"Mountpoint": "/var/lib/docker/volumes/ttrss-docker_app/_data",
"Name": "ttrss-docker_app",
"Options": null,
"Scope": "local"
}
]
z80@cos-tt-rss ~ $ ls /var/lib/docker/volumes/ttrss-docker_app/_data
index.php tt-rss
z80@cos-tt-rss ~ $ ls /var/lib/docker/volumes/ttrss-docker_app/_data/tt-rss
CONTRIBUTING.md backend.php composer.lock gulpfile.js js lock plugins schema themes utils
COPYING cache config.php images jsconfig.json messages.pot plugins.local sql themes.local vendor
README.md classes config.php-dist include lib package.json prefs.php templates update.php
api composer.json feed-icons index.php locale phpstan.neon public.php templates.local update_daemon2.php
z80@cos-tt-rss ~ $ ls /var/lib/docker/volumes/ttrss-docker_app/_data/tt-rss/plugins.local/
index.html nginx_xaccel
Fever API pluginのファイルをTiny Tiny RSSのpluginsディレクトリにコピーします。
z80@cos-tt-rss ~ $ git clone https://github.com/DigitalDJ/tinytinyrss-fever-plugin fever
Cloning into 'fever'...
remote: Enumerating objects: 344, done.
remote: Counting objects: 100% (35/35), done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 344 (delta 13), reused 15 (delta 5), pack-reused 309
Receiving objects: 100% (344/344), 109.98 KiB | 853.00 KiB/s, done.
Resolving deltas: 100% (139/139), done.
z80@cos-tt-rss ~ $ sudo mv fever /var/lib/docker/volumes/ttrss-docker_app/_data/tt-rss/plugins.local/
z80@cos-tt-rss ~ $ cd /var/lib/docker/volumes/ttrss-docker_app/_data/tt-rss/plugins.local/
z80@cos-tt-rss /var/lib/docker/volumes/ttrss-docker_app/_data/tt-rss/plugins.local $ ls -l
total 8
drwxr-xr-x 2 z80 z80 4096 Oct 17 15:45 fever
-rw-r--r-- 1 chronos chronos 0 Oct 11 04:00 index.html
drwxr-xr-x 4 chronos chronos 4096 Oct 11 16:53 nginx_xaccel
z80@cos-tt-rss /var/lib/docker/volumes/ttrss-docker_app/_data/tt-rss/plugins.local $ sudo chown -R chronos:chronos fever
z80@cos-tt-rss /var/lib/docker/volumes/ttrss-docker_app/_data/tt-rss/plugins.local $ ls -l
total 8
drwxr-xr-x 2 chronos chronos 4096 Oct 17 15:45 fever
-rw-r--r-- 1 chronos chronos 0 Oct 11 04:00 index.html
drwxr-xr-x 4 chronos chronos 4096 Oct 11 16:53 nginx_xaccel
あとは、各ユーザのPreferences→PluginsのところでFever API pluginを有効にしてから、Preferences→Fever Emulationのところでパスワードを設定しておきます。
Dockerイメージの更新
z80@cos-tt-rss ~/ttrss-docker $ docker-compose down
...
z80@cos-tt-rss ~/ttrss-docker $ docker-compose pull
...
z80@cos-tt-rss ~/ttrss-docker $ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
cthulhoo/ttrss-web-nginx latest b5a08f23b261 40 hours ago 22.3MB
cthulhoo/ttrss-fpm-pgsql-static latest 22d112067a88 40 hours ago 133MB
cthulhoo/ttrss-web-nginx <none> eda29dacbf79 6 days ago 22.3MB
cthulhoo/ttrss-fpm-pgsql-static <none> 1865276c9590 6 days ago 133MB
postgres 12-alpine 3627b2778444 2 weeks ago 190MB
docker/compose 1.29.2 32d8a4638cd8 5 months ago 76.2MB
gcr.io/stackdriver-agents/stackdriver-logging-agent 1.8.4 e6b23af25854 11 months ago 226MB
z80@cos-tt-rss ~/ttrss-docker $ docker-compose up -d
Creating network "ttrss-docker_default" with the default driver
Creating ttrss-docker_db_1 ...
Creating ttrss-docker_db_1 ... done
Creating ttrss-docker_app_1 ...
Creating ttrss-docker_backups_1 ...
Creating ttrss-docker_app_1 ... done
Creating ttrss-docker_backups_1 ... done
Creating ttrss-docker_web-nginx_1 ...
Creating ttrss-docker_updater_1 ...
Creating ttrss-docker_updater_1 ... done
Creating ttrss-docker_web-nginx_1 ... done