diff --git a/group_vars/ruby/vars.yml b/group_vars/ruby/vars.yml index f1a5602..6db5016 100644 --- a/group_vars/ruby/vars.yml +++ b/group_vars/ruby/vars.yml @@ -4,3 +4,6 @@ elements_uuid: '5D19-E5D1' monica_app_key: "{{ vault_monica_app_key }}" monica_hash_salt: "{{ vault_monica_hash_salt }}" monica_mariadb_root_pass: "{{ vault_monica_mariadb_root_pass }}" + +miniflux_admin: "{{ vault_miniflux_admin }}" +miniflux_admin_pass: "{{ vault_miniflux_admin_pass }}" diff --git a/group_vars/ruby/vault.yml b/group_vars/ruby/vault.yml index f4ba0c3..fa11502 100644 --- a/group_vars/ruby/vault.yml +++ b/group_vars/ruby/vault.yml @@ -1,14 +1,19 @@ $ANSIBLE_VAULT;1.1;AES256 -66333462323334613232666338303230343263613330363538653765656466353032313330663435 -3561393631386465316261353633663234383133343439380a393063326132656630623961656365 -63353866313961333233333837666438373764373534616161333565323831316665393230633364 -3134353339636637340a633561316162656237386261373432373337373739623239643131633636 -34346162633336336162613639303435623936356563333664323237626466393865623536353437 -63666661366532666637643433336233323138633130353331626364643334616636636131373735 -31393533313436343732633761656261306434363165323161383034333166353737623138343364 -66346562653266393665336339343466333635396532613937396539306335396566313466303662 -62356262653835653335303566393035366431636439323664356433303633666563333136623861 -39396464393631613865326437336231353136653366383937306138633432373062626666623561 -64343831376264616661393030366163663666383035663633346232663233346537353337356436 -62333738316633613030376664373136353031653033356334383963373461626133386139376165 -3938 +34653966333139353132363561373666373561306561343965353162393333363465633362336336 +3161613435666463653536373363393939663431316233390a666337656238653732623839383161 +66653934663538336235623663356333316432616361643930356531353734376531626135653565 +3334626639396631320a613039303962373863393234336435353937383430343461383139353838 +63343662626630616133396333633066386537316562373035363165643033643433323737323136 +31316239653863363438343733373630396333633432666436343130636235363734626232363136 +63383133616562343162653335396564623065323936646235626430363539336630373665373133 +64613038393563333462323833393664363839613435666166626666366366383732613562666635 +37626436306663333762636331303737383935643934626533366438393632386335383438313837 +34616330396333646531316334636236393164303136613665666665326166376434616662636463 +30343433663764383734396338346330343632376461366665386662383962323661613138663833 +38316137353036373266343932613261353432653339626361616265313538323139646436633235 +64613964323662383737643662633763616566386266646365633764376430633263356531343830 +35373436643732313338336462306532326366643734666332313431396363363630313738383039 +33626363333865346666643735623638366539653663363365383733386462386661323438613561 +36343236643231346263306334333161623165386666363934633338653161643165306139346632 +31363231393832663661303465643065363039363866383237303662383338363262373735663761 +3332363437313435323466313932313738386164663966613330 diff --git a/roles/miniflux-web/templates/miniflux.Caddyfile.j2 b/roles/miniflux-web/templates/miniflux.Caddyfile.j2 index 45f0583..ec1f840 100644 --- a/roles/miniflux-web/templates/miniflux.Caddyfile.j2 +++ b/roles/miniflux-web/templates/miniflux.Caddyfile.j2 @@ -1,3 +1,3 @@ nws.roosens.me { - reverse_proxy {{ groups['miniflux'][0] }}:8080 + reverse_proxy {{ hostvars[groups['miniflux'][0]].static_ip }}:8002 } diff --git a/roles/miniflux/files/miniflux.backup.sh b/roles/miniflux/files/miniflux.backup.sh new file mode 100644 index 0000000..fada9cb --- /dev/null +++ b/roles/miniflux/files/miniflux.backup.sh @@ -0,0 +1,5 @@ +cd /etc/miniflux + +/usr/bin/docker compose exec -T db pg_dump -U miniflux miniflux | + /usr/bin/gzip --rsyncable | + /usr/local/bin/restic backup --stdin --stdin-filename miniflux-postgres.sql.gz diff --git a/roles/miniflux/tasks/main.yml b/roles/miniflux/tasks/main.yml new file mode 100644 index 0000000..04ade27 --- /dev/null +++ b/roles/miniflux/tasks/main.yml @@ -0,0 +1,43 @@ +--- +- name: Ensure data directory is present + ansible.builtin.file: + path: '/mnt/data1/miniflux' + state: directory + mode: '0755' + owner: 'root' + group: 'root' + +- name: Ensure data subvolumes are present + community.general.btrfs_subvolume: + name: '/miniflux/{{ item }}' + with_items: + - 'postgres' + +- name: Ensure configuration directory is present + file: + path: '/etc/miniflux' + state: directory + mode: '0755' + +- name: Ensure compose file is present + template: + src: 'compose.yml.j2' + dest: '/etc/miniflux/compose.yml' + mode: '0644' + owner: 'root' + group: 'root' + register: res + +- name: Ensure stack is deployed + ansible.builtin.shell: + chdir: '/etc/miniflux' + cmd: 'docker compose up -d --remove-orphans' + when: 'res.changed' + +- name: Ensure backup script is present + ansible.builtin.copy: + src: 'miniflux.backup.sh' + dest: '/etc/backups/miniflux.backup.sh' + owner: 'root' + group: 'root' + mode: '0644' diff --git a/roles/miniflux/templates/compose.yml.j2 b/roles/miniflux/templates/compose.yml.j2 new file mode 100644 index 0000000..4f8f3db --- /dev/null +++ b/roles/miniflux/templates/compose.yml.j2 @@ -0,0 +1,46 @@ +# vim: ft=yaml +version: '3' + +services: + app: + image: 'miniflux/miniflux:2.0.51' + restart: 'always' + + depends_on: + db: + condition: service_healthy + + environment: + - DATABASE_URL=postgres://miniflux:miniflux@db/miniflux?sslmode=disable + - RUN_MIGRATIONS=1 + - CREATE_ADMIN=1 + - ADMIN_USERNAME={{ miniflux_admin }} + - ADMIN_PASSWORD={{ miniflux_admin_pass }} + + # Don't stress the system too much + - WORKER_POOL_SIZE=1 + - BASE_URL=https://nws.roosens.me + + # Default scheduling settings should be good + + # I'm a hoarder + - CLEANUP_ARCHIVE_UNREAD_DAYS=-1 + - CLEANUP_ARCHIVE_READ_DAYS=-1 + ports: + - "8002:8080" + + db: + image: 'postgres:16.1-alpine' + restart: 'always' + + healthcheck: + test: ["CMD", "pg_isready", "-U", "miniflux"] + interval: 10s + start_period: 30s + + environment: + - POSTGRES_USER=miniflux + - POSTGRES_PASSWORD=miniflux + - POSTGRES_DB=miniflux + volumes: + - /mnt/data1/miniflux/postgres:/var/lib/postgresql/data diff --git a/ruby.yml b/ruby.yml index 2439894..36d1e39 100644 --- a/ruby.yml +++ b/ruby.yml @@ -32,3 +32,9 @@ roles: - monica tags: monica + +- hosts: ruby + become: yes + roles: + - miniflux + tags: miniflux