diff --git a/README.md b/README.md index 02b73588..de40f168 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,7 @@ Ansible config and a bunch of Docker containers. * [Duplicati](https://www.duplicati.com/) - for backing up your stuff * [Emby](https://emby.media/) - Media streaming and management * [Firefly III](https://firefly-iii.org/) - Free and open source personal finance manager +* [Fresh RSS](https://freshrss.org/) - Self-hosted RSS feed aggregator like Leed or Kriss Feed * [get_iplayer](https://github.com/get-iplayer/get_iplayer) - download programmes from BBC iplayer * [Gitea](https://gitea.io/en-us/) - Simple self-hosted GitHub clone * [GitLab](https://about.gitlab.com/features/) - Self-hosted GitHub clone of the highest order diff --git a/docs/applications/freshrss.md b/docs/applications/freshrss.md new file mode 100644 index 00000000..09e378f5 --- /dev/null +++ b/docs/applications/freshrss.md @@ -0,0 +1,22 @@ + +# FreshRSS + +Homepage: [https://freshrss.org/](https://freshrss.org/) + +FreshRSS is a self-hosted RSS feed aggregator like Leed or Kriss Feed. + +It is lightweight, easy to work with, powerful, and customizable. + +It is a multi-user application with an anonymous reading mode. It supports custom tags. There is an API for (mobile) clients, and a Command-Line Interface. + +Thanks to the WebSub standard (formerly PubSubHubbub), FreshRSS is able to receive instant push notifications from compatible sources, such as Mastodon, Friendica, WordPress, Blogger, FeedBurner, etc. + +FreshRSS natively supports basic Web scraping, based on XPath, for Web sites not providing any RSS / Atom feed. + +Finally, it supports extensions for further tuning. + +## Usage + +Set `freshrss_enabled: true` in your `inventories//nas.yml` file. + +The FreshRSS web interface can be found at http://ansible_nas_host_or_ip:8089. diff --git a/docs/configuration/application_ports.md b/docs/configuration/application_ports.md index b88cad60..a0da3a56 100644 --- a/docs/configuration/application_ports.md +++ b/docs/configuration/application_ports.md @@ -20,6 +20,7 @@ By default, applications can be found on the ports listed below. | Emby | 8096 | Bridge | HTTP | | Emby | 8920 | Bridge | HTTPS | | Firefly III | 8066 | Bridge | HTTP | +| Fresh RSS | 8089 | Bridge | HTTP | | get_iplayer | 8182 | Bridge | HTTP | | Gitea | 3001 | Bridge | HTTP | | Gitea | 222 | Bridge | SSH | diff --git a/nas.yml b/nas.yml index 4f4e97ca..4d6f33a8 100644 --- a/nas.yml +++ b/nas.yml @@ -113,6 +113,11 @@ - firefly when: (firefly_enabled | default(False)) + - role: freshrss + tags: + - freshrss + when: (freshrss_enabled | default(False)) + - role: get_iplayer tags: - get_iplayer diff --git a/roles/freshrss/defaults/main.yml b/roles/freshrss/defaults/main.yml new file mode 100644 index 00000000..59ff13ef --- /dev/null +++ b/roles/freshrss/defaults/main.yml @@ -0,0 +1,15 @@ +--- +freshrss_enabled: false +freshrss_available_externally: "false" + +# directories +freshrss_data_directory: "{{ docker_home }}/freshrss" +freshrss_extensions_directory: "{{ docker_home }}/freshrss" + + +# network +freshrss_port: "8089" +freshrss_hostname: "freshrss" + +# specs +freshrss_memory: 1g \ No newline at end of file diff --git a/roles/freshrss/tasks/main.yml b/roles/freshrss/tasks/main.yml new file mode 100644 index 00000000..7587ead9 --- /dev/null +++ b/roles/freshrss/tasks/main.yml @@ -0,0 +1,32 @@ +--- +- name: Create FreshRSS Directories + file: + path: "{{ item }}" + state: directory + # mode: 0755 + with_items: + - "{{ freshrss_data_directory }}/data" + - "{{ freshrss_extensions_directory }}/extensions" + +- name: FreshRSS Docker Container + docker_container: + name: freshrss + image: freshrss/freshrss + pull: true + volumes: + - "{{ freshrss_data_directory }}/data:/var/www/FreshRSS/data:rw" + - "{{ freshrss_extensions_directory }}/extensions:/var/www/FreshRSS/extensions:rw" + ports: + - "{{ freshrss_port }}:80" + env: + TZ: "{{ ansible_nas_timezone }}" + CRON_MIN: "1,31" + restart_policy: unless-stopped + memory: "{{ freshrss_memory }}" + labels: + traefik.enable: "{{ freshrss_available_externally }}" + traefik.http.routers.freshrss.rule: "Host(`{{ freshrss_hostname }}.{{ ansible_nas_domain }}`)" + traefik.http.routers.freshrss.tls.certresolver: "letsencrypt" + traefik.http.routers.freshrss.tls.domains[0].main: "{{ ansible_nas_domain }}" + traefik.http.routers.freshrss.tls.domains[0].sans: "*.{{ ansible_nas_domain }}" + traefik.http.services.freshrss.loadbalancer.server.port: "80"