From b6c92a7a8d95525e38f52e0b65a429ace8963009 Mon Sep 17 00:00:00 2001 From: kirby Date: Thu, 22 May 2025 15:39:00 +0200 Subject: [PATCH] adding filebrowser role --- ansible/roles/filebrowser/defaults/main.yml | 10 +++ .../roles/filebrowser/files/logrotate.conf | 10 +++ ansible/roles/filebrowser/files/rsyslog.conf | 2 + ansible/roles/filebrowser/handlers/main.yml | 10 +++ ansible/roles/filebrowser/tasks/main.yml | 89 +++++++++++++++++++ .../templates/filebrowser.service.j2 | 17 ++++ .../filebrowser/templates/settings.json.j2 | 8 ++ 7 files changed, 146 insertions(+) create mode 100644 ansible/roles/filebrowser/defaults/main.yml create mode 100644 ansible/roles/filebrowser/files/logrotate.conf create mode 100644 ansible/roles/filebrowser/files/rsyslog.conf create mode 100644 ansible/roles/filebrowser/handlers/main.yml create mode 100644 ansible/roles/filebrowser/tasks/main.yml create mode 100644 ansible/roles/filebrowser/templates/filebrowser.service.j2 create mode 100644 ansible/roles/filebrowser/templates/settings.json.j2 diff --git a/ansible/roles/filebrowser/defaults/main.yml b/ansible/roles/filebrowser/defaults/main.yml new file mode 100644 index 0000000..8bc95fe --- /dev/null +++ b/ansible/roles/filebrowser/defaults/main.yml @@ -0,0 +1,10 @@ +--- + +fb_version: "2.32.0" +fb_user: "admin" +fb_group: "admin" +fb_port: "8080" +fb_address: "0.0.0.0" +fb_log_dir: "/var/log/filebrowser" +fb_config_dir: "/etc/filebrowser" +fb_root: "/nas/{{ env_long }}" diff --git a/ansible/roles/filebrowser/files/logrotate.conf b/ansible/roles/filebrowser/files/logrotate.conf new file mode 100644 index 0000000..f039209 --- /dev/null +++ b/ansible/roles/filebrowser/files/logrotate.conf @@ -0,0 +1,10 @@ +/var/log/filebrowser/filebrowser.log +{ + rotate 7 + daily + missingok + dateext + copytruncate + notifempty + compress +} diff --git a/ansible/roles/filebrowser/files/rsyslog.conf b/ansible/roles/filebrowser/files/rsyslog.conf new file mode 100644 index 0000000..18d2d0e --- /dev/null +++ b/ansible/roles/filebrowser/files/rsyslog.conf @@ -0,0 +1,2 @@ +if $programname == 'filebrowser' then /var/log/filebrowser/filebrowser.log +&stop diff --git a/ansible/roles/filebrowser/handlers/main.yml b/ansible/roles/filebrowser/handlers/main.yml new file mode 100644 index 0000000..7bf7446 --- /dev/null +++ b/ansible/roles/filebrowser/handlers/main.yml @@ -0,0 +1,10 @@ +--- + +- name: Daemon reload + ansible.builtin.systemd_service: + daemon_reload: true + +- name: Restart + ansible.builtin.systemd_service: + name: filebrowser.service + state: restarted diff --git a/ansible/roles/filebrowser/tasks/main.yml b/ansible/roles/filebrowser/tasks/main.yml new file mode 100644 index 0000000..89438f9 --- /dev/null +++ b/ansible/roles/filebrowser/tasks/main.yml @@ -0,0 +1,89 @@ +--- + +- name: Create download folder + ansible.builtin.file: + path: "/tmp/filebrowser" + state: directory + +- name: Download Filebrowser binary from github + ansible.builtin.unarchive: + src: "https://github.com/filebrowser/filebrowser/releases/download/v{{ fb_version }}/linux-amd64-filebrowser.tar.gz" + dest: "/tmp/filebrowser" + remote_src: true + +- name: Moving filebrowser binary to /usr/local/bin + ansible.builtin.copy: + src: /tmp/filebrowser/filebrowser + dest: /usr/local/bin/filebrowser + owner: root + group: root + mode: 0755 + remote_src: true + +- name: Create configuration folder + ansible.builtin.file: + path: "{{ fb_config_dir }}" + owner: "{{ fb_user }}" + group: "{{ fb_group }}" + mode: 0755 + state: directory + +- name: Deploying configuration file + ansible.builtin.template: + src: "settings.json.j2" + dest: "{{ fb_config_dir }}/settings.json" + owner: "{{ fb_user }}" + group: "{{ fb_group }}" + mode: 0644 + notify: Restart + +- name: Deploying service file + ansible.builtin.template: + src: "filebrowser.service.j2" + dest: "/lib/systemd/system/filebrowser.service" + owner: "root" + group: "root" + mode: 0644 + notify: + - Daemon reload + +- name: Running handlers for daemon reload + meta: flush_handlers + +- name: Enabling filebrowser service + ansible.builtin.systemd: + name: filebrowser.service + state: started + enabled: true + +- name: Create log folder + ansible.builtin.file: + path: "{{ fb_log_dir }}" + owner: root + group: adm + mode: 0755 + state: directory + +- name: Deploy rsyslog config + ansible.builtin.copy: + src: rsyslog.conf + dest: /etc/rsyslog.d/filebrowser.conf + owner: root + group: root + mode: 0644 + +- name: Deploy logrotate config + ansible.builtin.copy: + src: logrotate.conf + dest: /etc/logrotate.d/filebrowser + owner: root + group: root + mode: 0644 + +- name: Create custom branding folder + ansible.builtin.file: + path: "/etc/filebrowser/branding/img/icons" + owner: "{{ fb_user }}" + group: "{{ fb_group }}" + mode: 0755 + state: directory diff --git a/ansible/roles/filebrowser/templates/filebrowser.service.j2 b/ansible/roles/filebrowser/templates/filebrowser.service.j2 new file mode 100644 index 0000000..7777312 --- /dev/null +++ b/ansible/roles/filebrowser/templates/filebrowser.service.j2 @@ -0,0 +1,17 @@ +[Unit] +Description=Filebrowser +Documentation=https://filebrowser.org +Wants=network-online.target +After=network-online.target + +[Service] +Type=simple +User={{ fb_user }} +Group={{ fb_group }} +ExecReload=/bin/kill -HUP $MAINPID +ExecStart=/usr/local/bin/filebrowser --config {{ fb_config_dir }}/settings.json +SyslogIdentifier=filebrowser +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/ansible/roles/filebrowser/templates/settings.json.j2 b/ansible/roles/filebrowser/templates/settings.json.j2 new file mode 100644 index 0000000..cbacede --- /dev/null +++ b/ansible/roles/filebrowser/templates/settings.json.j2 @@ -0,0 +1,8 @@ +{ + "port": {{ fb_port }}, + "baseURL": "", + "address": "{{ fb_address }}", + "log": "{{ fb_log_dir }}/filebrowser.log", + "database": "{{ fb_config_dir }}/filebrowser.db", + "root": "{{ fb_root }}" +}