diff --git a/docs/services/freshrss.md b/docs/services/freshrss.md new file mode 100644 index 0000000..b312205 --- /dev/null +++ b/docs/services/freshrss.md @@ -0,0 +1,39 @@ +# FreshRSS + +[FreshRSS](https://freshrss.org) is a self-hosted RSS and Atom feed aggregator. It is lightweight, easy to work with, powerful, and customizable. + +## Dependencies + +This service requires the following other services: + +- a [Traefik](traefik.md) reverse-proxy server +- an optional [Postgres](postgres.md) database, but FreshRSS will default to [SQLite](https://www.sqlite.org/) if you don't have Postgres enabled. + +## Configuration + +To enable this service, add the following configuration to your `vars.yml` file and re-run the [installation](../installing.md) process: + +```yaml +######################################################################## +# # +# freshrss # +# # +######################################################################## + +freshrss_enabled: true + +freshrss_hostname: mash.example.com +freshrss_path_prefix: /freshrss + +######################################################################## +# # +# /freshrss # +# # +######################################################################## +``` + +## Usage + +After installation, visit the configured path and complete the setup through the wizard. + +Feel free to follow FreshRSS [official documentation](http://freshrss.github.io/FreshRSS/en/). diff --git a/docs/supported-services.md b/docs/supported-services.md index 005cf34..2084ce5 100644 --- a/docs/supported-services.md +++ b/docs/supported-services.md @@ -17,6 +17,7 @@ | [Docker Registry Purger](https://github.com/devture/docker-registry-purger) | A small tool used for purging a private Docker Registry's old tags | [Link](services/docker-registry-purger.md) | | [Echo IP](https://github.com/mpolden/echoip) | A simple service for looking up your IP address | [Link](services/echoip.md) | | [Focalboard](https://www.focalboard.com/) | An open source, self-hosted alternative to [Trello](https://trello.com/), [Notion](https://www.notion.so/), and [Asana](https://asana.com/). | [Link](services/focalboard.md) | +| [FreshRSS](https://freshrss.org/) | RSS and Atom feed aggregator. | [Link](services/freshrss.md) | | [Firezone](https://www.firezone.dev/) | A self-hosted VPN server (based on [WireGuard](https://www.wireguard.com/)) with a Web UI | [Link](services/firezone.md) | | [Funkwhale](https://funkwhale.audio/) | Listen and share music with a selfhosted streaming server.| [Link](services/funkwhale.md) | | [Gitea](https://gitea.io/) | A painless self-hosted [Git](https://git-scm.com/) service. | [Link](services/gitea.md) | diff --git a/group_vars/mash_servers b/group_vars/mash_servers index b28e2de..e491372 100644 --- a/group_vars/mash_servers +++ b/group_vars/mash_servers @@ -164,6 +164,8 @@ devture_systemd_service_manager_services_list_auto: | + ([{'name': (focalboard_identifier + '.service'), 'priority': 2000, 'groups': ['mash', 'focalboard']}] if focalboard_enabled else []) + + ([{'name': (freshrss_identifier + '.service'), 'priority': 2000, 'groups': ['mash', 'freshrss']}] if freshrss_enabled else []) + + ([{'name': (funkwhale_api_identifier + '.service'), 'priority': 2000, 'groups': ['mash', 'funkwhale']}] if funkwhale_enabled else []) + ([{'name': (funkwhale_frontend_identifier + '.service'), 'priority': 2000, 'groups': ['mash', 'funkwhale']}] if funkwhale_enabled else []) @@ -334,6 +336,12 @@ devture_postgres_managed_databases_auto: | 'password': focalboard_database_password, }] if focalboard_enabled and focalboard_database_type == 'postgres' and focalboard_database_hostname == devture_postgres_identifier else []) + + ([{ + 'name': freshrss_database_name, + 'username': freshrss_database_username, + 'password': freshrss_database_password, + }] if freshrss_enabled and freshrss_database_hostname == devture_postgres_identifier else []) + + ([{ 'name': funkwhale_database_name, 'username': funkwhale_database_username, @@ -1120,6 +1128,53 @@ focalboard_container_labels_traefik_tls_certResolver: "{{ devture_traefik_certRe +######################################################################## +# # +# freshrss # +# # +######################################################################## + +freshrss_enabled: false + +freshrss_identifier: "{{ mash_playbook_service_identifier_prefix }}freshrss" + +freshrss_base_path: "{{ mash_playbook_base_path }}/{{ mash_playbook_service_base_directory_name_prefix }}freshrss" + +# freshrss_uid and freshrss_gid are intentionally not being set here. +# FreshRSS can only work with a specific user and group, as hardcoded in the role defaults. +freshrss_uid: "0" +freshrss_gid: "33" + +freshrss_systemd_required_services_list: | + {{ + (['docker.service']) + + + ([devture_postgres_identifier ~ '.service'] if devture_postgres_enabled and freshrss_database_hostname == devture_postgres_identifier else []) + }} + +freshrss_container_additional_networks: | + {{ + ([mash_playbook_reverse_proxyable_services_additional_network] if mash_playbook_reverse_proxyable_services_additional_network else []) + + + ([devture_postgres_container_network] if devture_postgres_enabled and freshrss_database_hostname == devture_postgres_identifier and freshrss_container_network != devture_postgres_container_network else []) + }} + +freshrss_container_labels_traefik_enabled: "{{ mash_playbook_traefik_labels_enabled }}" +freshrss_container_labels_traefik_docker_network: "{{ mash_playbook_reverse_proxyable_services_additional_network }}" +freshrss_container_labels_traefik_entrypoints: "{{ devture_traefik_entrypoint_primary }}" +freshrss_container_labels_traefik_tls_certResolver: "{{ devture_traefik_certResolver_primary }}" + +freshrss_database_hostname: "{{ devture_postgres_connection_hostname if devture_postgres_enabled else '' }}" +freshrss_database_password: "{{ '%s' | format(mash_playbook_generic_secret_key) | password_hash('sha512', 'freshrss.db', rounds=655555) | to_uuid }}" + +######################################################################## +# # +# /freshrss # +# # +######################################################################## + + + ######################################################################## # # # funkwhale # @@ -1442,6 +1497,14 @@ hubsite_service_focalboard_logo_location: "{{ role_path }}/assets/focalboard.png hubsite_service_focalboard_description: "An open source, self-hosted alternative to Trello, Notion, and Asana." hubsite_service_focalboard_priority: 1000 +# FreshRSS +hubsite_service_freshrss_enabled: "{{ freshrss_enabled }}" +hubsite_service_freshrss_name: FreshRSS +hubsite_service_freshrss_url: "https://{{ freshrss_hostname }}{{ freshrss_path_prefix }}" +hubsite_service_freshrss_logo_location: "{{ role_path }}/assets/freshrss.png" +hubsite_service_freshrss_description: "RSS and Atom feed aggregator." +hubsite_service_freshrss_priority: 1000 + # Funkwhale hubsite_service_funkwhale_enabled: "{{ funkwhale_enabled }}" hubsite_service_funkwhale_name: Funkwhale @@ -1601,6 +1664,8 @@ hubsite_service_list_auto: | + ([{'name': hubsite_service_focalboard_name, 'url': hubsite_service_focalboard_url, 'logo_location': hubsite_service_focalboard_logo_location, 'description': hubsite_service_focalboard_description, 'priority': hubsite_service_focalboard_priority}] if hubsite_service_focalboard_enabled else []) + + ([{'name': hubsite_service_freshrss_name, 'url': hubsite_service_freshrss_url, 'logo_location': hubsite_service_freshrss_logo_location, 'description': hubsite_service_freshrss_description, 'priority': hubsite_service_freshrss_priority}] if hubsite_service_freshrss_enabled else []) + + ([{'name': hubsite_service_funkwhale_name, 'url': hubsite_service_funkwhale_url, 'logo_location': hubsite_service_funkwhale_logo_location, 'description': hubsite_service_funkwhale_description, 'priority': hubsite_service_funkwhale_priority}] if hubsite_service_funkwhale_enabled else []) + ([{'name': hubsite_service_gitea_name, 'url': hubsite_service_gitea_url, 'logo_location': hubsite_service_gitea_logo_location, 'description': hubsite_service_gitea_description, 'priority': hubsite_service_gitea_priority}] if hubsite_service_gitea_enabled else []) diff --git a/requirements.yml b/requirements.yml index 19f30ec..43f1275 100644 --- a/requirements.yml +++ b/requirements.yml @@ -75,6 +75,9 @@ - src: git+https://github.com/NeonMinnen/ansible-role-forgejo.git version: v1.20.4-1-1 name: forgejo +- src: git+https://github.com/kinduff/ansible-docker-freshrss.git + version: v2.0.0 + name: freshrss - src: git+https://github.com/mother-of-all-self-hosting/ansible-role-funkwhale.git version: v1.3.0-rc6-0 name: funkwhale diff --git a/setup.yml b/setup.yml index 25e97de..7fecba0 100644 --- a/setup.yml +++ b/setup.yml @@ -83,6 +83,8 @@ - role: galaxy/focalboard + - role: galaxy/freshrss + - role: galaxy/funkwhale - role: galaxy/gitea