Compare commits

...

4 Commits

Author SHA1 Message Date
b52faac854 docs: add readme 2025-11-16 15:32:23 +01:00
fb80445c83 feat: add preparation tasks 2025-11-16 15:32:20 +01:00
807c6e1c9b feat: add main task 2025-11-16 15:32:16 +01:00
9e70d15619 feat: add deploy.yml 2025-11-16 15:32:10 +01:00
4 changed files with 112 additions and 0 deletions

33
README.md Normal file
View File

@@ -0,0 +1,33 @@
# ansible-role-freshrss
This role deploys [FreshRSS](https://www.freshrss.org/) to your server(s).
It **does not** deploy php, nor a webserver or a database. However, it does install the dependencies for FreshRSS, including php-sqlite3 in case you want to use a simple SQLite database.
## Example playbook
```yaml
- name: Deploy FreshRSS
hosts: freshrss
become: true
roles:
- freshrss
```
## Example var file
```yaml
freshrss_root_dir: "/var/www"
freshrss_path: "/var/www/rss"
freshrss_version: "1.27.1"
freshrss_refresh_interval: 15 # every 15 minutes
```
## FreshRSS configuration
It's done once deployed, navigate to the address you’ve installed your server to complete the installation from the GUI.
## License
This project is licensed under the GNU General Public License v3.0 or later (GPLv3+). See the [LICENSE](LICENSE) file for details.

53
tasks/deploy.yml Normal file
View File

@@ -0,0 +1,53 @@
---
- name: Check if this is the first run
ansible.builtin.stat:
path: "{{ freshrss_path }}"
register: freshrss_dir
- name: Download FreshRSS
ansible.builtin.get_url:
url: https://github.com/FreshRSS/FreshRSS/archive/refs/tags/{{ freshrss_version }}.tar.gz
dest: "{{ freshrss_root_dir }}/freshrss-{{ freshrss_version }}.tar.gz"
mode: '0644'
when: not freshrss_dir.stat.exists
- name: Uncompress FreshRSS
ansible.builtin.unarchive:
src: "{{ freshrss_root_dir }}/freshrss-{{ freshrss_version }}.tar.gz"
dest: "{{ freshrss_root_dir }}"
remote_src: true
when: not freshrss_dir.stat.exists
- name: Clean archive
ansible.builtin.file:
name: "{{ freshrss_root_dir }}/freshrss-{{ freshrss_version }}.tar.gz"
state: absent
- name: Give ownership to www-data
ansible.builtin.file:
path: "{{ freshrss_root_dir }}/FreshRSS-{{ freshrss_version }}"
owner: www-data
group: www-data
recurse: true
- name: Link the folder to web root on folder
ansible.builtin.file:
src: "{{ freshrss_root_dir }}/FreshRSS-{{ freshrss_version }}"
dest: "{{ freshrss_path }}"
state: link
follow: false
force: true
- name: Give ownership to www-data on link
ansible.builtin.file:
path: "{{ freshrss_path }}"
owner: www-data
group: www-data
follow: false
- name: Setup a cron to refresh feeds
ansible.builtin.cron:
name: update feeds
user: www-data
minute: "*/{{ freshrss_refresh_interval }}"
job: php -f {{ freshrss_path }}/app/actualize_script.php 1>/dev/null 2>&1

6
tasks/main.yml Normal file
View File

@@ -0,0 +1,6 @@
---
- name: Setup requirements
ansible.builtin.include_tasks: preparation.yml
- name: Deploy FreshRSS
ansible.builtin.include_tasks: deploy.yml

20
tasks/preparation.yml Normal file
View File

@@ -0,0 +1,20 @@
---
- name: Install cron for automatic feed refresh
ansible.builtin.apt:
name: cron
state: present
update_cache: true
- name: Install php dependencies
ansible.builtin.apt:
pkg:
- php
- php-curl
- php-gmp
- php-intl
- php-mbstring
- php-sqlite3
- php-xml
- php-zip
state: present
update_cache: true