セルフホスト型RSSリーダー「Tiny Tiny RSS」を導入してみた。

私は、Feedlyだけで生きていけると思っていた人間です。

しかし、どうでしょう？

**Feedlyがある日突然、サービス終了してしまって、残された私たちは、別の代替サービスのRSSリーダーサービスを性差がなくてはいけない日が来るかもしれません！！**


そうしたら夜も眠れなくなり、不眠になり、大変苦しい時代をいきることとなるのではないのでしょうか？

私は提案したい。そんな人生を歩むぐらいなら第二や第三の選択肢を持つことを！


---

ということですので、

そんなことになる前に、別の方法を探してみました。

その名も、プラグインやテーマがカスタマいでいけいけな「Tiny Tiny RSS」です。

他にも候補はありましたが、カスタマイズと聞くとエンジニアの血が騒ぎませんか？（いやそんなことないって？）

とりあえず、試しにローカルに入れてみることにします。

## 実装後の見た目（カスタマイズできできます）


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3304752/2bedd2e8-ef63-4251-a445-29ff3a0a94ae.png)

説明もいらないので、見た目を省くとこんな感じになります。

後若干。CSSも調整しています。

## ローカルに実装方法

それでは、実際に入れてみましょう。

###　必須環境

- 最新のウェブブラウザ。これは一般的に最近のChromeまたは互換性のあるもの
- Dockerが動作するサーバー（VDSまたは物理）

だそうです。頑張って用意しましょう。

### 実装手順


#### 1.公式サイトを崇める

https://tt-rss.org/wiki/InstallationNotes/

やはり公式サイトは最強ですね。

ということで英語を翻訳してなんとなく概要をつかみます。

#### ファイルを作成する

```.env
# Put any local modifications here.

# Run FPM under this UID/GID.
# OWNER_UID=1000
# OWNER_GID=1000

# FPM settings.
#PHP_WORKER_MAX_CHILDREN=5
#PHP_WORKER_MEMORY_LIMIT=256M

# ADMIN_USER_* settings are applied on every startup.

# Set admin user password to this value. If not set, random password
# will be generated on startup, look for it in the 'app' container logs.
ADMIN_USER_PASS=password #強力なパスワードを設定してください。ここを設定しないとランダムになります。

# Sets admin user access level to this value. Valid values:
# -2 - forbidden to login
# -1 - readonly
#  0 - default user
# 10 - admin
ADMIN_USER_ACCESS_LEVEL=10 # 個々のコメントを外しておく

# Auto create another user (in addition to built-in admin) unless it already exists.
#AUTO_CREATE_USER=
#AUTO_CREATE_USER_PASS=
#AUTO_CREATE_USER_ACCESS_LEVEL=0

# Default database credentials.
TTRSS_DB_USER=postgres
TTRSS_DB_NAME=postgres
TTRSS_DB_PASS=password

# You can customize other config.php defines by setting overrides here.
# See tt-rss/.docker/app/Dockerfile for a complete list.

# You probably shouldn't disable auth_internal unless you know what you're doing.
# TTRSS_PLUGINS=auth_internal,auth_remote
# TTRSS_SINGLE_USER_MODE=true
# TTRSS_SESSION_COOKIE_LIFETIME=2592000
# TTRSS_FORCE_ARTICLE_PURGE=30
# ...

# Bind exposed port to 127.0.0.1 to run behind reverse proxy on the same host.
# If you plan to expose the container, remove "127.0.0.1:".
HTTP_PORT=127.0.0.1:8280
#HTTP_PORT=8280
```

```docker-compose.yml
version: "3"

services:
  # see FAQ entry below if upgrading from a different PostgreSQL major version (e.g. 12 to 15):
  # https://tt-rss.org/wiki/InstallationNotes/#i-got-the-updated-compose-file-above-and-now-my-database-keeps-restarting
  db:
    image: postgres:15-alpine
    restart: unless-stopped
    env_file:
      - .env
    environment:
      - POSTGRES_USER=${TTRSS_DB_USER}
      - POSTGRES_PASSWORD=${TTRSS_DB_PASS}
      - POSTGRES_DB=${TTRSS_DB_NAME}
    volumes:
      - db:/var/lib/postgresql/data

  app:
    image: cthulhoo/ttrss-fpm-pgsql-static:latest
    restart: unless-stopped
    env_file:
      - .env
    volumes:
      - ./opt/tt-rss:/var/www/html
      - ./config.d:/opt/tt-rss/config.d:ro
    depends_on:
      - db

  #  optional, makes weekly backups of your install
  #  backups:
  #    image: cthulhoo/ttrss-fpm-pgsql-static:latest
  #    restart: unless-stopped
  #    env_file:
  #      - .env
  #    volumes:
  #      - backups:/backups
  #      - app:/var/www/html
  #    depends_on:
  #      - db
  #    command: /opt/tt-rss/dcron.sh -f

  updater:
    image: cthulhoo/ttrss-fpm-pgsql-static:latest
    restart: unless-stopped
    env_file:
      - .env
    volumes:
      - ./opt/tt-rss:/var/www/html
      - ./config.d:/opt/tt-rss/config.d:ro
    depends_on:
      - app
    command: /opt/tt-rss/updater.sh

  web-nginx:
    image: cthulhoo/ttrss-web-nginx:latest
    restart: unless-stopped
    env_file:
      - .env
    ports:
      - ${HTTP_PORT}:80
    volumes:
      - app:/var/www/html:ro
    depends_on:
      - app

volumes:
  db:
  app:
  backups:
```

私の場合は共有フォルダを設定しているので、`/opt/tt-rss/`を共有フォルダに設定しています。事前に作成しておく必要があります。

必要がなければ、公式サイトのままのものを使用すればOK。



##

`docker compose up -d`を叩いて

```
http://localhost:8280
```

を表示。

ログイン画面で、



| ユーザー名 | パスワード                     |
| ----- | ------------------------- |
| admin | ADMIN_USER_PASSで指定したパスワード |

を入力すれば、ログインできました。


ほぼ、公式じゃんとなりますが、なぜか、共有フォルダの設定がうまくいかなくて、テーマやプラグインが入れられなくて詰まっていたんですよね。


## 個人的に、Readeckと相性がいい

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3304752/ee43d1a9-a905-4ae9-9aba-9c63422a2e0e.png)

ここで気に入った記事を読んだら、↓Readeckに登録して

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3304752/a2e4605a-d720-4299-a3fb-71e1a229b1b5.png)

詳細を後で読む。

後は、NotionやObsidianなどのメモツールなどを使って自分の言葉のままにデータを残しておくというのが私としては使い勝手が良いです。

ちなみに、Readeckの導入方法も書いたので気になる方はこちらも。

https://qiita.com/naomina121/items/b193d3425fdb47f5d037